jam-TanhTrap2 { ; jam 011002 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the tanh graph, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; tanh origin, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex ztemp = (0,0), complex tempconstant = jc complex ttemp = (0,0) int iter = 0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the tanh center, rotate if appropriate ztemp = (z - center) * exp( flip( rotation)) ; Find point on tanh graph trapped by ztemp tempx = scale * real( ztemp ), tempy = tanh( tempx ) ttemp = tempx + flip( tempy ) ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "TanhTrap 2" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Tanh Origin" default = (-0.5,0) hint = "Where is the tanh graph centered?" endparam param tscale caption = "Tanh Scale" default = 1.0 hint = "How big is the tanh graph?" endparam param rotate caption = "Rotation" default = 30.0 min = -179.9 max = 359.9 hint = "How much should the tanh graph be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of the tanh graph" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-TanhTrap2-J" jconstant = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-TanhTrap2-J { ; jam 011002 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the tanh graph, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; tanh origin, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex ztemp = (0,0), complex tempconstant = jc complex ttemp = (0,0) int iter = 0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the tanh center, rotate if appropriate ztemp = (z - center) * exp( flip( rotation)) ; Find point on tanh graph trapped by ztemp tempx = scale * real( ztemp ), tempy = tanh( tempx ) ttemp = tempx + flip( tempy ) ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "TanhTrap 2 Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Tanh Origin" default = (-0.5,0) hint = "Where is the tanh graph centered?" endparam param tscale caption = "Tanh Scale" default = 1.0 hint = "How big is the tanh graph?" endparam param rotate caption = "Rotation" default = 30.0 min = -179.9 max = 359.9 hint = "How much should the tanh graph be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of the tanh graph" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-TanhTrap2" perturbation = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-CardioidTrap2 { ; jam 011001 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the cardioid, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; cardioid origin, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex ztemp = (0,0), complex tempconstant = jc float zangle = 0.0, complex ttemp = (0,0) int iter = 0, float temp = 0.0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the cardioid center, rotate if appropriate, then find its azimuth ztemp = (z - center) * exp( flip( rotation)) zangle = atan2( ztemp ) ; angle of z with respect to cardioid origin if zangle < 0 zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle temp = scale * ( 1 + cos( zangle )) ; radius to cardioid point in direction of z ttemp = temp * exp( flip( zangle )) ; point on cardioid trapped by z ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "CardioidTrap 2" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Cardioid Origin" default = (0,0) hint = "Where is the cardioid centered?" endparam param tscale caption = "Cardioid Scale" default = 1.0 hint = "How big is the cardioid?" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "How much should the cardioid be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of cardioid" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-CardioidTrap2-J" jconstant = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-CardioidTrap2-J { ; jam 011001 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the cardioid, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; cardioid origin, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex ztemp = (0,0), complex tempconstant = jc float zangle = 0.0, complex ttemp = (0,0) int iter = 0, float temp = 0.0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the cardioid center, rotate if appropriate, then find its azimuth ztemp = (z - center) * exp( flip( rotation)) zangle = atan2( ztemp ) ; angle of z with respect to cardioid origin if zangle < 0 zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle temp = scale * ( 1 + cos( zangle )) ; radius to cardioid point in direction of z ttemp = temp * exp( flip( zangle )) ; point on cardioid trapped by z ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "CardioidTrap 2 Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Cardioid Origin" default = (0,0) hint = "Where is the cardioid centered?" endparam param tscale caption = "Cardioid Scale" default = 1.0 hint = "How big is the cardioid?" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "How much should the cardioid be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of cardioid" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-CardioidTrap2" perturbation = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-CircleTrap2 { ; jam 011001 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the circle, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; circle origin, size complex ztemp = (0,0), complex tempconstant = jc float zangle = 0.0, complex ttemp = (0,0) int iter = 0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the circle center, rotate if appropriate, then find its azimuth ztemp = z - center zangle = atan2( ztemp ) ; angle of z with respect to circle center if zangle < 0 zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle ttemp = scale * exp( flip( zangle )) ; point on circle trapped by z ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "CircleTrap 2" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Circle Origin" default = (0,0) hint = "Where is the circle centered?" endparam param tscale caption = "Circle Radius" default = 1.0 hint = "How big is the circle?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of circle" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-CircleTrap2-J" jconstant = #pixel bail = bail centr = centr tscale = tscale threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-CircleTrap2-J { ; jam 011001 ; A Mandelbrot-type formula is iterated, but if z falls within the trap \ ; threshold of the circle, the coordinates of the trap point are added \ ; to the calculation, rather than the pixel coordinates. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; circle origin, size complex ztemp = (0,0), complex tempconstant = jc float zangle = 0.0, complex ttemp = (0,0) int iter = 0 loop: iter = iter + 1 tempconstant = jc if iter > @skipped ; Center z at the circle center, rotate if appropriate, then find its azimuth ztemp = z - center zangle = atan2( ztemp ) ; angle of z with respect to circle center if zangle < 0 zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle ttemp = scale * exp( flip( zangle )) ; point on circle trapped by z ; Is z near trap? if cabs(ztemp - ttemp) <= @threshold ; yes, it is tempconstant = ttemp endif ; cabs endif ; iter ; Now execute the chosen fractal formula z = ( @zfunc(z))^@zpower + tempconstant bailout: |z| < @bail default: title = "CircleTrap 2 Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param centr caption = "Circle Origin" default = (0,0) hint = "Where is the circle centered?" endparam param tscale caption = "Circle Radius" default = 1.0 hint = "How big is the circle?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of circle" endparam param zpower caption = "Z Exponent" default = (2,0) hint = "This parameter is the power used for the Mandelbrot/Julia iteration" endparam param bail caption = "Bailout Value" default = 100.0 hint = "Value needed to 'escape' to infinity" endparam param skipped caption = "Iterations to Skip" default = 0 hint = "Trapping will not be monitored until after this many normal \ Mandelbrot/Julia iterations" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam func zfunc caption = "Z Function" default = ident() hint = "Optional function applied to z before exponentiation" endfunc switch: type = "jam-CircleTrap2" perturbation = #pixel bail = bail centr = centr tscale = tscale threshold = threshold zpower = zpower skipped = skipped zfunc = zfunc } jam-spliceMan { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified splicing together of the real & imaginary ; parts from Formulas 1 & 2. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 <= 60 if @formula1 <= 30 if @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra else ; @formula1 == 30 tempform1 = cotan( #z ) endif ; formula1-3 else ; 30 < @formula1 <= 60 if @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) else ; @formula1 == 60 tempform1 = #z * cos( #z ) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 90 if @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) else ; @formula1 == 90 tempform1 = sin( #z ) * tan(#z) endif ; formula1-2 else ; 90 < @formula1 <= 120 if @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) else ; @formula1 == 117 tempform1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 <= 60 if @formula2 <= 30 if @formula2 == 3 tempform2 = #z ^ @power2 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra else ; @formula2 == 30 tempform2 = cotan( #z ) endif ; formula2-3 else ; 30 < @formula2 <= 60 if @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) else ; @formula2 == 60 tempform2 = #z * cos( #z ) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 90 if @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) else ; @formula2 == 90 tempform2 = sin( #z ) * tan(#z) endif ; formula2-2 else ; 90 < @formula2 <= 120 if @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) else ; @formula2 == 117 tempform2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 if (@splicemode == 0) || (@splicemode == 4) zextra = real(tempform1) + flip(imag(tempform2)) elseif (@splicemode == 1) || (@splicemode == 5) zextra = imag(tempform1) + flip(real(tempform2)) elseif (@splicemode == 2) || (@splicemode == 6) zextra = real(tempform1) + flip(real(tempform2)) elseif (@splicemode == 3) || (@splicemode == 7) zextra = imag(tempform1) + flip(imag(tempform2)) endif ; @splicemode if @splicemode > 3 zextra = flip(zextra) endif ; @splicemode #z = (1-@blend)*tempform1 + @blend*zextra if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @zblendtrue if @pmode != 1 #z = #z + jc endif ; pmode bailout: |z| < @bail default: title = "SpliceMan" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param splicemode caption = "Splice Mode" enum = "real#1 + imag#2" "imag#1 + real#2" "real#1 + real#2" "imag#1 + imag#2" \ "imag#2 + real#1" "real#2 + imag#1" "real#2 + real#1" "imag#2 + imag#1" default = 0 hint = "This param determines which components of the Formula 1 and Formula 2 \ iterates are combined to form the final #z; the final formula is #z = \ [Formula 1 part] + flip( [Formula 2 part])." endparam param blend caption = "Splice Blend" default = 1.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. At 1.0, final #z is fully spliced; at 0.0, \ no splicing has occurred and #z is the solely determined by Formula 1" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-spliceMan-J" jconstant = #pixel bail = bail splicemode = splicemode blend = blend formula1 = formula1 formula2 = formula2 zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-spliceMan-J { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified splicing together of the real & imaginary ; parts from Formulas 1 & 2. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 <= 60 if @formula1 <= 30 if @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra else ; @formula1 == 30 tempform1 = cotan( #z ) endif ; formula1-3 else ; 30 < @formula1 <= 60 if @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) else ; @formula1 == 60 tempform1 = #z * cos( #z ) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 90 if @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) else ; @formula1 == 90 tempform1 = sin( #z ) * tan(#z) endif ; formula1-2 else ; 90 < @formula1 <= 120 if @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) else ; @formula1 == 117 tempform1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 <= 60 if @formula2 <= 30 if @formula2 == 3 tempform2 = #z ^ @power2 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra else ; @formula2 == 30 tempform2 = cotan( #z ) endif ; formula2-3 else ; 30 < @formula2 <= 60 if @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) else ; @formula2 == 60 tempform2 = #z * cos( #z ) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 90 if @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) else ; @formula2 == 90 tempform2 = sin( #z ) * tan(#z) endif ; formula2-2 else ; 90 < @formula2 <= 120 if @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) else ; @formula2 == 117 tempform2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 if (@splicemode == 0) || (@splicemode == 4) zextra = real(tempform1) + flip(imag(tempform2)) elseif (@splicemode == 1) || (@splicemode == 5) zextra = imag(tempform1) + flip(real(tempform2)) elseif (@splicemode == 2) || (@splicemode == 6) zextra = real(tempform1) + flip(real(tempform2)) elseif (@splicemode == 3) || (@splicemode == 7) zextra = imag(tempform1) + flip(imag(tempform2)) endif ; @splicemode if @splicemode > 3 zextra = flip(zextra) endif ; @splicemode #z = (1-@blend)*tempform1 + @blend*zextra if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @zblendtrue if @pmode != 1 #z = #z + jc endif ; pmode bailout: |z| < @bail default: title = "SpliceMan Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param splicemode caption = "Splice Mode" enum = "real#1 + imag#2" "imag#1 + real#2" "real#1 + real#2" "imag#1 + imag#2" \ "imag#2 + real#1" "real#2 + imag#1" "real#2 + real#1" "imag#2 + imag#1" default = 0 hint = "This param determines which components of the Formula 1 and Formula 2 \ iterates are combined to form the final #z; the final formula is #z = \ [Formula 1 part] + flip( [Formula 2 part])." endparam param blend caption = "Splice Blend" default = 1.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. At 1.0, final #z is fully spliced; at 0.0, \ no splicing has occurred and #z is the solely determined by Formula 1" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-spliceMan" perturbation = #pixel bail = bail splicemode = splicemode blend = blend formula1 = formula1 formula2 = formula2 zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-CardioidMan { ; jam 011012 ; General Mandelbrot/Julia in which selected formula is executed ; then examined for trapping by a user-specified cardioid. ; Whenever trapping occurs, a user-specified action is executed that ; affects subsequent iterations. Trapped point can be transformed ; in a variety of ways before performing the trap action. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; cardioid center, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex zextra = (0,0) ; temp/spare scratch variable complex ztemp = (0,0), float zangle = 0.0 int iter = 0, float temp = 0.0, float value = 0.0, float temp2 = 0.0 int formula = @formula1, int form2 = @formula2 complex coeffa = @coeff1a, complex coeffb = @coeff1b, complex coeffc = @coeff1c complex exponenta = @exponent1a, complex exponentb = @exponent1b, complex exponentc = @exponent1c complex power = @power1 bool swap = FALSE ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iter = iter + 1 if @pmode != 0 #z = #z + jc endif ; pmode ; Execute main formula selection if formula == 0 #z = #z * #z elseif formula == 1 #z = #z * #z * #z elseif formula == 2 zextra = #z * #z #z = zextra * zextra elseif formula <= 40 if formula <= 20 if formula == 3 #z = #z ^ power elseif formula == 4 #z = 1/#z elseif formula == 5 #z = sqrt(#z) elseif formula == 6 #z = 1 / ( #z * #z ) elseif formula == 7 #z = log(#z) elseif formula == 8 #z = exp( #z) elseif formula == 9 #z = #z^#z elseif formula == 10 #z = sin( #z ) elseif formula == 11 #z = cos( #z ) elseif formula == 12 #z = tan( #z ) elseif formula == 13 #z = asin( #z ) elseif formula == 14 #z = acos( #z ) elseif formula == 15 #z = atan( #z ) elseif formula == 16 #z = sinh( #z ) elseif formula == 17 #z = cosh( #z ) elseif formula == 18 #z = tanh( #z ) elseif formula == 19 #z = asinh( #z ) else ; formula == 20 #z = acosh( #z ) endif ; formula-3 else ; 20 < formula <= 40 if formula == 21 #z = atanh( #z ) elseif formula == 22 #z = log( 1/#z ) elseif formula == 23 #z = log( log( #z )) elseif formula == 24 #z = exp( -#z ) elseif formula == 25 #z = exp( 1/#z ) elseif formula == 26 #z = #z^(-#z) elseif formula == 27 zextra = sin( #z ) #z = zextra * zextra elseif formula == 28 zextra = cos( #z ) #z = zextra * zextra elseif formula == 29 zextra = tan( #z ) #z = zextra * zextra elseif formula == 30 #z = cotan( #z ) elseif formula == 31 #z = 1/cos( #z ) elseif formula == 32 #z = 1/sin( #z ) elseif formula == 33 zextra = cotan( #z ) #z = zextra * zextra elseif formula == 34 zextra = 1/cos( #z ) #z = zextra * zextra elseif formula == 35 zextra = 1/sin( #z ) #z = zextra * zextra elseif formula == 36 zextra = #z^(#z) #z = #z^zextra elseif formula == 37 zextra = #z^(#z) #z = 1/( #z^zextra ) elseif formula == 38 #z = log(-#z) elseif formula == 39 #z = 1/log( #z ) else ; formula == 40 #z = #z * log( #z ) endif ; formula-3 endif ; formula-2 elseif formula <= 60 if formula == 41 #z = sin( #z ) / #z elseif formula == 42 #z = cos( #z ) / #z elseif formula == 43 #z = sin( #z ) * cos( #z ) elseif formula == 44 #z = sin( #z^2 ) elseif formula == 45 #z = exp( -1/#z ) elseif formula == 46 #z = #z * exp( #z ) elseif formula == 47 #z = #z * exp( -#z ) elseif formula == 48 #z = #z * exp( 1/#z ) elseif formula == 49 #z = #z * exp( -1/#z ) elseif formula == 50 #z = #z * #z * #z elseif formula == 51 #z = 1 / ( #z * #z * #z ) elseif formula == 52 #z = atan( 1 / #z ) elseif formula == 53 #z = acos( 1 / #z ) elseif formula == 54 #z = asin( 1 / #z ) elseif formula == 55 #z = tan( #z ) / #z elseif formula == 56 #z = cotan( #z ) / #z elseif formula == 57 #z = 1 / ( #z * cos( #z )) elseif formula == 58 #z = 1 / ( #z * sin( #z )) elseif formula == 59 #z = #z * sin( #z ) else ; formula == 60 #z = #z * cos( #z ) endif ; formula-2 else ; 60 < formula <= 77 if formula == 61 #z = #z * tan( #z ) elseif formula == 62 #z = #z * cotan( #z ) elseif formula == 63 #z = #z/cos( #z ) elseif formula == 64 #z = #z/sin( #z ) elseif formula == 65 #z = sin( 1/#z ) elseif formula == 66 #z = cos( 1/#z ) elseif formula == 67 #z = tan( 1/#z ) elseif formula == 68 #z = cotan( 1/#z ) elseif formula == 69 #z = 1/cos( 1/#z ) elseif formula == 70 #z = 1/sin( 1/#z ) elseif formula == 71 #z = cotanh( #z ) elseif formula == 72 #z = 1/cosh( #z ) elseif formula == 73 #z = 1/sinh( #z ) elseif formula == 74 #z = atanh( 1/#z ) elseif formula == 75 #z = acosh( 1/#z ) elseif formula == 76 #z = asinh( 1/#z ) else ; formula == 77 #z = coeffa * #z^exponenta + coeffb * #z^exponentb + coeffc * #z^exponentc endif ; formula-2 endif ; formula-1 if @pmode != 1 #z = #z + jc endif ; pmode if swap == TRUE swap = FALSE formula = @formula1 power = @power1 coeffa = @coeff1a, coeffb = @coeff1b, coeffc = @coeff1b exponenta = @exponent1a, exponentb = @exponent1b, exponentc = @exponent1c endif ; swap ; Now look for trapping if iter > @skipped ; Center z at the cardioid center, rotate if appropriate, then find its azimuth ztemp = (#z - center) * exp( flip( rotation)) zangle = atan2( ztemp ) ; angle of z with respect to cardioid center if zangle < 0 zangle = zangle + twopi endif ; zangle temp = scale * ( 1 + cos( zangle )) ; radius to cardioid point in direction of z ztemp = temp * exp( flip( zangle )) ; point on cardioid trapped by z ; Transmute trap if desired if form2 != 0 form2 = form2 - 1 ; same kludge ; Transmute trap if form2 == 0 ztemp = ztemp * ztemp elseif form2 == 1 ztemp = ztemp * ztemp * ztemp elseif form2 == 2 zextra = ztemp * ztemp ztemp = zextra * zextra elseif form2 <= 40 if form2 <= 20 if form2 == 3 ztemp = ztemp ^ @power2 elseif form2 == 4 ztemp = 1/ztemp elseif form2 == 5 ztemp = sqrt(ztemp) elseif form2 == 6 ztemp = 1 / ( ztemp * ztemp ) elseif form2 == 7 ztemp = log(ztemp) elseif form2 == 8 ztemp = exp( ztemp) elseif form2 == 9 ztemp = ztemp^ztemp elseif form2 == 10 ztemp = sin( ztemp ) elseif form2 == 11 ztemp = cos( ztemp ) elseif form2 == 12 ztemp = tan( ztemp ) elseif form2 == 13 ztemp = asin( ztemp ) elseif form2 == 14 ztemp = acos( ztemp ) elseif form2 == 15 ztemp = atan( ztemp ) elseif form2 == 16 ztemp = sinh( ztemp ) elseif form2 == 17 ztemp = cosh( ztemp ) elseif form2 == 18 ztemp = tanh( ztemp ) elseif form2 == 19 ztemp = asinh( ztemp ) else ; form2 == 20 ztemp = acosh( ztemp ) endif ; form2-3 else ; 20 < form2 <= 40 if form2 == 21 ztemp = atanh( ztemp ) elseif form2 == 22 ztemp = log( 1/ztemp ) elseif form2 == 23 ztemp = log( log( ztemp )) elseif form2 == 24 ztemp = exp( -ztemp ) elseif form2 == 25 ztemp = exp( 1/ztemp ) elseif form2 == 26 ztemp = ztemp^(-ztemp) elseif form2 == 27 zextra = sin( ztemp ) ztemp = zextra * zextra elseif form2 == 28 zextra = cos( ztemp ) ztemp = zextra * zextra elseif form2 == 29 zextra = tan( ztemp ) ztemp = zextra * zextra elseif form2 == 30 ztemp = cotan( ztemp ) elseif form2 == 31 ztemp = 1/cos( ztemp ) elseif form2 == 32 ztemp = 1/sin( ztemp ) elseif form2 == 33 zextra = cotan( ztemp ) ztemp = zextra * zextra elseif form2 == 34 zextra = 1/cos( ztemp ) ztemp = zextra * zextra elseif form2 == 35 zextra = 1/sin( ztemp ) ztemp = zextra * zextra elseif form2 == 36 zextra = ztemp^(ztemp) ztemp = ztemp^zextra elseif form2 == 37 zextra = ztemp^(ztemp) ztemp = 1/( ztemp^zextra ) elseif form2 == 38 ztemp = log(-ztemp) elseif form2 == 39 ztemp = 1/log( ztemp ) else ; form2 == 40 ztemp = ztemp * log( ztemp ) endif ; form2-3 endif ; form2-2 elseif form2 <= 60 if form2 == 41 ztemp = sin( ztemp ) / ztemp elseif form2 == 42 ztemp = cos( ztemp ) / ztemp elseif form2 == 43 ztemp = sin( ztemp ) * cos( ztemp ) elseif form2 == 44 ztemp = sin( ztemp^2 ) elseif form2 == 45 ztemp = exp( -1/ztemp ) elseif form2 == 46 ztemp = ztemp * exp( ztemp ) elseif form2 == 47 ztemp = ztemp * exp( -ztemp ) elseif form2 == 48 ztemp = ztemp * exp( 1/ztemp ) elseif form2 == 49 ztemp = ztemp * exp( -1/ztemp ) elseif form2 == 50 ztemp = ztemp * ztemp * ztemp elseif form2 == 51 ztemp = 1 / ( ztemp * ztemp * ztemp ) elseif form2 == 52 ztemp = atan( 1 / ztemp ) elseif form2 == 53 ztemp = acos( 1 / ztemp ) elseif form2 == 54 ztemp = asin( 1 / ztemp ) elseif form2 == 55 ztemp = tan( ztemp ) / ztemp elseif form2 == 56 ztemp = cotan( ztemp ) / ztemp elseif form2 == 57 ztemp = 1 / ( ztemp * cos( ztemp )) elseif form2 == 58 ztemp = 1 / ( ztemp * sin( ztemp )) elseif form2 == 59 ztemp = ztemp * sin( ztemp ) else ; form2 == 60 ztemp = ztemp * cos( ztemp ) endif ; form2-2 else ; 60 < form2 <= 77 if form2 == 61 ztemp = ztemp * tan( ztemp ) elseif form2 == 62 ztemp = ztemp * cotan( ztemp ) elseif form2 == 63 ztemp = ztemp/cos( ztemp ) elseif form2 == 64 ztemp = ztemp/sin( ztemp ) elseif form2 == 65 ztemp = sin( 1/ztemp ) elseif form2 == 66 ztemp = cos( 1/ztemp ) elseif form2 == 67 ztemp = tan( 1/ztemp ) elseif form2 == 68 ztemp = cotan( 1/ztemp ) elseif form2 == 69 ztemp = 1/cos( 1/ztemp ) elseif form2 == 70 ztemp = 1/sin( 1/ztemp ) elseif form2 == 71 ztemp = cotanh( ztemp ) elseif form2 == 72 ztemp = 1/cosh( ztemp ) elseif form2 == 73 ztemp = 1/sinh( ztemp ) elseif form2 == 74 ztemp = atanh( 1/ztemp ) elseif form2 == 75 ztemp = acosh( 1/ztemp ) elseif form2 == 76 ztemp = asinh( 1/ztemp ) else ; form2 == 77 ztemp = @coeff2a * ztemp^@exponent2a + @coeff2b * ztemp^@exponent2b + @coeff2c * ztemp^@exponent2c endif ; form2-2 endif ; form2-1 endif ; form2-0 ; Is z near trap? value = cabs(#z - ztemp) if value <= @threshold ; yes, it is zextra = ztemp * jc * #z temp = real(zextra)/abs(real(zextra)) ; "random" sign if @taction == 0 ; seed evolve jc = jc + @strength * jc * temp elseif @taction == 1 #z = #z + @strength * #z * temp elseif @taction == 2 temp2 = real(#z) + @strength * real(#z) * temp #z = temp2 + flip(imag(#z)) elseif @taction == 3 temp2 = imag(#z) + @strength * imag(#z) * temp #z = real(#z) + flip(temp2) elseif @taction == 4 temp2 = real(jc) + @strength * real(jc) * temp jc = temp2 + flip(imag(jc)) elseif @taction == 5 temp2 = imag(jc) + @strength * imag(jc) * temp jc = real(jc) + flip(temp2) elseif @taction == 6 if formula == @formula1 formula = @formula3 power = @power3 coeffa = @coeff3a, coeffb = @coeff3b, coeffc = @coeff3b exponenta = @exponent3a, exponentb = @exponent3b, exponentc = @exponent3c else formula = @formula1 power = @power1 coeffa = @coeff1a, coeffb = @coeff1b, coeffc = @coeff1b exponenta = @exponent1a, exponentb = @exponent1b, exponentc = @exponent1c endif ; formula elseif @taction == 7 swap = TRUE formula = @formula3 power = @power3 coeffa = @coeff3a, coeffb = @coeff3b, coeffc = @coeff3b exponenta = @exponent3a, exponentb = @exponent3b, exponentc = @exponent3c endif ; taction endif ; value endif ; iter bailout: |z| < @bail default: title = "Cardioid Man" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" default = 0 hint = "Sets the main fractal formula. \ For 'z^power', use parameter 'Power 1' to set exponent. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param taction caption = "Trap Action" enum = "seed evolve" "z evolve" "zreal evolve" "zimag evolve" "sreal evolve" \ "simag evolve" "toggle formula" "one-shot formula" default = 0 hint = "What happens when a point is within threshold and trapped? 'toggle formula' \ = swapping between 'Formula 1' and 'Toggle Formula' after each trap event; \ 'one-shot' executes 'Toggle Formula' just once per event" endparam param strength caption = "Trap Strength" default = 0.05 hint = "This parameter affects the strength of whatever action is taken as \ a result of parameter 'Trap Action'" endparam param centr caption = "Cardioid Center" default = (0,0) hint = "Where is the cardioid located?" endparam param tscale caption = "Cardioid Scale" default = 0.5 hint = "How big is the cardioid?" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "How much should the cardioid be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of cardioid" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the main fractal formula if parameter \ 'Formula 1' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param formula2 caption = "Trap Transmute" enum = "w" "w^2" "w^3" "w^4" "w^power" "1/w" "sqrt(w)" "1/w^2" "log(w)" "e^w" "w^w" \ "sin(w)" "cos(w)" \ "tan(w)" "asin(w)" "acos(w)" "atan(w)" "sinh(w)" "cosh(w)" "tanh(w)" \ "asinh(w)" "acosh(w)" "atanh(w)" "log(1/w)" "log(log(w))" "e^-w" \ "e^(1/w)" "w^-w" "sin(w)^2" "cos(w)^2" "tan(w)^2" "cot(w)" "sec(w)" \ "csc(w)" "cot(w)^2" "sec(w)^2" "csc(w)^2" "w^w^w" "1/w^w^w" "log(-w)" \ "1/log(w)" "wlog(w)" "sin(w)/w" "cos(w)/w" "sin(w)*cos(w)" "sin(w^2)" \ "e^(-1/w)" "we^w" "we^-w" "we^(1/w)" "we^(-1/w)" "w^3" "1/w^3" \ "acot(w)" "asec(w)" "acsc(w)" "tan(w)/w" "cot(w)/w" "sec(w)/w" \ "csc(w)/w" "wsin(w)" "wcos(w)" "wtan(w)" "wcot(w)" "wsec(w)" "wcsc(w)" \ "sin(1/w)" "cos(1/w)" "tan(1/w)" "cot(1/w)" "sec(1/w)" "csc(1/w)" \ "cotanh(w)" "sech(w)" "cosech(w)" "acoth(w)" "asech(w)" "acosech(w)" \ "3-term polynomial" default = 0 hint = "Formula used to transform cardioid point, w, prior to trap test. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used if parameter \ 'Trap Transmute' is set to 'z^power'" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param formula3 caption = "Toggle Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" default = 0 hint = "Formula toggled in on trapping if 'Trap Action' \ = 'toggle' or 'one-shot' formula. \ For 'z^power', 'Power 3' sets power. For '3-term polynomial' set \ params 'Coeff 3a', 'Exponent 3a', 'Coeff 3b', 'Exponent 3b', 'Coeff 3c', \ 'Exponent 3c'." endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the toggled formula if parameter \ 'Toggle Formula' is set to 'z^power'" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param skipped caption = "Iters to Skip" default = 0 hint = "Enter the number of iterations to skip before monitoring the orbit \ for possible trapping" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-CardioidMan-J" jconstant = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold taction = taction strength = strength formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c formula3 = formula3 power3 = power3 coeff3a = coeff3a coeff3b = coeff3b coeff3c = coeff3c exponent3a = exponent3a exponent3b = exponent3b exponent3c = exponent3c skipped = skipped pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-CardioidMan-J { ; jam 011012 ; General Mandelbrot/Julia in which selected formula is executed ; then examined for trapping by a user-specified cardioid. ; Whenever trapping occurs, a user-specified action is executed that ; affects subsequent iterations. Trapped point can be transformed ; in a variety of ways before performing the trap action. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float twopi = 2.0 * #pi complex center = @centr, float scale = @tscale ; cardioid center, size float rotation = @rotate * #pi / 180 if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; so the routine won't have to negate at each iteration complex zextra = (0,0) ; temp/spare scratch variable complex ztemp = (0,0), float zangle = 0.0 int iter = 0, float temp = 0.0, float value = 0.0, float temp2 = 0.0 int formula = @formula1, int form2 = @formula2 complex coeffa = @coeff1a, complex coeffb = @coeff1b, complex coeffc = @coeff1c complex exponenta = @exponent1a, complex exponentb = @exponent1b, complex exponentc = @exponent1c complex power = @power1 bool swap = FALSE ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iter = iter + 1 if @pmode != 0 #z = #z + jc endif ; pmode ; Execute main formula selection if formula == 0 #z = #z * #z elseif formula == 1 #z = #z * #z * #z elseif formula == 2 zextra = #z * #z #z = zextra * zextra elseif formula <= 40 if formula <= 20 if formula == 3 #z = #z ^ power elseif formula == 4 #z = 1/#z elseif formula == 5 #z = sqrt(#z) elseif formula == 6 #z = 1 / ( #z * #z ) elseif formula == 7 #z = log(#z) elseif formula == 8 #z = exp( #z) elseif formula == 9 #z = #z^#z elseif formula == 10 #z = sin( #z ) elseif formula == 11 #z = cos( #z ) elseif formula == 12 #z = tan( #z ) elseif formula == 13 #z = asin( #z ) elseif formula == 14 #z = acos( #z ) elseif formula == 15 #z = atan( #z ) elseif formula == 16 #z = sinh( #z ) elseif formula == 17 #z = cosh( #z ) elseif formula == 18 #z = tanh( #z ) elseif formula == 19 #z = asinh( #z ) else ; formula == 20 #z = acosh( #z ) endif ; formula-3 else ; 20 < formula <= 40 if formula == 21 #z = atanh( #z ) elseif formula == 22 #z = log( 1/#z ) elseif formula == 23 #z = log( log( #z )) elseif formula == 24 #z = exp( -#z ) elseif formula == 25 #z = exp( 1/#z ) elseif formula == 26 #z = #z^(-#z) elseif formula == 27 zextra = sin( #z ) #z = zextra * zextra elseif formula == 28 zextra = cos( #z ) #z = zextra * zextra elseif formula == 29 zextra = tan( #z ) #z = zextra * zextra elseif formula == 30 #z = cotan( #z ) elseif formula == 31 #z = 1/cos( #z ) elseif formula == 32 #z = 1/sin( #z ) elseif formula == 33 zextra = cotan( #z ) #z = zextra * zextra elseif formula == 34 zextra = 1/cos( #z ) #z = zextra * zextra elseif formula == 35 zextra = 1/sin( #z ) #z = zextra * zextra elseif formula == 36 zextra = #z^(#z) #z = #z^zextra elseif formula == 37 zextra = #z^(#z) #z = 1/( #z^zextra ) elseif formula == 38 #z = log(-#z) elseif formula == 39 #z = 1/log( #z ) else ; formula == 40 #z = #z * log( #z ) endif ; formula-3 endif ; formula-2 elseif formula <= 60 if formula == 41 #z = sin( #z ) / #z elseif formula == 42 #z = cos( #z ) / #z elseif formula == 43 #z = sin( #z ) * cos( #z ) elseif formula == 44 #z = sin( #z^2 ) elseif formula == 45 #z = exp( -1/#z ) elseif formula == 46 #z = #z * exp( #z ) elseif formula == 47 #z = #z * exp( -#z ) elseif formula == 48 #z = #z * exp( 1/#z ) elseif formula == 49 #z = #z * exp( -1/#z ) elseif formula == 50 #z = #z * #z * #z elseif formula == 51 #z = 1 / ( #z * #z * #z ) elseif formula == 52 #z = atan( 1 / #z ) elseif formula == 53 #z = acos( 1 / #z ) elseif formula == 54 #z = asin( 1 / #z ) elseif formula == 55 #z = tan( #z ) / #z elseif formula == 56 #z = cotan( #z ) / #z elseif formula == 57 #z = 1 / ( #z * cos( #z )) elseif formula == 58 #z = 1 / ( #z * sin( #z )) elseif formula == 59 #z = #z * sin( #z ) else ; formula == 60 #z = #z * cos( #z ) endif ; formula-2 else ; 60 < formula <= 77 if formula == 61 #z = #z * tan( #z ) elseif formula == 62 #z = #z * cotan( #z ) elseif formula == 63 #z = #z/cos( #z ) elseif formula == 64 #z = #z/sin( #z ) elseif formula == 65 #z = sin( 1/#z ) elseif formula == 66 #z = cos( 1/#z ) elseif formula == 67 #z = tan( 1/#z ) elseif formula == 68 #z = cotan( 1/#z ) elseif formula == 69 #z = 1/cos( 1/#z ) elseif formula == 70 #z = 1/sin( 1/#z ) elseif formula == 71 #z = cotanh( #z ) elseif formula == 72 #z = 1/cosh( #z ) elseif formula == 73 #z = 1/sinh( #z ) elseif formula == 74 #z = atanh( 1/#z ) elseif formula == 75 #z = acosh( 1/#z ) elseif formula == 76 #z = asinh( 1/#z ) else ; formula == 77 #z = coeffa * #z^exponenta + coeffb * #z^exponentb + coeffc * #z^exponentc endif ; formula-2 endif ; formula-1 if @pmode != 1 #z = #z + jc endif ; pmode if swap == TRUE swap = FALSE formula = @formula1 power = @power1 coeffa = @coeff1a, coeffb = @coeff1b, coeffc = @coeff1b exponenta = @exponent1a, exponentb = @exponent1b, exponentc = @exponent1c endif ; swap ; Now look for trapping if iter > @skipped ; Center z at the cardioid center, rotate if appropriate, then find its azimuth ztemp = (#z - center) * exp( flip( rotation)) zangle = atan2( ztemp ) ; angle of z with respect to cardioid center if zangle < 0 zangle = zangle + twopi endif ; zangle temp = scale * ( 1 + cos( zangle )) ; radius to cardioid point in direction of z ztemp = temp * exp( flip( zangle )) ; point on cardioid trapped by z ; Transmute trap if desired if form2 != 0 form2 = form2 - 1 ; same kludge ; Transmute trap if form2 == 0 ztemp = ztemp * ztemp elseif form2 == 1 ztemp = ztemp * ztemp * ztemp elseif form2 == 2 zextra = ztemp * ztemp ztemp = zextra * zextra elseif form2 <= 40 if form2 <= 20 if form2 == 3 ztemp = ztemp ^ @power2 elseif form2 == 4 ztemp = 1/ztemp elseif form2 == 5 ztemp = sqrt(ztemp) elseif form2 == 6 ztemp = 1 / ( ztemp * ztemp ) elseif form2 == 7 ztemp = log(ztemp) elseif form2 == 8 ztemp = exp( ztemp) elseif form2 == 9 ztemp = ztemp^ztemp elseif form2 == 10 ztemp = sin( ztemp ) elseif form2 == 11 ztemp = cos( ztemp ) elseif form2 == 12 ztemp = tan( ztemp ) elseif form2 == 13 ztemp = asin( ztemp ) elseif form2 == 14 ztemp = acos( ztemp ) elseif form2 == 15 ztemp = atan( ztemp ) elseif form2 == 16 ztemp = sinh( ztemp ) elseif form2 == 17 ztemp = cosh( ztemp ) elseif form2 == 18 ztemp = tanh( ztemp ) elseif form2 == 19 ztemp = asinh( ztemp ) else ; form2 == 20 ztemp = acosh( ztemp ) endif ; form2-3 else ; 20 < form2 <= 40 if form2 == 21 ztemp = atanh( ztemp ) elseif form2 == 22 ztemp = log( 1/ztemp ) elseif form2 == 23 ztemp = log( log( ztemp )) elseif form2 == 24 ztemp = exp( -ztemp ) elseif form2 == 25 ztemp = exp( 1/ztemp ) elseif form2 == 26 ztemp = ztemp^(-ztemp) elseif form2 == 27 zextra = sin( ztemp ) ztemp = zextra * zextra elseif form2 == 28 zextra = cos( ztemp ) ztemp = zextra * zextra elseif form2 == 29 zextra = tan( ztemp ) ztemp = zextra * zextra elseif form2 == 30 ztemp = cotan( ztemp ) elseif form2 == 31 ztemp = 1/cos( ztemp ) elseif form2 == 32 ztemp = 1/sin( ztemp ) elseif form2 == 33 zextra = cotan( ztemp ) ztemp = zextra * zextra elseif form2 == 34 zextra = 1/cos( ztemp ) ztemp = zextra * zextra elseif form2 == 35 zextra = 1/sin( ztemp ) ztemp = zextra * zextra elseif form2 == 36 zextra = ztemp^(ztemp) ztemp = ztemp^zextra elseif form2 == 37 zextra = ztemp^(ztemp) ztemp = 1/( ztemp^zextra ) elseif form2 == 38 ztemp = log(-ztemp) elseif form2 == 39 ztemp = 1/log( ztemp ) else ; form2 == 40 ztemp = ztemp * log( ztemp ) endif ; form2-3 endif ; form2-2 elseif form2 <= 60 if form2 == 41 ztemp = sin( ztemp ) / ztemp elseif form2 == 42 ztemp = cos( ztemp ) / ztemp elseif form2 == 43 ztemp = sin( ztemp ) * cos( ztemp ) elseif form2 == 44 ztemp = sin( ztemp^2 ) elseif form2 == 45 ztemp = exp( -1/ztemp ) elseif form2 == 46 ztemp = ztemp * exp( ztemp ) elseif form2 == 47 ztemp = ztemp * exp( -ztemp ) elseif form2 == 48 ztemp = ztemp * exp( 1/ztemp ) elseif form2 == 49 ztemp = ztemp * exp( -1/ztemp ) elseif form2 == 50 ztemp = ztemp * ztemp * ztemp elseif form2 == 51 ztemp = 1 / ( ztemp * ztemp * ztemp ) elseif form2 == 52 ztemp = atan( 1 / ztemp ) elseif form2 == 53 ztemp = acos( 1 / ztemp ) elseif form2 == 54 ztemp = asin( 1 / ztemp ) elseif form2 == 55 ztemp = tan( ztemp ) / ztemp elseif form2 == 56 ztemp = cotan( ztemp ) / ztemp elseif form2 == 57 ztemp = 1 / ( ztemp * cos( ztemp )) elseif form2 == 58 ztemp = 1 / ( ztemp * sin( ztemp )) elseif form2 == 59 ztemp = ztemp * sin( ztemp ) else ; form2 == 60 ztemp = ztemp * cos( ztemp ) endif ; form2-2 else ; 60 < form2 <= 77 if form2 == 61 ztemp = ztemp * tan( ztemp ) elseif form2 == 62 ztemp = ztemp * cotan( ztemp ) elseif form2 == 63 ztemp = ztemp/cos( ztemp ) elseif form2 == 64 ztemp = ztemp/sin( ztemp ) elseif form2 == 65 ztemp = sin( 1/ztemp ) elseif form2 == 66 ztemp = cos( 1/ztemp ) elseif form2 == 67 ztemp = tan( 1/ztemp ) elseif form2 == 68 ztemp = cotan( 1/ztemp ) elseif form2 == 69 ztemp = 1/cos( 1/ztemp ) elseif form2 == 70 ztemp = 1/sin( 1/ztemp ) elseif form2 == 71 ztemp = cotanh( ztemp ) elseif form2 == 72 ztemp = 1/cosh( ztemp ) elseif form2 == 73 ztemp = 1/sinh( ztemp ) elseif form2 == 74 ztemp = atanh( 1/ztemp ) elseif form2 == 75 ztemp = acosh( 1/ztemp ) elseif form2 == 76 ztemp = asinh( 1/ztemp ) else ; form2 == 77 ztemp = @coeff2a * ztemp^@exponent2a + @coeff2b * ztemp^@exponent2b + @coeff2c * ztemp^@exponent2c endif ; form2-2 endif ; form2-1 endif ; form2-0 ; Is z near trap? value = cabs(#z - ztemp) if value <= @threshold ; yes, it is zextra = ztemp * jc * #z temp = real(zextra)/abs(real(zextra)) ; "random" sign if @taction == 0 ; seed evolve jc = jc + @strength * jc * temp elseif @taction == 1 #z = #z + @strength * #z * temp elseif @taction == 2 temp2 = real(#z) + @strength * real(#z) * temp #z = temp2 + flip(imag(#z)) elseif @taction == 3 temp2 = imag(#z) + @strength * imag(#z) * temp #z = real(#z) + flip(temp2) elseif @taction == 4 temp2 = real(jc) + @strength * real(jc) * temp jc = temp2 + flip(imag(jc)) elseif @taction == 5 temp2 = imag(jc) + @strength * imag(jc) * temp jc = real(jc) + flip(temp2) elseif @taction == 6 if formula == @formula1 formula = @formula3 power = @power3 coeffa = @coeff3a, coeffb = @coeff3b, coeffc = @coeff3b exponenta = @exponent3a, exponentb = @exponent3b, exponentc = @exponent3c else formula = @formula1 power = @power1 coeffa = @coeff1a, coeffb = @coeff1b, coeffc = @coeff1b exponenta = @exponent1a, exponentb = @exponent1b, exponentc = @exponent1c endif ; formula elseif @taction == 7 swap = TRUE formula = @formula3 power = @power3 coeffa = @coeff3a, coeffb = @coeff3b, coeffc = @coeff3b exponenta = @exponent3a, exponentb = @exponent3b, exponentc = @exponent3c endif ; taction endif ; value endif ; iter bailout: |z| < @bail default: title = "Cardioid Man Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" default = 0 hint = "Sets the main fractal formula. \ For 'z^power', use parameter 'Power 1' to set exponent. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param taction caption = "Trap Action" enum = "seed evolve" "z evolve" "zreal evolve" "zimag evolve" "sreal evolve" \ "simag evolve" "toggle formula" "one-shot formula" default = 0 hint = "What happens when a point is within threshold and trapped? 'toggle formula' \ = swapping between 'Formula 1' and 'Toggle Formula' after each trap event; \ 'one-shot' executes 'Toggle Formula' just once per event" endparam param strength caption = "Trap Strength" default = 0.05 hint = "This parameter affects the strength of whatever action is taken as \ a result of parameter 'Trap Action'" endparam param centr caption = "Cardioid Center" default = (0,0) hint = "Where is the cardioid located?" endparam param tscale caption = "Cardioid Scale" default = 0.5 hint = "How big is the cardioid?" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "How much should the cardioid be rotated from its default position (degrees)?" endparam param threshold caption = "Threshold" default = 0.5 hint = "Depth of well; z is trapped if it lies within this distance of cardioid" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the main fractal formula if parameter \ 'Formula 1' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param formula2 caption = "Trap Transmute" enum = "w" "w^2" "w^3" "w^4" "w^power" "1/w" "sqrt(w)" "1/w^2" "log(w)" "e^w" "w^w" \ "sin(w)" "cos(w)" \ "tan(w)" "asin(w)" "acos(w)" "atan(w)" "sinh(w)" "cosh(w)" "tanh(w)" \ "asinh(w)" "acosh(w)" "atanh(w)" "log(1/w)" "log(log(w))" "e^-w" \ "e^(1/w)" "w^-w" "sin(w)^2" "cos(w)^2" "tan(w)^2" "cot(w)" "sec(w)" \ "csc(w)" "cot(w)^2" "sec(w)^2" "csc(w)^2" "w^w^w" "1/w^w^w" "log(-w)" \ "1/log(w)" "wlog(w)" "sin(w)/w" "cos(w)/w" "sin(w)*cos(w)" "sin(w^2)" \ "e^(-1/w)" "we^w" "we^-w" "we^(1/w)" "we^(-1/w)" "w^3" "1/w^3" \ "acot(w)" "asec(w)" "acsc(w)" "tan(w)/w" "cot(w)/w" "sec(w)/w" \ "csc(w)/w" "wsin(w)" "wcos(w)" "wtan(w)" "wcot(w)" "wsec(w)" "wcsc(w)" \ "sin(1/w)" "cos(1/w)" "tan(1/w)" "cot(1/w)" "sec(1/w)" "csc(1/w)" \ "cotanh(w)" "sech(w)" "cosech(w)" "acoth(w)" "asech(w)" "acosech(w)" \ "3-term polynomial" default = 0 hint = "Formula used to transform cardioid point, w, prior to trap test. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used if parameter \ 'Trap Transmute' is set to 'z^power'" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Trap Transmute' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param formula3 caption = "Toggle Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" default = 0 hint = "Formula toggled in on trapping if 'Trap Action' \ = 'toggle' or 'one-shot' formula. \ For 'z^power', 'Power 3' sets power. For '3-term polynomial' set \ params 'Coeff 3a', 'Exponent 3a', 'Coeff 3b', 'Exponent 3b', 'Coeff 3c', \ 'Exponent 3c'." endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the toggled formula if parameter \ 'Toggle Formula' is set to 'z^power'" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Toggle Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param skipped caption = "Iters to Skip" default = 0 hint = "Enter the number of iterations to skip before monitoring the orbit \ for possible trapping" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-CardioidMan" perturbation = #pixel bail = bail centr = centr tscale = tscale rotate = rotate threshold = threshold taction = taction strength = strength formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c formula3 = formula3 power3 = power3 coeff3a = coeff3a coeff3b = coeff3b coeff3c = coeff3c exponent3a = exponent3a exponent3b = exponent3b exponent3c = exponent3c skipped = skipped pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-blendMan { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified blending together of the two. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant ; Generalized embossing update added 030408; based on code ideas of Kerry Mitchell global: float lightrads = @lightangle * #pi / 180 float contoursize = @contourfactor * 0.0065/#magn float angleincrement = 2 * #pi / @testpoints if @emboss int maxindex = @testpoints else int maxindex = 1 endif ; emboss init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 ; For embossing; some code ideas thanks to Kerry Mitchell float currentangle = lightrads complex tempform1[@testpoints], complex tempform2[@testpoints], complex zvalues[@testpoints] complex jcarray[@testpoints] int tempindex = int iteration = int bailcount = 0 int bailiter[@testpoints], int testvalue[@testpoints] if @emboss while tempindex < maxindex zvalues[tempindex] = z tempform1[tempindex] = tempform2[tempindex] = (0,0) jcarray[tempindex] = jc + contoursize * (cos(currentangle)+flip(sin(currentangle))) bailiter[tempindex] = 0 testvalue[tempindex] = 0 currentangle = currentangle + angleincrement tempindex = tempindex + 1 endwhile ; tempindex else zvalues[0] = z, jcarray[0] = jc tempform1[0] = tempform2[0] = (0,0) endif ; @emboss loop: iteration = iteration + 1 tempindex = 0 while tempindex < maxindex if @pmode != 0 zvalues[tempindex] = zvalues[tempindex] + jcarray[tempindex] endif ; pmode ; Execute 1st formula selection if @formula1 == 0 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 1 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 2 zextra = zvalues[tempindex] * zvalues[tempindex] tempform1[tempindex] = zextra * zextra elseif @formula1 == 3 tempform1[tempindex] = zvalues[tempindex] ^ @power1 elseif @formula1 == 4 tempform1[tempindex] = 1/zvalues[tempindex] elseif @formula1 == 5 tempform1[tempindex] = sqrt(zvalues[tempindex]) elseif @formula1 == 6 tempform1[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] ) elseif @formula1 == 7 tempform1[tempindex] = log(zvalues[tempindex]) elseif @formula1 == 8 tempform1[tempindex] = exp( zvalues[tempindex]) elseif @formula1 == 9 tempform1[tempindex] = zvalues[tempindex]^zvalues[tempindex] elseif @formula1 == 10 tempform1[tempindex] = sin( zvalues[tempindex] ) elseif @formula1 == 11 tempform1[tempindex] = cos( zvalues[tempindex] ) elseif @formula1 == 12 tempform1[tempindex] = tan( zvalues[tempindex] ) elseif @formula1 == 13 tempform1[tempindex] = asin( zvalues[tempindex] ) elseif @formula1 == 14 tempform1[tempindex] = acos( zvalues[tempindex] ) elseif @formula1 == 15 tempform1[tempindex] = atan( zvalues[tempindex] ) elseif @formula1 == 16 tempform1[tempindex] = sinh( zvalues[tempindex] ) elseif @formula1 == 17 tempform1[tempindex] = cosh( zvalues[tempindex] ) elseif @formula1 == 18 tempform1[tempindex] = tanh( zvalues[tempindex] ) elseif @formula1 == 19 tempform1[tempindex] = asinh( zvalues[tempindex] ) elseif @formula1 == 20 tempform1[tempindex] = acosh( zvalues[tempindex] ) elseif @formula1 == 21 tempform1[tempindex] = atanh( zvalues[tempindex] ) elseif @formula1 == 22 tempform1[tempindex] = log( 1/zvalues[tempindex] ) elseif @formula1 == 23 tempform1[tempindex] = log( log( zvalues[tempindex] )) elseif @formula1 == 24 tempform1[tempindex] = exp( -zvalues[tempindex] ) elseif @formula1 == 25 tempform1[tempindex] = exp( 1/zvalues[tempindex] ) elseif @formula1 == 26 tempform1[tempindex] = zvalues[tempindex]^(-zvalues[tempindex]) elseif @formula1 == 27 zextra = sin( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 28 zextra = cos( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 29 zextra = tan( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 30 tempform1[tempindex] = cotan( zvalues[tempindex] ) elseif @formula1 == 31 tempform1[tempindex] = 1/cos( zvalues[tempindex] ) elseif @formula1 == 32 tempform1[tempindex] = 1/sin( zvalues[tempindex] ) elseif @formula1 == 33 zextra = cotan( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 36 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform1[tempindex] = zvalues[tempindex]^zextra elseif @formula1 == 37 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform1[tempindex] = 1/( zvalues[tempindex]^zextra ) elseif @formula1 == 38 tempform1[tempindex] = log(-zvalues[tempindex]) elseif @formula1 == 39 tempform1[tempindex] = 1/log( zvalues[tempindex] ) elseif @formula1 == 40 tempform1[tempindex] = zvalues[tempindex] * log( zvalues[tempindex] ) elseif @formula1 == 41 tempform1[tempindex] = sin( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 42 tempform1[tempindex] = cos( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 43 tempform1[tempindex] = sin( zvalues[tempindex] ) * cos( zvalues[tempindex] ) elseif @formula1 == 44 tempform1[tempindex] = sin( zvalues[tempindex]^2 ) elseif @formula1 == 45 tempform1[tempindex] = exp( -1/zvalues[tempindex] ) elseif @formula1 == 46 tempform1[tempindex] = zvalues[tempindex] * exp( zvalues[tempindex] ) elseif @formula1 == 47 tempform1[tempindex] = zvalues[tempindex] * exp( -zvalues[tempindex] ) elseif @formula1 == 48 tempform1[tempindex] = zvalues[tempindex] * exp( 1/zvalues[tempindex] ) elseif @formula1 == 49 tempform1[tempindex] = zvalues[tempindex] * exp( -1/zvalues[tempindex] ) elseif @formula1 == 50 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 51 tempform1[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] ) elseif @formula1 == 52 tempform1[tempindex] = atan( 1 / zvalues[tempindex] ) elseif @formula1 == 53 tempform1[tempindex] = acos( 1 / zvalues[tempindex] ) elseif @formula1 == 54 tempform1[tempindex] = asin( 1 / zvalues[tempindex] ) elseif @formula1 == 55 tempform1[tempindex] = tan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 56 tempform1[tempindex] = cotan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 57 tempform1[tempindex] = 1 / ( zvalues[tempindex] * cos( zvalues[tempindex] )) elseif @formula1 == 58 tempform1[tempindex] = 1 / ( zvalues[tempindex] * sin( zvalues[tempindex] )) elseif @formula1 == 59 tempform1[tempindex] = zvalues[tempindex] * sin( zvalues[tempindex] ) elseif @formula1 == 60 tempform1[tempindex] = zvalues[tempindex] * cos( zvalues[tempindex] ) elseif @formula1 == 61 tempform1[tempindex] = zvalues[tempindex] * tan( zvalues[tempindex] ) elseif @formula1 == 62 tempform1[tempindex] = zvalues[tempindex] * cotan( zvalues[tempindex] ) elseif @formula1 == 63 tempform1[tempindex] = zvalues[tempindex]/cos( zvalues[tempindex] ) elseif @formula1 == 64 tempform1[tempindex] = zvalues[tempindex]/sin( zvalues[tempindex] ) elseif @formula1 == 65 tempform1[tempindex] = sin( 1/zvalues[tempindex] ) elseif @formula1 == 66 tempform1[tempindex] = cos( 1/zvalues[tempindex] ) elseif @formula1 == 67 tempform1[tempindex] = tan( 1/zvalues[tempindex] ) elseif @formula1 == 68 tempform1[tempindex] = cotan( 1/zvalues[tempindex] ) elseif @formula1 == 69 tempform1[tempindex] = 1/cos( 1/zvalues[tempindex] ) elseif @formula1 == 70 tempform1[tempindex] = 1/sin( 1/zvalues[tempindex] ) elseif @formula1 == 71 tempform1[tempindex] = cotanh( zvalues[tempindex] ) elseif @formula1 == 72 tempform1[tempindex] = 1/cosh( zvalues[tempindex] ) elseif @formula1 == 73 tempform1[tempindex] = 1/sinh( zvalues[tempindex] ) elseif @formula1 == 74 tempform1[tempindex] = atanh( 1/zvalues[tempindex] ) elseif @formula1 == 75 tempform1[tempindex] = acosh( 1/zvalues[tempindex] ) elseif @formula1 == 76 tempform1[tempindex] = asinh( 1/zvalues[tempindex] ) elseif @formula1 == 77 tempform1[tempindex] = @coeff1a * zvalues[tempindex]^@exponent1a + \ @coeff1b * zvalues[tempindex]^@exponent1b + @coeff1c * zvalues[tempindex]^@exponent1c elseif @formula1 == 78 zextra = sinh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 79 zextra = cosh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 80 zextra = tanh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 81 zextra = cotanh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 84 tempform1[tempindex] = sinh(1/zvalues[tempindex]) elseif @formula1 == 85 tempform1[tempindex] = cosh(1/zvalues[tempindex]) elseif @formula1 == 86 tempform1[tempindex] = tanh(1/zvalues[tempindex]) elseif @formula1 == 87 tempform1[tempindex] = cotanh(1/zvalues[tempindex]) elseif @formula1 == 88 tempform1[tempindex] = (1,0)/cosh(1/zvalues[tempindex]) elseif @formula1 == 89 tempform1[tempindex] = (1,0)/sinh(1/zvalues[tempindex]) elseif @formula1 == 90 tempform1[tempindex] = sin( zvalues[tempindex] ) * tan(zvalues[tempindex]) elseif @formula1 == 91 tempform1[tempindex] = sinh(zvalues[tempindex]) * tanh(zvalues[tempindex]) elseif @formula1 == 92 tempform1[tempindex] = sinh(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula1 == 93 temp2 = sinh(zvalues[tempindex]), zextra = cosh(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(zvalues[tempindex]), zextra = cos(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/zvalues[tempindex] tempform1[tempindex] = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/zvalues[tempindex] ) tempform1[tempindex] = zextra*zextra elseif @formula1 == 97 tempform1[tempindex] = sin(zvalues[tempindex]) * cos(1/zvalues[tempindex]) elseif @formula1 == 98 tempform1[tempindex] = sin(zvalues[tempindex]) * sin(1/zvalues[tempindex]) elseif @formula1 == 99 zextra = log(zvalues[tempindex]) tempform1[tempindex] = zextra*zextra elseif @formula1 == 100 tempform1[tempindex] = sin(zvalues[tempindex]) * sin(2*zvalues[tempindex]) elseif @formula1 == 101 tempform1[tempindex] = exp(2*zvalues[tempindex]) elseif @formula1 == 102 tempform1[tempindex] = exp(-2*zvalues[tempindex]) elseif @formula1 == 103 zextra = 1/zvalues[tempindex] tempform1[tempindex] = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/zvalues[tempindex] ) tempform1[tempindex] = zextra*zextra elseif @formula1 == 105 tempform1[tempindex] = sinh(zvalues[tempindex]) * cosh(1/zvalues[tempindex]) elseif @formula1 == 106 tempform1[tempindex] = sinh(zvalues[tempindex]) * sinh(1/zvalues[tempindex]) elseif @formula1 == 107 tempform1[tempindex] = sin(zvalues[tempindex]) * sinh(zvalues[tempindex]) elseif @formula1 == 108 tempform1[tempindex] = sin(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula1 == 109 zextra = sin(zvalues[tempindex]), temp2 = sinh(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1[tempindex] = sin(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 111 tempform1[tempindex] = cos(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 112 tempform1[tempindex] = sinh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 113 tempform1[tempindex] = cosh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 114 tempform1[tempindex] = sin(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 115 tempform1[tempindex] = cos(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 116 tempform1[tempindex] = sinh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 117 tempform1[tempindex] = cosh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 118 tempform1[tempindex] = exp(zvalues[tempindex]*zvalues[tempindex]) elseif @formula1 == 119 tempform1[tempindex] = exp(-(zvalues[tempindex]*zvalues[tempindex])) elseif @formula1 == 120 tempform1[tempindex] = exp(1/(zvalues[tempindex]*zvalues[tempindex])) else ; @formula1 == 121 tempform1[tempindex] = exp(-1/(zvalues[tempindex]*zvalues[tempindex])) endif ; formula1 ; Execute 2nd formula selection if @formula2 == 0 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 1 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 2 zextra = zvalues[tempindex] * zvalues[tempindex] tempform2[tempindex] = zextra * zextra elseif @formula2 == 3 tempform2[tempindex] = zvalues[tempindex] ^ @power2 elseif @formula2 == 4 tempform2[tempindex] = 1/zvalues[tempindex] elseif @formula2 == 5 tempform2[tempindex] = sqrt(zvalues[tempindex]) elseif @formula2 == 6 tempform2[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] ) elseif @formula2 == 7 tempform2[tempindex] = log(zvalues[tempindex]) elseif @formula2 == 8 tempform2[tempindex] = exp( zvalues[tempindex]) elseif @formula2 == 9 tempform2[tempindex] = zvalues[tempindex]^zvalues[tempindex] elseif @formula2 == 10 tempform2[tempindex] = sin( zvalues[tempindex] ) elseif @formula2 == 11 tempform2[tempindex] = cos( zvalues[tempindex] ) elseif @formula2 == 12 tempform2[tempindex] = tan( zvalues[tempindex] ) elseif @formula2 == 13 tempform2[tempindex] = asin( zvalues[tempindex] ) elseif @formula2 == 14 tempform2[tempindex] = acos( zvalues[tempindex] ) elseif @formula2 == 15 tempform2[tempindex] = atan( zvalues[tempindex] ) elseif @formula2 == 16 tempform2[tempindex] = sinh( zvalues[tempindex] ) elseif @formula2 == 17 tempform2[tempindex] = cosh( zvalues[tempindex] ) elseif @formula2 == 18 tempform2[tempindex] = tanh( zvalues[tempindex] ) elseif @formula2 == 19 tempform2[tempindex] = asinh( zvalues[tempindex] ) elseif @formula2 == 20 tempform2[tempindex] = acosh( zvalues[tempindex] ) elseif @formula2 == 21 tempform2[tempindex] = atanh( zvalues[tempindex] ) elseif @formula2 == 22 tempform2[tempindex] = log( 1/zvalues[tempindex] ) elseif @formula2 == 23 tempform2[tempindex] = log( log( zvalues[tempindex] )) elseif @formula2 == 24 tempform2[tempindex] = exp( -zvalues[tempindex] ) elseif @formula2 == 25 tempform2[tempindex] = exp( 1/zvalues[tempindex] ) elseif @formula2 == 26 tempform2[tempindex] = zvalues[tempindex]^(-zvalues[tempindex]) elseif @formula2 == 27 zextra = sin( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 28 zextra = cos( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 29 zextra = tan( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 30 tempform2[tempindex] = cotan( zvalues[tempindex] ) elseif @formula2 == 31 tempform2[tempindex] = 1/cos( zvalues[tempindex] ) elseif @formula2 == 32 tempform2[tempindex] = 1/sin( zvalues[tempindex] ) elseif @formula2 == 33 zextra = cotan( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 36 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform2[tempindex] = zvalues[tempindex]^zextra elseif @formula2 == 37 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform2[tempindex] = 1/( zvalues[tempindex]^zextra ) elseif @formula2 == 38 tempform2[tempindex] = log(-zvalues[tempindex]) elseif @formula2 == 39 tempform2[tempindex] = 1/log( zvalues[tempindex] ) elseif @formula2 == 40 tempform2[tempindex] = zvalues[tempindex] * log( zvalues[tempindex] ) elseif @formula2 == 41 tempform2[tempindex] = sin( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 42 tempform2[tempindex] = cos( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 43 tempform2[tempindex] = sin( zvalues[tempindex] ) * cos( zvalues[tempindex] ) elseif @formula2 == 44 tempform2[tempindex] = sin( zvalues[tempindex]^2 ) elseif @formula2 == 45 tempform2[tempindex] = exp( -1/zvalues[tempindex] ) elseif @formula2 == 46 tempform2[tempindex] = zvalues[tempindex] * exp( zvalues[tempindex] ) elseif @formula2 == 47 tempform2[tempindex] = zvalues[tempindex] * exp( -zvalues[tempindex] ) elseif @formula2 == 48 tempform2[tempindex] = zvalues[tempindex] * exp( 1/zvalues[tempindex] ) elseif @formula2 == 49 tempform2[tempindex] = zvalues[tempindex] * exp( -1/zvalues[tempindex] ) elseif @formula2 == 50 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 51 tempform2[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] ) elseif @formula2 == 52 tempform2[tempindex] = atan( 1 / zvalues[tempindex] ) elseif @formula2 == 53 tempform2[tempindex] = acos( 1 / zvalues[tempindex] ) elseif @formula2 == 54 tempform2[tempindex] = asin( 1 / zvalues[tempindex] ) elseif @formula2 == 55 tempform2[tempindex] = tan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 56 tempform2[tempindex] = cotan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 57 tempform2[tempindex] = 1 / ( zvalues[tempindex] * cos( zvalues[tempindex] )) elseif @formula2 == 58 tempform2[tempindex] = 1 / ( zvalues[tempindex] * sin( zvalues[tempindex] )) elseif @formula2 == 59 tempform2[tempindex] = zvalues[tempindex] * sin( zvalues[tempindex] ) elseif @formula2 == 60 tempform2[tempindex] = zvalues[tempindex] * cos( zvalues[tempindex] ) elseif @formula2 == 61 tempform2[tempindex] = zvalues[tempindex] * tan( zvalues[tempindex] ) elseif @formula2 == 62 tempform2[tempindex] = zvalues[tempindex] * cotan( zvalues[tempindex] ) elseif @formula2 == 63 tempform2[tempindex] = zvalues[tempindex]/cos( zvalues[tempindex] ) elseif @formula2 == 64 tempform2[tempindex] = zvalues[tempindex]/sin( zvalues[tempindex] ) elseif @formula2 == 65 tempform2[tempindex] = sin( 1/zvalues[tempindex] ) elseif @formula2 == 66 tempform2[tempindex] = cos( 1/zvalues[tempindex] ) elseif @formula2 == 67 tempform2[tempindex] = tan( 1/zvalues[tempindex] ) elseif @formula2 == 68 tempform2[tempindex] = cotan( 1/zvalues[tempindex] ) elseif @formula2 == 69 tempform2[tempindex] = 1/cos( 1/zvalues[tempindex] ) elseif @formula2 == 70 tempform2[tempindex] = 1/sin( 1/zvalues[tempindex] ) elseif @formula2 == 71 tempform2[tempindex] = cotanh( zvalues[tempindex] ) elseif @formula2 == 72 tempform2[tempindex] = 1/cosh( zvalues[tempindex] ) elseif @formula2 == 73 tempform2[tempindex] = 1/sinh( zvalues[tempindex] ) elseif @formula2 == 74 tempform2[tempindex] = atanh( 1/zvalues[tempindex] ) elseif @formula2 == 75 tempform2[tempindex] = acosh( 1/zvalues[tempindex] ) elseif @formula2 == 76 tempform2[tempindex] = asinh( 1/zvalues[tempindex] ) elseif @formula2 == 77 tempform2[tempindex] = @coeff2a * zvalues[tempindex]^@exponent2a + \ @coeff2b * zvalues[tempindex]^@exponent2b + @coeff2c * zvalues[tempindex]^@exponent2c elseif @formula2 == 78 zextra = sinh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 79 zextra = cosh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 80 zextra = tanh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 81 zextra = cotanh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 84 tempform2[tempindex] = sinh(1/zvalues[tempindex]) elseif @formula2 == 85 tempform2[tempindex] = cosh(1/zvalues[tempindex]) elseif @formula2 == 86 tempform2[tempindex] = tanh(1/zvalues[tempindex]) elseif @formula2 == 87 tempform2[tempindex] = cotanh(1/zvalues[tempindex]) elseif @formula2 == 88 tempform2[tempindex] = (1,0)/cosh(1/zvalues[tempindex]) elseif @formula2 == 89 tempform2[tempindex] = (1,0)/sinh(1/zvalues[tempindex]) elseif @formula2 == 90 tempform2[tempindex] = sin( zvalues[tempindex] ) * tan(zvalues[tempindex]) elseif @formula2 == 91 tempform2[tempindex] = sinh(zvalues[tempindex]) * tanh(zvalues[tempindex]) elseif @formula2 == 92 tempform2[tempindex] = sinh(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula2 == 93 temp2 = sinh(zvalues[tempindex]), zextra = cosh(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(zvalues[tempindex]), zextra = cos(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/zvalues[tempindex] tempform2[tempindex] = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/zvalues[tempindex] ) tempform2[tempindex] = zextra*zextra elseif @formula2 == 97 tempform2[tempindex] = sin(zvalues[tempindex]) * cos(1/zvalues[tempindex]) elseif @formula2 == 98 tempform2[tempindex] = sin(zvalues[tempindex]) * sin(1/zvalues[tempindex]) elseif @formula2 == 99 zextra = log(zvalues[tempindex]) tempform2[tempindex] = zextra*zextra elseif @formula2 == 100 tempform2[tempindex] = sin(zvalues[tempindex]) * sin(2*zvalues[tempindex]) elseif @formula2 == 101 tempform2[tempindex] = exp(2*zvalues[tempindex]) elseif @formula2 == 102 tempform2[tempindex] = exp(-2*zvalues[tempindex]) elseif @formula2 == 103 zextra = 1/zvalues[tempindex] tempform2[tempindex] = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/zvalues[tempindex] ) tempform2[tempindex] = zextra*zextra elseif @formula2 == 105 tempform2[tempindex] = sinh(zvalues[tempindex]) * cosh(1/zvalues[tempindex]) elseif @formula2 == 106 tempform2[tempindex] = sinh(zvalues[tempindex]) * sinh(1/zvalues[tempindex]) elseif @formula2 == 107 tempform2[tempindex] = sin(zvalues[tempindex]) * sinh(zvalues[tempindex]) elseif @formula2 == 108 tempform2[tempindex] = sin(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula2 == 109 zextra = sin(zvalues[tempindex]), temp2 = sinh(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2[tempindex] = sin(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 111 tempform2[tempindex] = cos(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 112 tempform2[tempindex] = sinh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 113 tempform2[tempindex] = cosh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 114 tempform2[tempindex] = sin(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 115 tempform2[tempindex] = cos(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 116 tempform2[tempindex] = sinh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 117 tempform2[tempindex] = cosh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 118 tempform2[tempindex] = exp(zvalues[tempindex]*zvalues[tempindex]) elseif @formula2 == 119 tempform2[tempindex] = exp(-(zvalues[tempindex]*zvalues[tempindex])) elseif @formula2 == 120 tempform2[tempindex] = exp(1/(zvalues[tempindex]*zvalues[tempindex])) elseif @formula2 == 121 tempform2[tempindex] = exp(-1/(zvalues[tempindex]*zvalues[tempindex])) endif ; formula2 zvalues[tempindex] = (1-@blend)*tempform1[tempindex] + @blend*tempform2[tempindex] if @pmode != 1 zvalues[tempindex] = zvalues[tempindex] + jcarray[tempindex] endif ; pmode tempindex = tempindex + 1 endwhile ; tempindex ; Assign proper #z value for bailout test ; If embossed, assign proper color index to real(#z), and set imag(#z) ; to a large value if finished so that bailout will occur if @emboss tempindex = 0 while tempindex < maxindex if bailiter[tempindex] == 0 if ( cabs(zvalues[tempindex]) >= @bail ) bailiter[tempindex] = iteration bailcount = bailcount + 1 endif ; cabs if @evariable == 1 ; real crossings if real(zvalues[tempindex]) > 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; real elseif @evariable == 2 ; imag crossings if imag(zvalues[tempindex]) > 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; imag elseif @evariable == 3 ; angle wrappings if atan2(zvalues[tempindex]) < 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; atan2 endif ; @evariable endif ; bailiter tempindex = tempindex + 1 endwhile ; tempindex ; See if all the test points have bailed out yet; if so,we're done and ; can assign a color value if bailcount == @testpoints ; all done if @evariable != 0 ; copy test values to the bailiter array for convenience tempindex = 0 while tempindex < maxindex bailiter[tempindex] = testvalue[tempindex] tempindex = tempindex + 1 endwhile ; tempindex endif ; @evariable if @testpoints == 2 if @type2 == 0 ; original if bailiter[0] > bailiter[1] z = (0.9,1e30) elseif bailiter[0] < bailiter[1] z = (0.1, 1e30) else z = (0.5,1e30) endif ; bailiter elseif @type2 == 1 ; two-tone if bailiter[0] == bailiter[1] z = (0.1,1e30) else z = (0.9,1e30) endif ; bailiter endif ; @type2 elseif @testpoints == 3 if @type3 == 0 if ( bailiter[0] == bailiter[1] ) && ( bailiter[1] == bailiter[2] ) z = (0.67,1e30) elseif ( bailiter[0] == bailiter[1] ) || ( bailiter[1] == bailiter[2] ) || \ ( bailiter[0] == bailiter[2] ) z = (0.33,1e30) elseif ( ( bailiter[0] > bailiter[1] ) && ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] < bailiter[0] ) ) || ( ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] > bailiter[0] ) && ( bailiter[0] < bailiter[1] ) ) || \ ( ( bailiter[2] > bailiter[0] ) && ( bailiter[0] > bailiter[1] ) && \ ( bailiter[1] < bailiter[2] ) ) ; counterclockwise z = (0.9,1e30) else ; clockwise z = (0.1,1e30) endif ; bailiter elseif @type3 == 1 if ( bailiter[0] == bailiter[1] ) || ( bailiter[1] == bailiter[2] ) || \ ( bailiter[0] == bailiter[2] ) ; any are equal z = (0.5,1e30) elseif ( ( bailiter[0] > bailiter[1] ) && ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] < bailiter[0] ) ) || ( ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] > bailiter[0] ) && ( bailiter[0] < bailiter[1] ) ) || \ ( ( bailiter[2] > bailiter[0] ) && ( bailiter[0] > bailiter[1] ) && \ ( bailiter[1] < bailiter[2] ) ) ; counterclockwise z = (0.9,1e30) else ; clockwise z = (0.1,1e30) endif ; bailiter elseif @type3 == 2 ; two-tone if ( bailiter[0] == bailiter[1] ) && ( bailiter[1] == bailiter[2] ) ; all equal z = (0.9,1e30) else z = (0.1,1e30) endif ; bailiter endif ; @type3 endif ; @testpoints else ; all test points haven't bailed yet z = (0.05,0.05) endif ; bailcount else if @pixelmode z = #pixel + @pixelblend*zvalues[0] else z = zvalues[0] endif ; @pixelmode endif ; @emboss bailout: |z| < @bail default: title = "BlendMan" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param pixelmode caption = "Pixel Mode?" default = FALSE hint = "If enabled, the selected Mandelbrot formulas are used to slightly modify \ the pixel coordinates, resulting in a perturbed pixel-type formula. \ The extent of the perturbation is controlled with param 'Pixel Blend'. \ Use a low iteration count and Inside coloring, since the affect is cumulative. \ Not available in 'Emboss' mode" visible = !@emboss endparam param pixelblend caption = "Pixel Blend" default = 1.0 hint = "If 'Pixel Mode' is enabled, this param controls the amount of the \ Mandelbrot formula that is blended into the pixel coordinates" visible = @pixelmode endparam param emboss caption = "Emboss?" default = FALSE hint = "If enabled, special embossing algorithm is implemented. The embossing \ method is intended to be used only with the special coloring formula \ 'jam-Emboss' in folder jam2.ucl. Not available in 'Pixel Mode'" visible = !@pixelmode endparam param testpoints caption = "Test Points" default = 3 min = 2 max = 3 hint = "If 'Emboss' is enabled, this is the number of test points to be computed for \ each pixel. Range is 2-5 (integer). The bigger the number, the slower the \ calculation" visible = @emboss endparam param type2 caption = "2-Pt Flavor" default = 0 enum = "Original" "Two-Tone" hint = "If 'Emboss' is enabled and 'Test Points' is set to 2, then this \ param defines the type of test to be performed in the calculation" visible = @emboss && (@testpoints == 2) endparam param type3 caption = "3-Pt Flavor" default = 0 enum = "A" "B" "C" hint = "If 'Emboss' is enabled and 'Test Points' is set to 3, then this \ param defines the type of test to be performed in the calculation" visible = @emboss && (@testpoints == 3) endparam param evariable caption = "Emboss Variable" enum = "Iteration" "Real" "Imag" "Angle" default = 0 hint = "This param describes which variable is tracked to define the embossing" visible = @emboss endparam param lightangle caption = "Light Angle" default = 0.0 min = 0.0 max = 360.0 hint = "If 'Emboss' is enabled, this param can shift the lighting pattern. Range \ is 0 - 360 degrees" visible = @emboss endparam param contourfactor caption = "Contour Size" default = 1.0 min = 0.0 hint = "If 'Emboss' is enabled, this param affects the size of the contours" visible = @emboss endparam param blend caption = "Formula Blend" default = 0.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. This is the fraction of Formula 2 that is \ blended into Formula 1; at 0.0, final #z is solely from Formula 1, \ while at 1.0, #z is determined solely by Formula 2" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-blendMan-J" jconstant = #pixel bail = bail pixelmode = pixelmode pixelblend = pixelblend emboss = emboss testpoints = testpoints type2 = type2 type3 = type3 evariable = evariable lightangle = lightangle contourfactor = contourfactor blend = blend formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-blendMan-J { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified blending together of the two. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant ; Generalized embossing update added 030408; based on code ideas of Kerry Mitchell global: float lightrads = @lightangle * #pi / 180 float contoursize = @contourfactor * 0.0065/#magn float angleincrement = 2 * #pi / @testpoints if @emboss int maxindex = @testpoints else int maxindex = 1 endif ; emboss init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 ; For embossing; some code ideas thanks to Kerry Mitchell float currentangle = lightrads complex tempform1[@testpoints], complex tempform2[@testpoints], complex zvalues[@testpoints] complex jcarray[@testpoints] int tempindex = int iteration = int bailcount = 0 int bailiter[@testpoints], int testvalue[@testpoints] if @emboss while tempindex < maxindex zvalues[tempindex] = z + contoursize * (cos(currentangle)+flip(sin(currentangle))) tempform1[tempindex] = tempform2[tempindex] = (0,0) jcarray[tempindex] = jc bailiter[tempindex] = 0 testvalue[tempindex] = 0 currentangle = currentangle + angleincrement tempindex = tempindex + 1 endwhile ; tempindex else zvalues[0] = z, jcarray[0] = jc tempform1[0] = tempform2[0] = (0,0) endif ; @emboss loop: iteration = iteration + 1 tempindex = 0 while tempindex < maxindex if @pmode != 0 zvalues[tempindex] = zvalues[tempindex] + jcarray[tempindex] endif ; pmode ; Execute 1st formula selection if @formula1 == 0 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 1 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 2 zextra = zvalues[tempindex] * zvalues[tempindex] tempform1[tempindex] = zextra * zextra elseif @formula1 == 3 tempform1[tempindex] = zvalues[tempindex] ^ @power1 elseif @formula1 == 4 tempform1[tempindex] = 1/zvalues[tempindex] elseif @formula1 == 5 tempform1[tempindex] = sqrt(zvalues[tempindex]) elseif @formula1 == 6 tempform1[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] ) elseif @formula1 == 7 tempform1[tempindex] = log(zvalues[tempindex]) elseif @formula1 == 8 tempform1[tempindex] = exp( zvalues[tempindex]) elseif @formula1 == 9 tempform1[tempindex] = zvalues[tempindex]^zvalues[tempindex] elseif @formula1 == 10 tempform1[tempindex] = sin( zvalues[tempindex] ) elseif @formula1 == 11 tempform1[tempindex] = cos( zvalues[tempindex] ) elseif @formula1 == 12 tempform1[tempindex] = tan( zvalues[tempindex] ) elseif @formula1 == 13 tempform1[tempindex] = asin( zvalues[tempindex] ) elseif @formula1 == 14 tempform1[tempindex] = acos( zvalues[tempindex] ) elseif @formula1 == 15 tempform1[tempindex] = atan( zvalues[tempindex] ) elseif @formula1 == 16 tempform1[tempindex] = sinh( zvalues[tempindex] ) elseif @formula1 == 17 tempform1[tempindex] = cosh( zvalues[tempindex] ) elseif @formula1 == 18 tempform1[tempindex] = tanh( zvalues[tempindex] ) elseif @formula1 == 19 tempform1[tempindex] = asinh( zvalues[tempindex] ) elseif @formula1 == 20 tempform1[tempindex] = acosh( zvalues[tempindex] ) elseif @formula1 == 21 tempform1[tempindex] = atanh( zvalues[tempindex] ) elseif @formula1 == 22 tempform1[tempindex] = log( 1/zvalues[tempindex] ) elseif @formula1 == 23 tempform1[tempindex] = log( log( zvalues[tempindex] )) elseif @formula1 == 24 tempform1[tempindex] = exp( -zvalues[tempindex] ) elseif @formula1 == 25 tempform1[tempindex] = exp( 1/zvalues[tempindex] ) elseif @formula1 == 26 tempform1[tempindex] = zvalues[tempindex]^(-zvalues[tempindex]) elseif @formula1 == 27 zextra = sin( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 28 zextra = cos( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 29 zextra = tan( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 30 tempform1[tempindex] = cotan( zvalues[tempindex] ) elseif @formula1 == 31 tempform1[tempindex] = 1/cos( zvalues[tempindex] ) elseif @formula1 == 32 tempform1[tempindex] = 1/sin( zvalues[tempindex] ) elseif @formula1 == 33 zextra = cotan( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 36 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform1[tempindex] = zvalues[tempindex]^zextra elseif @formula1 == 37 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform1[tempindex] = 1/( zvalues[tempindex]^zextra ) elseif @formula1 == 38 tempform1[tempindex] = log(-zvalues[tempindex]) elseif @formula1 == 39 tempform1[tempindex] = 1/log( zvalues[tempindex] ) elseif @formula1 == 40 tempform1[tempindex] = zvalues[tempindex] * log( zvalues[tempindex] ) elseif @formula1 == 41 tempform1[tempindex] = sin( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 42 tempform1[tempindex] = cos( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 43 tempform1[tempindex] = sin( zvalues[tempindex] ) * cos( zvalues[tempindex] ) elseif @formula1 == 44 tempform1[tempindex] = sin( zvalues[tempindex]^2 ) elseif @formula1 == 45 tempform1[tempindex] = exp( -1/zvalues[tempindex] ) elseif @formula1 == 46 tempform1[tempindex] = zvalues[tempindex] * exp( zvalues[tempindex] ) elseif @formula1 == 47 tempform1[tempindex] = zvalues[tempindex] * exp( -zvalues[tempindex] ) elseif @formula1 == 48 tempform1[tempindex] = zvalues[tempindex] * exp( 1/zvalues[tempindex] ) elseif @formula1 == 49 tempform1[tempindex] = zvalues[tempindex] * exp( -1/zvalues[tempindex] ) elseif @formula1 == 50 tempform1[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula1 == 51 tempform1[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] ) elseif @formula1 == 52 tempform1[tempindex] = atan( 1 / zvalues[tempindex] ) elseif @formula1 == 53 tempform1[tempindex] = acos( 1 / zvalues[tempindex] ) elseif @formula1 == 54 tempform1[tempindex] = asin( 1 / zvalues[tempindex] ) elseif @formula1 == 55 tempform1[tempindex] = tan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 56 tempform1[tempindex] = cotan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula1 == 57 tempform1[tempindex] = 1 / ( zvalues[tempindex] * cos( zvalues[tempindex] )) elseif @formula1 == 58 tempform1[tempindex] = 1 / ( zvalues[tempindex] * sin( zvalues[tempindex] )) elseif @formula1 == 59 tempform1[tempindex] = zvalues[tempindex] * sin( zvalues[tempindex] ) elseif @formula1 == 60 tempform1[tempindex] = zvalues[tempindex] * cos( zvalues[tempindex] ) elseif @formula1 == 61 tempform1[tempindex] = zvalues[tempindex] * tan( zvalues[tempindex] ) elseif @formula1 == 62 tempform1[tempindex] = zvalues[tempindex] * cotan( zvalues[tempindex] ) elseif @formula1 == 63 tempform1[tempindex] = zvalues[tempindex]/cos( zvalues[tempindex] ) elseif @formula1 == 64 tempform1[tempindex] = zvalues[tempindex]/sin( zvalues[tempindex] ) elseif @formula1 == 65 tempform1[tempindex] = sin( 1/zvalues[tempindex] ) elseif @formula1 == 66 tempform1[tempindex] = cos( 1/zvalues[tempindex] ) elseif @formula1 == 67 tempform1[tempindex] = tan( 1/zvalues[tempindex] ) elseif @formula1 == 68 tempform1[tempindex] = cotan( 1/zvalues[tempindex] ) elseif @formula1 == 69 tempform1[tempindex] = 1/cos( 1/zvalues[tempindex] ) elseif @formula1 == 70 tempform1[tempindex] = 1/sin( 1/zvalues[tempindex] ) elseif @formula1 == 71 tempform1[tempindex] = cotanh( zvalues[tempindex] ) elseif @formula1 == 72 tempform1[tempindex] = 1/cosh( zvalues[tempindex] ) elseif @formula1 == 73 tempform1[tempindex] = 1/sinh( zvalues[tempindex] ) elseif @formula1 == 74 tempform1[tempindex] = atanh( 1/zvalues[tempindex] ) elseif @formula1 == 75 tempform1[tempindex] = acosh( 1/zvalues[tempindex] ) elseif @formula1 == 76 tempform1[tempindex] = asinh( 1/zvalues[tempindex] ) elseif @formula1 == 77 tempform1[tempindex] = @coeff1a * zvalues[tempindex]^@exponent1a + \ @coeff1b * zvalues[tempindex]^@exponent1b + @coeff1c * zvalues[tempindex]^@exponent1c elseif @formula1 == 78 zextra = sinh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 79 zextra = cosh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 80 zextra = tanh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 81 zextra = cotanh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(zvalues[tempindex]) tempform1[tempindex] = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( zvalues[tempindex] ) tempform1[tempindex] = zextra * zextra elseif @formula1 == 84 tempform1[tempindex] = sinh(1/zvalues[tempindex]) elseif @formula1 == 85 tempform1[tempindex] = cosh(1/zvalues[tempindex]) elseif @formula1 == 86 tempform1[tempindex] = tanh(1/zvalues[tempindex]) elseif @formula1 == 87 tempform1[tempindex] = cotanh(1/zvalues[tempindex]) elseif @formula1 == 88 tempform1[tempindex] = (1,0)/cosh(1/zvalues[tempindex]) elseif @formula1 == 89 tempform1[tempindex] = (1,0)/sinh(1/zvalues[tempindex]) elseif @formula1 == 90 tempform1[tempindex] = sin( zvalues[tempindex] ) * tan(zvalues[tempindex]) elseif @formula1 == 91 tempform1[tempindex] = sinh(zvalues[tempindex]) * tanh(zvalues[tempindex]) elseif @formula1 == 92 tempform1[tempindex] = sinh(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula1 == 93 temp2 = sinh(zvalues[tempindex]), zextra = cosh(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(zvalues[tempindex]), zextra = cos(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/zvalues[tempindex] tempform1[tempindex] = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/zvalues[tempindex] ) tempform1[tempindex] = zextra*zextra elseif @formula1 == 97 tempform1[tempindex] = sin(zvalues[tempindex]) * cos(1/zvalues[tempindex]) elseif @formula1 == 98 tempform1[tempindex] = sin(zvalues[tempindex]) * sin(1/zvalues[tempindex]) elseif @formula1 == 99 zextra = log(zvalues[tempindex]) tempform1[tempindex] = zextra*zextra elseif @formula1 == 100 tempform1[tempindex] = sin(zvalues[tempindex]) * sin(2*zvalues[tempindex]) elseif @formula1 == 101 tempform1[tempindex] = exp(2*zvalues[tempindex]) elseif @formula1 == 102 tempform1[tempindex] = exp(-2*zvalues[tempindex]) elseif @formula1 == 103 zextra = 1/zvalues[tempindex] tempform1[tempindex] = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/zvalues[tempindex] ) tempform1[tempindex] = zextra*zextra elseif @formula1 == 105 tempform1[tempindex] = sinh(zvalues[tempindex]) * cosh(1/zvalues[tempindex]) elseif @formula1 == 106 tempform1[tempindex] = sinh(zvalues[tempindex]) * sinh(1/zvalues[tempindex]) elseif @formula1 == 107 tempform1[tempindex] = sin(zvalues[tempindex]) * sinh(zvalues[tempindex]) elseif @formula1 == 108 tempform1[tempindex] = sin(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula1 == 109 zextra = sin(zvalues[tempindex]), temp2 = sinh(zvalues[tempindex]) tempform1[tempindex] = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1[tempindex] = sin(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 111 tempform1[tempindex] = cos(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 112 tempform1[tempindex] = sinh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 113 tempform1[tempindex] = cosh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula1 == 114 tempform1[tempindex] = sin(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 115 tempform1[tempindex] = cos(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 116 tempform1[tempindex] = sinh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 117 tempform1[tempindex] = cosh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula1 == 118 tempform1[tempindex] = exp(zvalues[tempindex]*zvalues[tempindex]) elseif @formula1 == 119 tempform1[tempindex] = exp(-(zvalues[tempindex]*zvalues[tempindex])) elseif @formula1 == 120 tempform1[tempindex] = exp(1/(zvalues[tempindex]*zvalues[tempindex])) else ; @formula1 == 121 tempform1[tempindex] = exp(-1/(zvalues[tempindex]*zvalues[tempindex])) endif ; formula1 ; Execute 2nd formula selection if @formula2 == 0 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 1 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 2 zextra = zvalues[tempindex] * zvalues[tempindex] tempform2[tempindex] = zextra * zextra elseif @formula2 == 3 tempform2[tempindex] = zvalues[tempindex] ^ @power2 elseif @formula2 == 4 tempform2[tempindex] = 1/zvalues[tempindex] elseif @formula2 == 5 tempform2[tempindex] = sqrt(zvalues[tempindex]) elseif @formula2 == 6 tempform2[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] ) elseif @formula2 == 7 tempform2[tempindex] = log(zvalues[tempindex]) elseif @formula2 == 8 tempform2[tempindex] = exp( zvalues[tempindex]) elseif @formula2 == 9 tempform2[tempindex] = zvalues[tempindex]^zvalues[tempindex] elseif @formula2 == 10 tempform2[tempindex] = sin( zvalues[tempindex] ) elseif @formula2 == 11 tempform2[tempindex] = cos( zvalues[tempindex] ) elseif @formula2 == 12 tempform2[tempindex] = tan( zvalues[tempindex] ) elseif @formula2 == 13 tempform2[tempindex] = asin( zvalues[tempindex] ) elseif @formula2 == 14 tempform2[tempindex] = acos( zvalues[tempindex] ) elseif @formula2 == 15 tempform2[tempindex] = atan( zvalues[tempindex] ) elseif @formula2 == 16 tempform2[tempindex] = sinh( zvalues[tempindex] ) elseif @formula2 == 17 tempform2[tempindex] = cosh( zvalues[tempindex] ) elseif @formula2 == 18 tempform2[tempindex] = tanh( zvalues[tempindex] ) elseif @formula2 == 19 tempform2[tempindex] = asinh( zvalues[tempindex] ) elseif @formula2 == 20 tempform2[tempindex] = acosh( zvalues[tempindex] ) elseif @formula2 == 21 tempform2[tempindex] = atanh( zvalues[tempindex] ) elseif @formula2 == 22 tempform2[tempindex] = log( 1/zvalues[tempindex] ) elseif @formula2 == 23 tempform2[tempindex] = log( log( zvalues[tempindex] )) elseif @formula2 == 24 tempform2[tempindex] = exp( -zvalues[tempindex] ) elseif @formula2 == 25 tempform2[tempindex] = exp( 1/zvalues[tempindex] ) elseif @formula2 == 26 tempform2[tempindex] = zvalues[tempindex]^(-zvalues[tempindex]) elseif @formula2 == 27 zextra = sin( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 28 zextra = cos( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 29 zextra = tan( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 30 tempform2[tempindex] = cotan( zvalues[tempindex] ) elseif @formula2 == 31 tempform2[tempindex] = 1/cos( zvalues[tempindex] ) elseif @formula2 == 32 tempform2[tempindex] = 1/sin( zvalues[tempindex] ) elseif @formula2 == 33 zextra = cotan( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 36 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform2[tempindex] = zvalues[tempindex]^zextra elseif @formula2 == 37 zextra = zvalues[tempindex]^(zvalues[tempindex]) tempform2[tempindex] = 1/( zvalues[tempindex]^zextra ) elseif @formula2 == 38 tempform2[tempindex] = log(-zvalues[tempindex]) elseif @formula2 == 39 tempform2[tempindex] = 1/log( zvalues[tempindex] ) elseif @formula2 == 40 tempform2[tempindex] = zvalues[tempindex] * log( zvalues[tempindex] ) elseif @formula2 == 41 tempform2[tempindex] = sin( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 42 tempform2[tempindex] = cos( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 43 tempform2[tempindex] = sin( zvalues[tempindex] ) * cos( zvalues[tempindex] ) elseif @formula2 == 44 tempform2[tempindex] = sin( zvalues[tempindex]^2 ) elseif @formula2 == 45 tempform2[tempindex] = exp( -1/zvalues[tempindex] ) elseif @formula2 == 46 tempform2[tempindex] = zvalues[tempindex] * exp( zvalues[tempindex] ) elseif @formula2 == 47 tempform2[tempindex] = zvalues[tempindex] * exp( -zvalues[tempindex] ) elseif @formula2 == 48 tempform2[tempindex] = zvalues[tempindex] * exp( 1/zvalues[tempindex] ) elseif @formula2 == 49 tempform2[tempindex] = zvalues[tempindex] * exp( -1/zvalues[tempindex] ) elseif @formula2 == 50 tempform2[tempindex] = zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] elseif @formula2 == 51 tempform2[tempindex] = 1 / ( zvalues[tempindex] * zvalues[tempindex] * zvalues[tempindex] ) elseif @formula2 == 52 tempform2[tempindex] = atan( 1 / zvalues[tempindex] ) elseif @formula2 == 53 tempform2[tempindex] = acos( 1 / zvalues[tempindex] ) elseif @formula2 == 54 tempform2[tempindex] = asin( 1 / zvalues[tempindex] ) elseif @formula2 == 55 tempform2[tempindex] = tan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 56 tempform2[tempindex] = cotan( zvalues[tempindex] ) / zvalues[tempindex] elseif @formula2 == 57 tempform2[tempindex] = 1 / ( zvalues[tempindex] * cos( zvalues[tempindex] )) elseif @formula2 == 58 tempform2[tempindex] = 1 / ( zvalues[tempindex] * sin( zvalues[tempindex] )) elseif @formula2 == 59 tempform2[tempindex] = zvalues[tempindex] * sin( zvalues[tempindex] ) elseif @formula2 == 60 tempform2[tempindex] = zvalues[tempindex] * cos( zvalues[tempindex] ) elseif @formula2 == 61 tempform2[tempindex] = zvalues[tempindex] * tan( zvalues[tempindex] ) elseif @formula2 == 62 tempform2[tempindex] = zvalues[tempindex] * cotan( zvalues[tempindex] ) elseif @formula2 == 63 tempform2[tempindex] = zvalues[tempindex]/cos( zvalues[tempindex] ) elseif @formula2 == 64 tempform2[tempindex] = zvalues[tempindex]/sin( zvalues[tempindex] ) elseif @formula2 == 65 tempform2[tempindex] = sin( 1/zvalues[tempindex] ) elseif @formula2 == 66 tempform2[tempindex] = cos( 1/zvalues[tempindex] ) elseif @formula2 == 67 tempform2[tempindex] = tan( 1/zvalues[tempindex] ) elseif @formula2 == 68 tempform2[tempindex] = cotan( 1/zvalues[tempindex] ) elseif @formula2 == 69 tempform2[tempindex] = 1/cos( 1/zvalues[tempindex] ) elseif @formula2 == 70 tempform2[tempindex] = 1/sin( 1/zvalues[tempindex] ) elseif @formula2 == 71 tempform2[tempindex] = cotanh( zvalues[tempindex] ) elseif @formula2 == 72 tempform2[tempindex] = 1/cosh( zvalues[tempindex] ) elseif @formula2 == 73 tempform2[tempindex] = 1/sinh( zvalues[tempindex] ) elseif @formula2 == 74 tempform2[tempindex] = atanh( 1/zvalues[tempindex] ) elseif @formula2 == 75 tempform2[tempindex] = acosh( 1/zvalues[tempindex] ) elseif @formula2 == 76 tempform2[tempindex] = asinh( 1/zvalues[tempindex] ) elseif @formula2 == 77 tempform2[tempindex] = @coeff2a * zvalues[tempindex]^@exponent2a + \ @coeff2b * zvalues[tempindex]^@exponent2b + @coeff2c * zvalues[tempindex]^@exponent2c elseif @formula2 == 78 zextra = sinh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 79 zextra = cosh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 80 zextra = tanh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 81 zextra = cotanh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(zvalues[tempindex]) tempform2[tempindex] = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( zvalues[tempindex] ) tempform2[tempindex] = zextra * zextra elseif @formula2 == 84 tempform2[tempindex] = sinh(1/zvalues[tempindex]) elseif @formula2 == 85 tempform2[tempindex] = cosh(1/zvalues[tempindex]) elseif @formula2 == 86 tempform2[tempindex] = tanh(1/zvalues[tempindex]) elseif @formula2 == 87 tempform2[tempindex] = cotanh(1/zvalues[tempindex]) elseif @formula2 == 88 tempform2[tempindex] = (1,0)/cosh(1/zvalues[tempindex]) elseif @formula2 == 89 tempform2[tempindex] = (1,0)/sinh(1/zvalues[tempindex]) elseif @formula2 == 90 tempform2[tempindex] = sin( zvalues[tempindex] ) * tan(zvalues[tempindex]) elseif @formula2 == 91 tempform2[tempindex] = sinh(zvalues[tempindex]) * tanh(zvalues[tempindex]) elseif @formula2 == 92 tempform2[tempindex] = sinh(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula2 == 93 temp2 = sinh(zvalues[tempindex]), zextra = cosh(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(zvalues[tempindex]), zextra = cos(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/zvalues[tempindex] tempform2[tempindex] = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/zvalues[tempindex] ) tempform2[tempindex] = zextra*zextra elseif @formula2 == 97 tempform2[tempindex] = sin(zvalues[tempindex]) * cos(1/zvalues[tempindex]) elseif @formula2 == 98 tempform2[tempindex] = sin(zvalues[tempindex]) * sin(1/zvalues[tempindex]) elseif @formula2 == 99 zextra = log(zvalues[tempindex]) tempform2[tempindex] = zextra*zextra elseif @formula2 == 100 tempform2[tempindex] = sin(zvalues[tempindex]) * sin(2*zvalues[tempindex]) elseif @formula2 == 101 tempform2[tempindex] = exp(2*zvalues[tempindex]) elseif @formula2 == 102 tempform2[tempindex] = exp(-2*zvalues[tempindex]) elseif @formula2 == 103 zextra = 1/zvalues[tempindex] tempform2[tempindex] = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/zvalues[tempindex] ) tempform2[tempindex] = zextra*zextra elseif @formula2 == 105 tempform2[tempindex] = sinh(zvalues[tempindex]) * cosh(1/zvalues[tempindex]) elseif @formula2 == 106 tempform2[tempindex] = sinh(zvalues[tempindex]) * sinh(1/zvalues[tempindex]) elseif @formula2 == 107 tempform2[tempindex] = sin(zvalues[tempindex]) * sinh(zvalues[tempindex]) elseif @formula2 == 108 tempform2[tempindex] = sin(zvalues[tempindex]) * cosh(zvalues[tempindex]) elseif @formula2 == 109 zextra = sin(zvalues[tempindex]), temp2 = sinh(zvalues[tempindex]) tempform2[tempindex] = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2[tempindex] = sin(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 111 tempform2[tempindex] = cos(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 112 tempform2[tempindex] = sinh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 113 tempform2[tempindex] = cosh(zvalues[tempindex])*exp(zvalues[tempindex]) elseif @formula2 == 114 tempform2[tempindex] = sin(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 115 tempform2[tempindex] = cos(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 116 tempform2[tempindex] = sinh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 117 tempform2[tempindex] = cosh(zvalues[tempindex])*log(zvalues[tempindex]) elseif @formula2 == 118 tempform2[tempindex] = exp(zvalues[tempindex]*zvalues[tempindex]) elseif @formula2 == 119 tempform2[tempindex] = exp(-(zvalues[tempindex]*zvalues[tempindex])) elseif @formula2 == 120 tempform2[tempindex] = exp(1/(zvalues[tempindex]*zvalues[tempindex])) elseif @formula2 == 121 tempform2[tempindex] = exp(-1/(zvalues[tempindex]*zvalues[tempindex])) endif ; formula2 zvalues[tempindex] = (1-@blend)*tempform1[tempindex] + @blend*tempform2[tempindex] if @pmode != 1 zvalues[tempindex] = zvalues[tempindex] + jcarray[tempindex] endif ; pmode tempindex = tempindex + 1 endwhile ; tempindex ; Assign proper #z value for bailout test ; If embossed, assign proper color index to real(#z), and set imag(#z) ; to a large value if finished so that bailout will occur if @emboss tempindex = 0 while tempindex < maxindex if bailiter[tempindex] == 0 if ( cabs(zvalues[tempindex]) >= @bail ) bailiter[tempindex] = iteration bailcount = bailcount + 1 endif ; cabs if @evariable == 1 ; real crossings if real(zvalues[tempindex]) > 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; real elseif @evariable == 2 ; imag crossings if imag(zvalues[tempindex]) > 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; imag elseif @evariable == 3 ; angle wrappings if atan2(zvalues[tempindex]) < 0 testvalue[tempindex] = testvalue[tempindex] + 1 endif ; atan2 endif ; @evariable endif ; bailiter tempindex = tempindex + 1 endwhile ; tempindex ; See if all the test points have bailed out yet; if so,we're done and ; can assign a color value if bailcount == @testpoints ; all done if @evariable != 0 ; copy test values to the bailiter array for convenience tempindex = 0 while tempindex < maxindex bailiter[tempindex] = testvalue[tempindex] tempindex = tempindex + 1 endwhile ; tempindex endif ; @evariable if @testpoints == 2 if @type2 == 0 ; original if bailiter[0] > bailiter[1] z = (0.9,1e30) elseif bailiter[0] < bailiter[1] z = (0.1, 1e30) else z = (0.5,1e30) endif ; bailiter elseif @type2 == 1 ; two-tone if bailiter[0] == bailiter[1] z = (0.1,1e30) else z = (0.9,1e30) endif ; bailiter endif ; @type2 elseif @testpoints == 3 if @type3 == 0 if ( bailiter[0] == bailiter[1] ) && ( bailiter[1] == bailiter[2] ) z = (0.67,1e30) elseif ( bailiter[0] == bailiter[1] ) || ( bailiter[1] == bailiter[2] ) || \ ( bailiter[0] == bailiter[2] ) z = (0.33,1e30) elseif ( ( bailiter[0] > bailiter[1] ) && ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] < bailiter[0] ) ) || ( ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] > bailiter[0] ) && ( bailiter[0] < bailiter[1] ) ) || \ ( ( bailiter[2] > bailiter[0] ) && ( bailiter[0] > bailiter[1] ) && \ ( bailiter[1] < bailiter[2] ) ) ; counterclockwise z = (0.9,1e30) else ; clockwise z = (0.1,1e30) endif ; bailiter elseif @type3 == 1 if ( bailiter[0] == bailiter[1] ) || ( bailiter[1] == bailiter[2] ) || \ ( bailiter[0] == bailiter[2] ) ; any are equal z = (0.5,1e30) elseif ( ( bailiter[0] > bailiter[1] ) && ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] < bailiter[0] ) ) || ( ( bailiter[1] > bailiter[2] ) && \ ( bailiter[2] > bailiter[0] ) && ( bailiter[0] < bailiter[1] ) ) || \ ( ( bailiter[2] > bailiter[0] ) && ( bailiter[0] > bailiter[1] ) && \ ( bailiter[1] < bailiter[2] ) ) ; counterclockwise z = (0.9,1e30) else ; clockwise z = (0.1,1e30) endif ; bailiter elseif @type3 == 2 ; two-tone if ( bailiter[0] == bailiter[1] ) && ( bailiter[1] == bailiter[2] ) ; all equal z = (0.9,1e30) else z = (0.1,1e30) endif ; bailiter endif ; @type3 endif ; @testpoints else ; all test points haven't bailed yet z = (0.05,0.05) endif ; bailcount else if @pixelmode z = #pixel + @pixelblend*zvalues[0] else z = zvalues[0] endif ; @pixelmode endif ; @emboss bailout: |z| < @bail default: title = "BlendMan Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param pixelmode caption = "Pixel Mode?" default = FALSE hint = "If enabled, the selected Mandelbrot formulas are used to slightly modify \ the pixel coordinates, resulting in a perturbed pixel-type formula. \ The extent of the perturbation is controlled with param 'Pixel Blend'. \ Use a low iteration count and Inside coloring, since the affect is cumulative. \ Not available in 'Emboss' mode" visible = !@emboss endparam param pixelblend caption = "Pixel Blend" default = 1.0 hint = "If 'Pixel Mode' is enabled, this param controls the amount of the \ Mandelbrot formula that is blended into the pixel coordinates" visible = @pixelmode endparam param emboss caption = "Emboss?" default = FALSE hint = "If enabled, special embossing algorithm is implemented. The embossing \ method is intended to be used only with the special coloring formula \ 'jam-Emboss' in folder jam2.ucl. Not available in 'Pixel Mode'" visible = !@pixelmode endparam param testpoints caption = "Test Points" default = 3 min = 2 max = 3 hint = "If 'Emboss' is enabled, this is the number of test points to be computed for \ each pixel. Range is 2-5 (integer). The bigger the number, the slower the \ calculation" visible = @emboss endparam param type2 caption = "2-Pt Flavor" default = 0 enum = "Original" "Two-Tone" hint = "If 'Emboss' is enabled and 'Test Points' is set to 2, then this \ param defines the type of test to be performed in the calculation" visible = @emboss && (@testpoints == 2) endparam param type3 caption = "3-Pt Flavor" default = 0 enum = "A" "B" "C" hint = "If 'Emboss' is enabled and 'Test Points' is set to 3, then this \ param defines the type of test to be performed in the calculation" visible = @emboss && (@testpoints == 3) endparam param evariable caption = "Emboss Variable" enum = "Iteration" "Real" "Imag" "Angle" default = 0 hint = "This param describes which variable is tracked to define the embossing" visible = @emboss endparam param lightangle caption = "Light Angle" default = 0.0 min = 0.0 max = 360.0 hint = "If 'Emboss' is enabled, this param can shift the lighting pattern. Range \ is 0 - 360 degrees" visible = @emboss endparam param contourfactor caption = "Contour Size" default = 1.0 min = 0.0 hint = "If 'Emboss' is enabled, this param affects the size of the contours" visible = @emboss endparam param blend caption = "Formula Blend" default = 0.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. This is the fraction of Formula 2 that is \ blended into Formula 1; at 0.0, final #z is solely from Formula 1, \ while at 1.0, #z is determined solely by Formula 2" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-blendMan" perturbation = #pixel bail = bail pixelmode = pixelmode pixelblend = pixelblend emboss = emboss testpoints = testpoints type2 = type2 type3 = type3 evariable = evariable lightangle = lightangle contourfactor = contourfactor blend = blend formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-N-blend { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified blending together of the two. ; Differs from BlendMan in that blending occurs only once every N iterations. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) int iteration = 0, int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra elseif @formula1 == 30 tempform1 = cotan( #z ) elseif @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) elseif @formula1 == 60 tempform1 = #z * cos( #z ) elseif @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) elseif @formula1 == 90 tempform1 = sin( #z ) * tan(#z) elseif @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) elseif @formula1 == 117 tempform1 = cosh(#z)*log(#z) elseif @formula1 == 118 tempform1 = exp(#z*#z) elseif @formula1 == 119 tempform1 = exp(-(#z*#z)) elseif @formula1 == 120 tempform1 = exp(1/(#z*#z)) else ; @formula1 == 121 tempform1 = exp(-1/(#z*#z)) endif ; @formula1 if remainder == 0 if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 == 3 tempform2 = #z ^ @power1 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra elseif @formula2 == 30 tempform2 = cotan( #z ) elseif @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) elseif @formula2 == 60 tempform2 = #z * cos( #z ) elseif @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) elseif @formula2 == 90 tempform2 = sin( #z ) * tan(#z) elseif @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) elseif @formula2 == 117 tempform2 = cosh(#z)*log(#z) elseif @formula2 == 118 tempform2 = exp(#z*#z) elseif @formula2 == 119 tempform2 = exp(-(#z*#z)) elseif @formula2 == 120 tempform2 = exp(1/(#z*#z)) else ; @formula2 == 121 tempform2 = exp(-1/(#z*#z)) endif ; @formula2 #z = (1-@blend)*tempform1 + @blend*tempform2 else #z = tempform1 endif ; remainder if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "N-Blend" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Formula Blend" default = 0.0 hint = "Range is 0.0 - 1.0. This is the fraction of Formula 2 that is \ blended into Formula 1; at 0.0, final #z is solely from Formula 1, \ while at 1.0, #z is determined solely by Formula 2" endparam param freq caption = "N, Blend Freq" default = 10 min = 1 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formula 2 is blended in every N iters" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 visible = !@biomorph hint = "Value needed to 'escape' to infinity" endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-N-blend-J" jconstant = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype blend = blend freq = freq formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-N-blend-J { ; jam 011217 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified blending together of the two. ; Differs from BlendMan in that blending occurs only once every N iterations. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) int iteration = 0, int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra elseif @formula1 == 30 tempform1 = cotan( #z ) elseif @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) elseif @formula1 == 60 tempform1 = #z * cos( #z ) elseif @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) elseif @formula1 == 90 tempform1 = sin( #z ) * tan(#z) elseif @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) elseif @formula1 == 117 tempform1 = cosh(#z)*log(#z) elseif @formula1 == 118 tempform1 = exp(#z*#z) elseif @formula1 == 119 tempform1 = exp(-(#z*#z)) elseif @formula1 == 120 tempform1 = exp(1/(#z*#z)) else ; @formula1 == 121 tempform1 = exp(-1/(#z*#z)) endif ; @formula1 if remainder == 0 if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 == 3 tempform2 = #z ^ @power1 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra elseif @formula2 == 30 tempform2 = cotan( #z ) elseif @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) elseif @formula2 == 60 tempform2 = #z * cos( #z ) elseif @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) elseif @formula2 == 90 tempform2 = sin( #z ) * tan(#z) elseif @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) elseif @formula2 == 117 tempform2 = cosh(#z)*log(#z) elseif @formula2 == 118 tempform2 = exp(#z*#z) elseif @formula2 == 119 tempform2 = exp(-(#z*#z)) elseif @formula2 == 120 tempform2 = exp(1/(#z*#z)) else ; @formula2 == 121 tempform2 = exp(-1/(#z*#z)) endif ; @formula2 #z = (1-@blend)*tempform1 + @blend*tempform2 else #z = tempform1 endif ; remainder if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @zblendtrue if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "N-Blend Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Formula Blend" default = 0.0 hint = "Range is 0.0 - 1.0. This is the fraction of Formula 2 that is \ blended into Formula 1; at 0.0, final #z is solely from Formula 1, \ while at 1.0, #z is determined solely by Formula 2" endparam param freq caption = "N, Blend Freq" default = 10 min = 1 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formula 2 is blended in every N iters" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-N-blend" perturbation = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype blend = blend freq = freq formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-N-splice { ; jam 011218 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified splicing together of the real & imaginary ; parts from Formulas 1 & 2. ; Differs from SpliceMan in that splicing occurs only every N iterations, ; otherwise Formula 1 is executed exclusively. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) int iteration = 0, int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 <= 60 if @formula1 <= 30 if @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra else ; @formula1 == 30 tempform1 = cotan( #z ) endif ; formula1-3 else ; 30 < @formula1 <= 60 if @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) else ; @formula1 == 60 tempform1 = #z * cos( #z ) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 90 if @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) else ; @formula1 == 90 tempform1 = sin( #z ) * tan(#z) endif ; formula1-2 else ; 90 < @formula1 <= 120 if @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) else ; @formula1 == 117 tempform1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 if remainder == 0 ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 <= 60 if @formula2 <= 30 if @formula2 == 3 tempform2 = #z ^ @power2 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra else ; @formula2 == 30 tempform2 = cotan( #z ) endif ; formula2-3 else ; 30 < @formula2 <= 60 if @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) else ; @formula2 == 60 tempform2 = #z * cos( #z ) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 90 if @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) else ; @formula2 == 90 tempform2 = sin( #z ) * tan(#z) endif ; formula2-2 else ; 90 < @formula2 <= 120 if @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) else ; @formula2 == 117 tempform2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 if (@splicemode == 0) || (@splicemode == 4) zextra = real(tempform1) + flip(imag(tempform2)) elseif (@splicemode == 1) || (@splicemode == 5) zextra = imag(tempform1) + flip(real(tempform2)) elseif (@splicemode == 2) || (@splicemode == 6) zextra = real(tempform1) + flip(real(tempform2)) elseif (@splicemode == 3) || (@splicemode == 7) zextra = imag(tempform1) + flip(imag(tempform2)) endif ; @splicemode if @splicemode > 3 zextra = flip(zextra) endif ; @splicemode endif ; remainder if remainder == 0 #z = (1-@blend)*tempform1 + @blend*zextra else #z = tempform1 endif ; remainder if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @zblendtrue if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "N-Splice" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param splicemode caption = "Splice Mode" enum = "real#1 + imag#2" "imag#1 + real#2" "real#1 + real#2" "imag#1 + imag#2" \ "imag#2 + real#1" "real#2 + imag#1" "real#2 + real#1" "imag#2 + imag#1" default = 0 hint = "This param determines which components of the Formula 1 and Formula 2 \ iterates are combined to form the final #z; the final formula is #z = \ [Formula 1 part] + flip( [Formula 2 part])." endparam param blend caption = "Splice Blend" default = 1.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. At 1.0, final #z is fully spliced; at 0.0, \ no splicing has occurred and #z is the solely determined by Formula 1" endparam param freq caption = "N, Splice Freq" default = 10 min = 2 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formula 2 is spliced in only every N iters" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-N-splice-J" jconstant = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype splicemode = splicemode blend = blend freq = freq formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-N-splice-J { ; jam 011218 ; Mandelbrot/Julia in which 2 independent formulas ; are executed on each iteration, with the final #z resulting ; from a user-specified splicing together of the real & imaginary ; parts from Formulas 1 & 2. ; Differs from SpliceMan in that splicing occurs only every N iterations, ; otherwise Formula 1 is executed exclusively. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = (0,0) int iteration = 0, int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode zblend = z ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 <= 60 if @formula1 <= 30 if @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra else ; @formula1 == 30 tempform1 = cotan( #z ) endif ; formula1-3 else ; 30 < @formula1 <= 60 if @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) else ; @formula1 == 60 tempform1 = #z * cos( #z ) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 90 if @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) else ; @formula1 == 90 tempform1 = sin( #z ) * tan(#z) endif ; formula1-2 else ; 90 < @formula1 <= 120 if @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) else ; @formula1 == 117 tempform1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 if remainder == 0 ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 <= 60 if @formula2 <= 30 if @formula2 == 3 tempform2 = #z ^ @power2 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra else ; @formula2 == 30 tempform2 = cotan( #z ) endif ; formula2-3 else ; 30 < @formula2 <= 60 if @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) else ; @formula2 == 60 tempform2 = #z * cos( #z ) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 90 if @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) else ; @formula2 == 90 tempform2 = sin( #z ) * tan(#z) endif ; formula2-2 else ; 90 < @formula2 <= 120 if @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) else ; @formula2 == 117 tempform2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 if (@splicemode == 0) || (@splicemode == 4) zextra = real(tempform1) + flip(imag(tempform2)) elseif (@splicemode == 1) || (@splicemode == 5) zextra = imag(tempform1) + flip(real(tempform2)) elseif (@splicemode == 2) || (@splicemode == 6) zextra = real(tempform1) + flip(real(tempform2)) elseif (@splicemode == 3) || (@splicemode == 7) zextra = imag(tempform1) + flip(imag(tempform2)) endif ; @splicemode if @splicemode > 3 zextra = flip(zextra) endif ; @splicemode endif ; remainder if remainder == 0 #z = (1-@blend)*tempform1 + @blend*zextra else #z = tempform1 endif ; remainder if @zblendtrue z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @zblendtrue if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "N-Splice Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param splicemode caption = "Splice Mode" enum = "real#1 + imag#2" "imag#1 + real#2" "real#1 + real#2" "imag#1 + imag#2" \ "imag#2 + real#1" "real#2 + imag#1" "real#2 + real#1" "imag#2 + imag#1" default = 0 hint = "This param determines which components of the Formula 1 and Formula 2 \ iterates are combined to form the final #z; the final formula is #z = \ [Formula 1 part] + flip( [Formula 2 part])." endparam param blend caption = "Splice Blend" default = 1.0 min = -2.0 max = 2.0 hint = "Range is 0.0 - 1.0. At 1.0, final #z is fully spliced; at 0.0, \ no splicing has occurred and #z is the solely determined by Formula 1" endparam param freq caption = "N, Splice Freq" default = 10 min = 2 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formula 2 is spliced in only every N iters" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the second formula to be iterated. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param zblendtrue caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @zblendtrue == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @zblendtrue == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-N-splice" perturbation = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype splicemode = splicemode blend = blend freq = freq formula1 = formula1 formula2 = formula2 power1 = power1 power2 = power2 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c zblendtrue = zblendtrue weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-3wayBlend { ; jam 011217 ; Mandelbrot/Julia in which 3 independent formulas ; are executed, with the final #z resulting ; from a user-specified blending together of the three. ; Blending occurs only once every N iterations. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant global: float weightsum = 1/(@weight1 + @weight2 + @weight3) init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = complex tempform3 = (0,0) int iteration = 0, int remainder = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra elseif @formula1 == 30 tempform1 = cotan( #z ) elseif @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) elseif @formula1 == 60 tempform1 = #z * cos( #z ) elseif @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) elseif @formula1 == 90 tempform1 = sin( #z ) * tan(#z) elseif @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) elseif @formula1 == 117 tempform1 = cosh(#z)*log(#z) elseif @formula1 == 118 tempform1 = exp(#z*#z) elseif @formula1 == 119 tempform1 = exp(-(#z*#z)) elseif @formula1 == 120 tempform1 = exp(1/(#z*#z)) elseif @formula1 == 121 tempform1 = exp(-1/(#z*#z)) else ; @formula1 == 122 tempform1 = #z endif ; formula1 if (remainder == 0) && (iteration > @skip) ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 == 3 tempform2 = #z ^ @power1 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra elseif @formula2 == 30 tempform2 = cotan( #z ) elseif @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) elseif @formula2 == 60 tempform2 = #z * cos( #z ) elseif @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 if !@fixbug tempform2 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c else tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c endif elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) elseif @formula2 == 90 tempform2 = sin( #z ) * tan(#z) elseif @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) elseif @formula2 == 117 tempform2 = cosh(#z)*log(#z) elseif @formula2 == 118 tempform2 = exp(#z*#z) elseif @formula2 == 119 tempform2 = exp(-(#z*#z)) elseif @formula2 == 120 tempform2 = exp(1/(#z*#z)) elseif @formula2 == 121 tempform2 = exp(-1/(#z*#z)) else ; @formula2 == 122 tempform2 = #z endif ; formula2 ; Execute 3rd formula selection if @formula3 == 0 tempform3 = #z * #z elseif @formula3 == 1 tempform3 = #z * #z * #z elseif @formula3 == 2 zextra = #z * #z tempform3 = zextra * zextra elseif @formula3 == 3 tempform3 = #z ^ @power1 elseif @formula3 == 4 tempform3 = 1/#z elseif @formula3 == 5 tempform3 = sqrt(#z) elseif @formula3 == 6 tempform3 = 1 / ( #z * #z ) elseif @formula3 == 7 tempform3 = log(#z) elseif @formula3 == 8 tempform3 = exp( #z) elseif @formula3 == 9 tempform3 = #z^#z elseif @formula3 == 10 tempform3 = sin( #z ) elseif @formula3 == 11 tempform3 = cos( #z ) elseif @formula3 == 12 tempform3 = tan( #z ) elseif @formula3 == 13 tempform3 = asin( #z ) elseif @formula3 == 14 tempform3 = acos( #z ) elseif @formula3 == 15 tempform3 = atan( #z ) elseif @formula3 == 16 tempform3 = sinh( #z ) elseif @formula3 == 17 tempform3 = cosh( #z ) elseif @formula3 == 18 tempform3 = tanh( #z ) elseif @formula3 == 19 tempform3 = asinh( #z ) elseif @formula3 == 20 tempform3 = acosh( #z ) elseif @formula3 == 21 tempform3 = atanh( #z ) elseif @formula3 == 22 tempform3 = log( 1/#z ) elseif @formula3 == 23 tempform3 = log( log( #z )) elseif @formula3 == 24 tempform3 = exp( -#z ) elseif @formula3 == 25 tempform3 = exp( 1/#z ) elseif @formula3 == 26 tempform3 = #z^(-#z) elseif @formula3 == 27 zextra = sin( #z ) tempform3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) tempform3 = zextra * zextra elseif @formula3 == 29 zextra = tan( #z ) tempform3 = zextra * zextra elseif @formula3 == 30 tempform3 = cotan( #z ) elseif @formula3 == 31 tempform3 = 1/cos( #z ) elseif @formula3 == 32 tempform3 = 1/sin( #z ) elseif @formula3 == 33 zextra = cotan( #z ) tempform3 = zextra * zextra elseif @formula3 == 34 zextra = 1/cos( #z ) tempform3 = zextra * zextra elseif @formula3 == 35 zextra = 1/sin( #z ) tempform3 = zextra * zextra elseif @formula3 == 36 zextra = #z^(#z) tempform3 = #z^zextra elseif @formula3 == 37 zextra = #z^(#z) tempform3 = 1/( #z^zextra ) elseif @formula3 == 38 tempform3 = log(-#z) elseif @formula3 == 39 tempform3 = 1/log( #z ) elseif @formula3 == 40 tempform3 = #z * log( #z ) elseif @formula3 == 41 tempform3 = sin( #z ) / #z elseif @formula3 == 42 tempform3 = cos( #z ) / #z elseif @formula3 == 43 tempform3 = sin( #z ) * cos( #z ) elseif @formula3 == 44 tempform3 = sin( #z^2 ) elseif @formula3 == 45 tempform3 = exp( -1/#z ) elseif @formula3 == 46 tempform3 = #z * exp( #z ) elseif @formula3 == 47 tempform3 = #z * exp( -#z ) elseif @formula3 == 48 tempform3 = #z * exp( 1/#z ) elseif @formula3 == 49 tempform3 = #z * exp( -1/#z ) elseif @formula3 == 50 tempform3 = #z * #z * #z elseif @formula3 == 51 tempform3 = 1 / ( #z * #z * #z ) elseif @formula3 == 52 tempform3 = atan( 1 / #z ) elseif @formula3 == 53 tempform3 = acos( 1 / #z ) elseif @formula3 == 54 tempform3 = asin( 1 / #z ) elseif @formula3 == 55 tempform3 = tan( #z ) / #z elseif @formula3 == 56 tempform3 = cotan( #z ) / #z elseif @formula3 == 57 tempform3 = 1 / ( #z * cos( #z )) elseif @formula3 == 58 tempform3 = 1 / ( #z * sin( #z )) elseif @formula3 == 59 tempform3 = #z * sin( #z ) elseif @formula3 == 60 tempform3 = #z * cos( #z ) elseif @formula3 == 61 tempform3 = #z * tan( #z ) elseif @formula3 == 62 tempform3 = #z * cotan( #z ) elseif @formula3 == 63 tempform3 = #z/cos( #z ) elseif @formula3 == 64 tempform3 = #z/sin( #z ) elseif @formula3 == 65 tempform3 = sin( 1/#z ) elseif @formula3 == 66 tempform3 = cos( 1/#z ) elseif @formula3 == 67 tempform3 = tan( 1/#z ) elseif @formula3 == 68 tempform3 = cotan( 1/#z ) elseif @formula3 == 69 tempform3 = 1/cos( 1/#z ) elseif @formula3 == 70 tempform3 = 1/sin( 1/#z ) elseif @formula3 == 71 tempform3 = cotanh( #z ) elseif @formula3 == 72 tempform3 = 1/cosh( #z ) elseif @formula3 == 73 tempform3 = 1/sinh( #z ) elseif @formula3 == 74 tempform3 = atanh( 1/#z ) elseif @formula3 == 75 tempform3 = acosh( 1/#z ) elseif @formula3 == 76 tempform3 = asinh( 1/#z ) elseif @formula3 == 77 if !@fixbug tempform3 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c else tempform3 = @coeff3a * #z^@exponent3a + @coeff3b * #z^@exponent3b + @coeff3c * #z^@exponent3c endif elseif @formula3 == 78 zextra = sinh(#z) tempform3 = zextra * zextra elseif @formula3 == 79 zextra = cosh( #z ) tempform3 = zextra * zextra elseif @formula3 == 80 zextra = tanh(#z) tempform3 = zextra * zextra elseif @formula3 == 81 zextra = cotanh( #z ) tempform3 = zextra * zextra elseif @formula3 == 82 zextra = (1,0)/cosh(#z) tempform3 = zextra * zextra elseif @formula3 == 83 zextra = (1,0) / sinh( #z ) tempform3 = zextra * zextra elseif @formula3 == 84 tempform3 = sinh(1/#z) elseif @formula3 == 85 tempform3 = cosh(1/#z) elseif @formula3 == 86 tempform3 = tanh(1/#z) elseif @formula3 == 87 tempform3 = cotanh(1/#z) elseif @formula3 == 88 tempform3 = (1,0)/cosh(1/#z) elseif @formula3 == 89 tempform3 = (1,0)/sinh(1/#z) elseif @formula3 == 90 tempform3 = sin( #z ) * tan(#z) elseif @formula3 == 91 tempform3 = sinh(#z) * tanh(#z) elseif @formula3 == 92 tempform3 = sinh(#z) * cosh(#z) elseif @formula3 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 94 temp2 = sin(#z), zextra = cos(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 95 zextra = 1/#z tempform3 = sin(zextra)*cos(zextra) elseif @formula3 == 96 zextra = sin( 1/#z ) tempform3 = zextra*zextra elseif @formula3 == 97 tempform3 = sin(#z) * cos(1/#z) elseif @formula3 == 98 tempform3 = sin(#z) * sin(1/#z) elseif @formula3 == 99 zextra = log(#z) tempform3 = zextra*zextra elseif @formula3 == 100 tempform3 = sin(#z) * sin(2*#z) elseif @formula3 == 101 tempform3 = exp(2*#z) elseif @formula3 == 102 tempform3 = exp(-2*#z) elseif @formula3 == 103 zextra = 1/#z tempform3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 104 zextra = sinh( 1/#z ) tempform3 = zextra*zextra elseif @formula3 == 105 tempform3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 106 tempform3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 107 tempform3 = sin(#z) * sinh(#z) elseif @formula3 == 108 tempform3 = sin(#z) * cosh(#z) elseif @formula3 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 110 tempform3 = sin(#z)*exp(#z) elseif @formula3 == 111 tempform3 = cos(#z)*exp(#z) elseif @formula3 == 112 tempform3 = sinh(#z)*exp(#z) elseif @formula3 == 113 tempform3 = cosh(#z)*exp(#z) elseif @formula3 == 114 tempform3 = sin(#z)*log(#z) elseif @formula3 == 115 tempform3 = cos(#z)*log(#z) elseif @formula3 == 116 tempform3 = sinh(#z)*log(#z) elseif @formula3 == 117 tempform3 = cosh(#z)*log(#z) elseif @formula3 == 118 tempform3 = exp(#z*#z) elseif @formula3 == 119 tempform3 = exp(-(#z*#z)) elseif @formula3 == 120 tempform3 = exp(1/(#z*#z)) elseif @formula3 == 121 tempform3 = exp(-1/(#z*#z)) else ; @formula3 == 122 tempform3 = #z endif ; formula3 #z = weightsum*(@weight1*tempform1 + @weight2*tempform2 + @weight3*tempform3) else #z = tempform1 endif ; remainder if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "3-Way Blend" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param freq caption = "N, Blend Freq" default = 2 min = 1 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formulas 2 & 3 are blended in every N iters" endparam param skip caption = "Iters to Skip" default = 0 hint = "This is the number of iterations to skip before starting to blend in \ Formulas 2 and 3. Skipping an initial iteration can be useful if one of \ the blended formulas, such as 1/z or exp(1/z), performs poorly using the \ default Mandelbrot starting perturbation of (0,0)" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param weight1 caption = "Formula1 Weight" default = 1.0 hint = "This is the proportion of Formula 1 that is \ blended into the others every N iterations" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the second formula to be iterated; used only every N iters. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param weight2 caption = "Formula2 Weight" default = 1.0 hint = "This is the proportion of Formula 2 that is \ blended into the others every N iterations" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the third formula to be iterated; used only every N iters. \ For 'z^power', use parameter 'Power 3' to set power. For '3-term polynomial' set \ params 'Coeff 3a', 'Exponent 3a', 'Coeff 3b', 'Exponent 3b', 'Coeff 3c', \ 'Exponent 3c'." endparam param weight3 caption = "Formula3 Weight" default = 1.0 hint = "This is the proportion of Formula 3 that is \ blended into the others every N iterations" endparam param power3 caption = "Power 3" default = (7,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" visible = @formula3 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula3 == "3-term polynomial" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula3 == "3-term polynomial" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula3 == "3-term polynomial" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula3 == "3-term polynomial" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula3 == "3-term polynomial" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula3 == "3-term polynomial" endparam param fixbug caption = "Fix 3-Term Bug?" default = FALSE hint = "If either 'Formula 2' or 'Formula 3' is set to '3-term polynomial', \ then this option fixes an early bug. If not enabled, then both 'Formula 2' \ and 'Formula 3' use the 'Formula 1' coefficients and exponents, rather than \ the correct parameters" visible = ( (@formula2 == "3-term polynomial") || (@formula3 == "3-term polynomial") ) endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-3wayBlend-J" jconstant = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype freq = freq skip = skip formula1 = formula1 power1 = power1 weight1 = weight1 formula2 = formula2 power2 = power2 weight2 = weight2 formula3 = formula3 power3 = power3 weight3 = weight3 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c coeff3a = coeff3a exponent3a = exponent3a coeff3b = coeff3b exponent3b = exponent3b coeff3c = coeff3c exponent3c = exponent3c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc fixbug = fixbug pmode = pmode } jam-3wayBlend-J { ; jam 011217 ; Mandelbrot/Julia in which 3 independent formulas ; are executed, with the final #z resulting ; from a user-specified blending together of the three. ; Blending occurs only once every N iterations. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ( CoeffC * z^ExponentC ) + constant global: float weightsum = 1/(@weight1 + @weight2 + @weight3) init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex temp2 = (0,0) ; temp/spare scratch variable complex tempform1 = complex tempform2 = complex tempform3 = (0,0) int iteration = 0, int remainder = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @freq if @pmode != 0 #z = #z + jc endif ; pmode ; Execute 1st formula selection if @formula1 == 0 tempform1 = #z * #z elseif @formula1 == 1 tempform1 = #z * #z * #z elseif @formula1 == 2 zextra = #z * #z tempform1 = zextra * zextra elseif @formula1 == 3 tempform1 = #z ^ @power1 elseif @formula1 == 4 tempform1 = 1/#z elseif @formula1 == 5 tempform1 = sqrt(#z) elseif @formula1 == 6 tempform1 = 1 / ( #z * #z ) elseif @formula1 == 7 tempform1 = log(#z) elseif @formula1 == 8 tempform1 = exp( #z) elseif @formula1 == 9 tempform1 = #z^#z elseif @formula1 == 10 tempform1 = sin( #z ) elseif @formula1 == 11 tempform1 = cos( #z ) elseif @formula1 == 12 tempform1 = tan( #z ) elseif @formula1 == 13 tempform1 = asin( #z ) elseif @formula1 == 14 tempform1 = acos( #z ) elseif @formula1 == 15 tempform1 = atan( #z ) elseif @formula1 == 16 tempform1 = sinh( #z ) elseif @formula1 == 17 tempform1 = cosh( #z ) elseif @formula1 == 18 tempform1 = tanh( #z ) elseif @formula1 == 19 tempform1 = asinh( #z ) elseif @formula1 == 20 tempform1 = acosh( #z ) elseif @formula1 == 21 tempform1 = atanh( #z ) elseif @formula1 == 22 tempform1 = log( 1/#z ) elseif @formula1 == 23 tempform1 = log( log( #z )) elseif @formula1 == 24 tempform1 = exp( -#z ) elseif @formula1 == 25 tempform1 = exp( 1/#z ) elseif @formula1 == 26 tempform1 = #z^(-#z) elseif @formula1 == 27 zextra = sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 29 zextra = tan( #z ) tempform1 = zextra * zextra elseif @formula1 == 30 tempform1 = cotan( #z ) elseif @formula1 == 31 tempform1 = 1/cos( #z ) elseif @formula1 == 32 tempform1 = 1/sin( #z ) elseif @formula1 == 33 zextra = cotan( #z ) tempform1 = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( #z ) tempform1 = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( #z ) tempform1 = zextra * zextra elseif @formula1 == 36 zextra = #z^(#z) tempform1 = #z^zextra elseif @formula1 == 37 zextra = #z^(#z) tempform1 = 1/( #z^zextra ) elseif @formula1 == 38 tempform1 = log(-#z) elseif @formula1 == 39 tempform1 = 1/log( #z ) elseif @formula1 == 40 tempform1 = #z * log( #z ) elseif @formula1 == 41 tempform1 = sin( #z ) / #z elseif @formula1 == 42 tempform1 = cos( #z ) / #z elseif @formula1 == 43 tempform1 = sin( #z ) * cos( #z ) elseif @formula1 == 44 tempform1 = sin( #z^2 ) elseif @formula1 == 45 tempform1 = exp( -1/#z ) elseif @formula1 == 46 tempform1 = #z * exp( #z ) elseif @formula1 == 47 tempform1 = #z * exp( -#z ) elseif @formula1 == 48 tempform1 = #z * exp( 1/#z ) elseif @formula1 == 49 tempform1 = #z * exp( -1/#z ) elseif @formula1 == 50 tempform1 = #z * #z * #z elseif @formula1 == 51 tempform1 = 1 / ( #z * #z * #z ) elseif @formula1 == 52 tempform1 = atan( 1 / #z ) elseif @formula1 == 53 tempform1 = acos( 1 / #z ) elseif @formula1 == 54 tempform1 = asin( 1 / #z ) elseif @formula1 == 55 tempform1 = tan( #z ) / #z elseif @formula1 == 56 tempform1 = cotan( #z ) / #z elseif @formula1 == 57 tempform1 = 1 / ( #z * cos( #z )) elseif @formula1 == 58 tempform1 = 1 / ( #z * sin( #z )) elseif @formula1 == 59 tempform1 = #z * sin( #z ) elseif @formula1 == 60 tempform1 = #z * cos( #z ) elseif @formula1 == 61 tempform1 = #z * tan( #z ) elseif @formula1 == 62 tempform1 = #z * cotan( #z ) elseif @formula1 == 63 tempform1 = #z/cos( #z ) elseif @formula1 == 64 tempform1 = #z/sin( #z ) elseif @formula1 == 65 tempform1 = sin( 1/#z ) elseif @formula1 == 66 tempform1 = cos( 1/#z ) elseif @formula1 == 67 tempform1 = tan( 1/#z ) elseif @formula1 == 68 tempform1 = cotan( 1/#z ) elseif @formula1 == 69 tempform1 = 1/cos( 1/#z ) elseif @formula1 == 70 tempform1 = 1/sin( 1/#z ) elseif @formula1 == 71 tempform1 = cotanh( #z ) elseif @formula1 == 72 tempform1 = 1/cosh( #z ) elseif @formula1 == 73 tempform1 = 1/sinh( #z ) elseif @formula1 == 74 tempform1 = atanh( 1/#z ) elseif @formula1 == 75 tempform1 = acosh( 1/#z ) elseif @formula1 == 76 tempform1 = asinh( 1/#z ) elseif @formula1 == 77 tempform1 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c elseif @formula1 == 78 zextra = sinh(#z) tempform1 = zextra * zextra elseif @formula1 == 79 zextra = cosh( #z ) tempform1 = zextra * zextra elseif @formula1 == 80 zextra = tanh(#z) tempform1 = zextra * zextra elseif @formula1 == 81 zextra = cotanh( #z ) tempform1 = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(#z) tempform1 = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( #z ) tempform1 = zextra * zextra elseif @formula1 == 84 tempform1 = sinh(1/#z) elseif @formula1 == 85 tempform1 = cosh(1/#z) elseif @formula1 == 86 tempform1 = tanh(1/#z) elseif @formula1 == 87 tempform1 = cotanh(1/#z) elseif @formula1 == 88 tempform1 = (1,0)/cosh(1/#z) elseif @formula1 == 89 tempform1 = (1,0)/sinh(1/#z) elseif @formula1 == 90 tempform1 = sin( #z ) * tan(#z) elseif @formula1 == 91 tempform1 = sinh(#z) * tanh(#z) elseif @formula1 == 92 tempform1 = sinh(#z) * cosh(#z) elseif @formula1 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 94 temp2 = sin(#z), zextra = cos(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 95 zextra = 1/#z tempform1 = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 97 tempform1 = sin(#z) * cos(1/#z) elseif @formula1 == 98 tempform1 = sin(#z) * sin(1/#z) elseif @formula1 == 99 zextra = log(#z) tempform1 = zextra*zextra elseif @formula1 == 100 tempform1 = sin(#z) * sin(2*#z) elseif @formula1 == 101 tempform1 = exp(2*#z) elseif @formula1 == 102 tempform1 = exp(-2*#z) elseif @formula1 == 103 zextra = 1/#z tempform1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/#z ) tempform1 = zextra*zextra elseif @formula1 == 105 tempform1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 106 tempform1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 107 tempform1 = sin(#z) * sinh(#z) elseif @formula1 == 108 tempform1 = sin(#z) * cosh(#z) elseif @formula1 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform1 = temp2*temp2*zextra*zextra elseif @formula1 == 110 tempform1 = sin(#z)*exp(#z) elseif @formula1 == 111 tempform1 = cos(#z)*exp(#z) elseif @formula1 == 112 tempform1 = sinh(#z)*exp(#z) elseif @formula1 == 113 tempform1 = cosh(#z)*exp(#z) elseif @formula1 == 114 tempform1 = sin(#z)*log(#z) elseif @formula1 == 115 tempform1 = cos(#z)*log(#z) elseif @formula1 == 116 tempform1 = sinh(#z)*log(#z) elseif @formula1 == 117 tempform1 = cosh(#z)*log(#z) elseif @formula1 == 118 tempform1 = exp(#z*#z) elseif @formula1 == 119 tempform1 = exp(-(#z*#z)) elseif @formula1 == 120 tempform1 = exp(1/(#z*#z)) elseif @formula1 == 121 tempform1 = exp(-1/(#z*#z)) else ; @formula1 == 122 tempform1 = #z endif ; formula1 if (remainder == 0) && (iteration > @skip) ; Execute 2nd formula selection if @formula2 == 0 tempform2 = #z * #z elseif @formula2 == 1 tempform2 = #z * #z * #z elseif @formula2 == 2 zextra = #z * #z tempform2 = zextra * zextra elseif @formula2 == 3 tempform2 = #z ^ @power1 elseif @formula2 == 4 tempform2 = 1/#z elseif @formula2 == 5 tempform2 = sqrt(#z) elseif @formula2 == 6 tempform2 = 1 / ( #z * #z ) elseif @formula2 == 7 tempform2 = log(#z) elseif @formula2 == 8 tempform2 = exp( #z) elseif @formula2 == 9 tempform2 = #z^#z elseif @formula2 == 10 tempform2 = sin( #z ) elseif @formula2 == 11 tempform2 = cos( #z ) elseif @formula2 == 12 tempform2 = tan( #z ) elseif @formula2 == 13 tempform2 = asin( #z ) elseif @formula2 == 14 tempform2 = acos( #z ) elseif @formula2 == 15 tempform2 = atan( #z ) elseif @formula2 == 16 tempform2 = sinh( #z ) elseif @formula2 == 17 tempform2 = cosh( #z ) elseif @formula2 == 18 tempform2 = tanh( #z ) elseif @formula2 == 19 tempform2 = asinh( #z ) elseif @formula2 == 20 tempform2 = acosh( #z ) elseif @formula2 == 21 tempform2 = atanh( #z ) elseif @formula2 == 22 tempform2 = log( 1/#z ) elseif @formula2 == 23 tempform2 = log( log( #z )) elseif @formula2 == 24 tempform2 = exp( -#z ) elseif @formula2 == 25 tempform2 = exp( 1/#z ) elseif @formula2 == 26 tempform2 = #z^(-#z) elseif @formula2 == 27 zextra = sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 29 zextra = tan( #z ) tempform2 = zextra * zextra elseif @formula2 == 30 tempform2 = cotan( #z ) elseif @formula2 == 31 tempform2 = 1/cos( #z ) elseif @formula2 == 32 tempform2 = 1/sin( #z ) elseif @formula2 == 33 zextra = cotan( #z ) tempform2 = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( #z ) tempform2 = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( #z ) tempform2 = zextra * zextra elseif @formula2 == 36 zextra = #z^(#z) tempform2 = #z^zextra elseif @formula2 == 37 zextra = #z^(#z) tempform2 = 1/( #z^zextra ) elseif @formula2 == 38 tempform2 = log(-#z) elseif @formula2 == 39 tempform2 = 1/log( #z ) elseif @formula2 == 40 tempform2 = #z * log( #z ) elseif @formula2 == 41 tempform2 = sin( #z ) / #z elseif @formula2 == 42 tempform2 = cos( #z ) / #z elseif @formula2 == 43 tempform2 = sin( #z ) * cos( #z ) elseif @formula2 == 44 tempform2 = sin( #z^2 ) elseif @formula2 == 45 tempform2 = exp( -1/#z ) elseif @formula2 == 46 tempform2 = #z * exp( #z ) elseif @formula2 == 47 tempform2 = #z * exp( -#z ) elseif @formula2 == 48 tempform2 = #z * exp( 1/#z ) elseif @formula2 == 49 tempform2 = #z * exp( -1/#z ) elseif @formula2 == 50 tempform2 = #z * #z * #z elseif @formula2 == 51 tempform2 = 1 / ( #z * #z * #z ) elseif @formula2 == 52 tempform2 = atan( 1 / #z ) elseif @formula2 == 53 tempform2 = acos( 1 / #z ) elseif @formula2 == 54 tempform2 = asin( 1 / #z ) elseif @formula2 == 55 tempform2 = tan( #z ) / #z elseif @formula2 == 56 tempform2 = cotan( #z ) / #z elseif @formula2 == 57 tempform2 = 1 / ( #z * cos( #z )) elseif @formula2 == 58 tempform2 = 1 / ( #z * sin( #z )) elseif @formula2 == 59 tempform2 = #z * sin( #z ) elseif @formula2 == 60 tempform2 = #z * cos( #z ) elseif @formula2 == 61 tempform2 = #z * tan( #z ) elseif @formula2 == 62 tempform2 = #z * cotan( #z ) elseif @formula2 == 63 tempform2 = #z/cos( #z ) elseif @formula2 == 64 tempform2 = #z/sin( #z ) elseif @formula2 == 65 tempform2 = sin( 1/#z ) elseif @formula2 == 66 tempform2 = cos( 1/#z ) elseif @formula2 == 67 tempform2 = tan( 1/#z ) elseif @formula2 == 68 tempform2 = cotan( 1/#z ) elseif @formula2 == 69 tempform2 = 1/cos( 1/#z ) elseif @formula2 == 70 tempform2 = 1/sin( 1/#z ) elseif @formula2 == 71 tempform2 = cotanh( #z ) elseif @formula2 == 72 tempform2 = 1/cosh( #z ) elseif @formula2 == 73 tempform2 = 1/sinh( #z ) elseif @formula2 == 74 tempform2 = atanh( 1/#z ) elseif @formula2 == 75 tempform2 = acosh( 1/#z ) elseif @formula2 == 76 tempform2 = asinh( 1/#z ) elseif @formula2 == 77 if !@fixbug tempform2 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c else tempform2 = @coeff2a * #z^@exponent2a + @coeff2b * #z^@exponent2b + @coeff2c * #z^@exponent2c endif elseif @formula2 == 78 zextra = sinh(#z) tempform2 = zextra * zextra elseif @formula2 == 79 zextra = cosh( #z ) tempform2 = zextra * zextra elseif @formula2 == 80 zextra = tanh(#z) tempform2 = zextra * zextra elseif @formula2 == 81 zextra = cotanh( #z ) tempform2 = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(#z) tempform2 = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( #z ) tempform2 = zextra * zextra elseif @formula2 == 84 tempform2 = sinh(1/#z) elseif @formula2 == 85 tempform2 = cosh(1/#z) elseif @formula2 == 86 tempform2 = tanh(1/#z) elseif @formula2 == 87 tempform2 = cotanh(1/#z) elseif @formula2 == 88 tempform2 = (1,0)/cosh(1/#z) elseif @formula2 == 89 tempform2 = (1,0)/sinh(1/#z) elseif @formula2 == 90 tempform2 = sin( #z ) * tan(#z) elseif @formula2 == 91 tempform2 = sinh(#z) * tanh(#z) elseif @formula2 == 92 tempform2 = sinh(#z) * cosh(#z) elseif @formula2 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 94 temp2 = sin(#z), zextra = cos(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 95 zextra = 1/#z tempform2 = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 97 tempform2 = sin(#z) * cos(1/#z) elseif @formula2 == 98 tempform2 = sin(#z) * sin(1/#z) elseif @formula2 == 99 zextra = log(#z) tempform2 = zextra*zextra elseif @formula2 == 100 tempform2 = sin(#z) * sin(2*#z) elseif @formula2 == 101 tempform2 = exp(2*#z) elseif @formula2 == 102 tempform2 = exp(-2*#z) elseif @formula2 == 103 zextra = 1/#z tempform2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/#z ) tempform2 = zextra*zextra elseif @formula2 == 105 tempform2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 106 tempform2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 107 tempform2 = sin(#z) * sinh(#z) elseif @formula2 == 108 tempform2 = sin(#z) * cosh(#z) elseif @formula2 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform2 = temp2*temp2*zextra*zextra elseif @formula2 == 110 tempform2 = sin(#z)*exp(#z) elseif @formula2 == 111 tempform2 = cos(#z)*exp(#z) elseif @formula2 == 112 tempform2 = sinh(#z)*exp(#z) elseif @formula2 == 113 tempform2 = cosh(#z)*exp(#z) elseif @formula2 == 114 tempform2 = sin(#z)*log(#z) elseif @formula2 == 115 tempform2 = cos(#z)*log(#z) elseif @formula2 == 116 tempform2 = sinh(#z)*log(#z) elseif @formula2 == 117 tempform2 = cosh(#z)*log(#z) elseif @formula2 == 118 tempform2 = exp(#z*#z) elseif @formula2 == 119 tempform2 = exp(-(#z*#z)) elseif @formula2 == 120 tempform2 = exp(1/(#z*#z)) elseif @formula2 == 121 tempform2 = exp(-1/(#z*#z)) else ; @formula2 == 122 tempform2 = #z endif ; formula2 ; Execute 3rd formula selection if @formula3 == 0 tempform3 = #z * #z elseif @formula3 == 1 tempform3 = #z * #z * #z elseif @formula3 == 2 zextra = #z * #z tempform3 = zextra * zextra elseif @formula3 == 3 tempform3 = #z ^ @power1 elseif @formula3 == 4 tempform3 = 1/#z elseif @formula3 == 5 tempform3 = sqrt(#z) elseif @formula3 == 6 tempform3 = 1 / ( #z * #z ) elseif @formula3 == 7 tempform3 = log(#z) elseif @formula3 == 8 tempform3 = exp( #z) elseif @formula3 == 9 tempform3 = #z^#z elseif @formula3 == 10 tempform3 = sin( #z ) elseif @formula3 == 11 tempform3 = cos( #z ) elseif @formula3 == 12 tempform3 = tan( #z ) elseif @formula3 == 13 tempform3 = asin( #z ) elseif @formula3 == 14 tempform3 = acos( #z ) elseif @formula3 == 15 tempform3 = atan( #z ) elseif @formula3 == 16 tempform3 = sinh( #z ) elseif @formula3 == 17 tempform3 = cosh( #z ) elseif @formula3 == 18 tempform3 = tanh( #z ) elseif @formula3 == 19 tempform3 = asinh( #z ) elseif @formula3 == 20 tempform3 = acosh( #z ) elseif @formula3 == 21 tempform3 = atanh( #z ) elseif @formula3 == 22 tempform3 = log( 1/#z ) elseif @formula3 == 23 tempform3 = log( log( #z )) elseif @formula3 == 24 tempform3 = exp( -#z ) elseif @formula3 == 25 tempform3 = exp( 1/#z ) elseif @formula3 == 26 tempform3 = #z^(-#z) elseif @formula3 == 27 zextra = sin( #z ) tempform3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) tempform3 = zextra * zextra elseif @formula3 == 29 zextra = tan( #z ) tempform3 = zextra * zextra elseif @formula3 == 30 tempform3 = cotan( #z ) elseif @formula3 == 31 tempform3 = 1/cos( #z ) elseif @formula3 == 32 tempform3 = 1/sin( #z ) elseif @formula3 == 33 zextra = cotan( #z ) tempform3 = zextra * zextra elseif @formula3 == 34 zextra = 1/cos( #z ) tempform3 = zextra * zextra elseif @formula3 == 35 zextra = 1/sin( #z ) tempform3 = zextra * zextra elseif @formula3 == 36 zextra = #z^(#z) tempform3 = #z^zextra elseif @formula3 == 37 zextra = #z^(#z) tempform3 = 1/( #z^zextra ) elseif @formula3 == 38 tempform3 = log(-#z) elseif @formula3 == 39 tempform3 = 1/log( #z ) elseif @formula3 == 40 tempform3 = #z * log( #z ) elseif @formula3 == 41 tempform3 = sin( #z ) / #z elseif @formula3 == 42 tempform3 = cos( #z ) / #z elseif @formula3 == 43 tempform3 = sin( #z ) * cos( #z ) elseif @formula3 == 44 tempform3 = sin( #z^2 ) elseif @formula3 == 45 tempform3 = exp( -1/#z ) elseif @formula3 == 46 tempform3 = #z * exp( #z ) elseif @formula3 == 47 tempform3 = #z * exp( -#z ) elseif @formula3 == 48 tempform3 = #z * exp( 1/#z ) elseif @formula3 == 49 tempform3 = #z * exp( -1/#z ) elseif @formula3 == 50 tempform3 = #z * #z * #z elseif @formula3 == 51 tempform3 = 1 / ( #z * #z * #z ) elseif @formula3 == 52 tempform3 = atan( 1 / #z ) elseif @formula3 == 53 tempform3 = acos( 1 / #z ) elseif @formula3 == 54 tempform3 = asin( 1 / #z ) elseif @formula3 == 55 tempform3 = tan( #z ) / #z elseif @formula3 == 56 tempform3 = cotan( #z ) / #z elseif @formula3 == 57 tempform3 = 1 / ( #z * cos( #z )) elseif @formula3 == 58 tempform3 = 1 / ( #z * sin( #z )) elseif @formula3 == 59 tempform3 = #z * sin( #z ) elseif @formula3 == 60 tempform3 = #z * cos( #z ) elseif @formula3 == 61 tempform3 = #z * tan( #z ) elseif @formula3 == 62 tempform3 = #z * cotan( #z ) elseif @formula3 == 63 tempform3 = #z/cos( #z ) elseif @formula3 == 64 tempform3 = #z/sin( #z ) elseif @formula3 == 65 tempform3 = sin( 1/#z ) elseif @formula3 == 66 tempform3 = cos( 1/#z ) elseif @formula3 == 67 tempform3 = tan( 1/#z ) elseif @formula3 == 68 tempform3 = cotan( 1/#z ) elseif @formula3 == 69 tempform3 = 1/cos( 1/#z ) elseif @formula3 == 70 tempform3 = 1/sin( 1/#z ) elseif @formula3 == 71 tempform3 = cotanh( #z ) elseif @formula3 == 72 tempform3 = 1/cosh( #z ) elseif @formula3 == 73 tempform3 = 1/sinh( #z ) elseif @formula3 == 74 tempform3 = atanh( 1/#z ) elseif @formula3 == 75 tempform3 = acosh( 1/#z ) elseif @formula3 == 76 tempform3 = asinh( 1/#z ) elseif @formula3 == 77 if !@fixbug tempform3 = @coeff1a * #z^@exponent1a + @coeff1b * #z^@exponent1b + @coeff1c * #z^@exponent1c else tempform3 = @coeff3a * #z^@exponent3a + @coeff3b * #z^@exponent3b + @coeff3c * #z^@exponent3c endif elseif @formula3 == 78 zextra = sinh(#z) tempform3 = zextra * zextra elseif @formula3 == 79 zextra = cosh( #z ) tempform3 = zextra * zextra elseif @formula3 == 80 zextra = tanh(#z) tempform3 = zextra * zextra elseif @formula3 == 81 zextra = cotanh( #z ) tempform3 = zextra * zextra elseif @formula3 == 82 zextra = (1,0)/cosh(#z) tempform3 = zextra * zextra elseif @formula3 == 83 zextra = (1,0) / sinh( #z ) tempform3 = zextra * zextra elseif @formula3 == 84 tempform3 = sinh(1/#z) elseif @formula3 == 85 tempform3 = cosh(1/#z) elseif @formula3 == 86 tempform3 = tanh(1/#z) elseif @formula3 == 87 tempform3 = cotanh(1/#z) elseif @formula3 == 88 tempform3 = (1,0)/cosh(1/#z) elseif @formula3 == 89 tempform3 = (1,0)/sinh(1/#z) elseif @formula3 == 90 tempform3 = sin( #z ) * tan(#z) elseif @formula3 == 91 tempform3 = sinh(#z) * tanh(#z) elseif @formula3 == 92 tempform3 = sinh(#z) * cosh(#z) elseif @formula3 == 93 temp2 = sinh(#z), zextra = cosh(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 94 temp2 = sin(#z), zextra = cos(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 95 zextra = 1/#z tempform3 = sin(zextra)*cos(zextra) elseif @formula3 == 96 zextra = sin( 1/#z ) tempform3 = zextra*zextra elseif @formula3 == 97 tempform3 = sin(#z) * cos(1/#z) elseif @formula3 == 98 tempform3 = sin(#z) * sin(1/#z) elseif @formula3 == 99 zextra = log(#z) tempform3 = zextra*zextra elseif @formula3 == 100 tempform3 = sin(#z) * sin(2*#z) elseif @formula3 == 101 tempform3 = exp(2*#z) elseif @formula3 == 102 tempform3 = exp(-2*#z) elseif @formula3 == 103 zextra = 1/#z tempform3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 104 zextra = sinh( 1/#z ) tempform3 = zextra*zextra elseif @formula3 == 105 tempform3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 106 tempform3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 107 tempform3 = sin(#z) * sinh(#z) elseif @formula3 == 108 tempform3 = sin(#z) * cosh(#z) elseif @formula3 == 109 zextra = sin(#z), temp2 = sinh(#z) tempform3 = temp2*temp2*zextra*zextra elseif @formula3 == 110 tempform3 = sin(#z)*exp(#z) elseif @formula3 == 111 tempform3 = cos(#z)*exp(#z) elseif @formula3 == 112 tempform3 = sinh(#z)*exp(#z) elseif @formula3 == 113 tempform3 = cosh(#z)*exp(#z) elseif @formula3 == 114 tempform3 = sin(#z)*log(#z) elseif @formula3 == 115 tempform3 = cos(#z)*log(#z) elseif @formula3 == 116 tempform3 = sinh(#z)*log(#z) elseif @formula3 == 117 tempform3 = cosh(#z)*log(#z) elseif @formula3 == 118 tempform3 = exp(#z*#z) elseif @formula3 == 119 tempform3 = exp(-(#z*#z)) elseif @formula3 == 120 tempform3 = exp(1/(#z*#z)) elseif @formula3 == 121 tempform3 = exp(-1/(#z*#z)) else ; @formula3 == 122 tempform3 = #z endif ; formula3 #z = weightsum*(@weight1*tempform1 + @weight2*tempform2 + @weight3*tempform3) else #z = tempform1 endif ; remainder if @pmode != 1 #z = #z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "3-Way Blend Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param freq caption = "N, Blend Freq" default = 10 min = 1 hint = "This is the cycle length or blend frequency N. Formula 1 is executed \ on each iter, but Formulas 2 & 3 are blended in every N iters" endparam param skip caption = "Iters to Skip" default = 0 hint = "This is the number of iterations to skip before starting to blend in \ Formulas 2 and 3. Skipping an initial iteration can be useful if one of \ the blended formulas, such as 1/z or exp(1/z), performs poorly using the \ default Mandelbrot starting perturbation of (0,0)" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the first formula to be iterated. \ For 'z^power', use parameter 'Power 1' to set power. For '3-term polynomial' set \ params 'Coeff 1a', 'Exponent 1a', 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', \ 'Exponent 1c'." endparam param weight1 caption = "Formula1 Weight" default = 1.0 hint = "This is the proportion of Formula 1 that is \ blended into the others every N iterations" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = @formula1 == "z^power" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the second formula to be iterated; used only every N iters. \ For 'z^power', use parameter 'Power 2' to set power. For '3-term polynomial' set \ params 'Coeff 2a', 'Exponent 2a', 'Coeff 2b', 'Exponent 2b', 'Coeff 2c', \ 'Exponent 2c'." endparam param weight2 caption = "Formula2 Weight" default = 1.0 hint = "This is the proportion of Formula 2 that is \ blended into the others every N iterations" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = @formula2 == "z^power" endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" "z" default = 0 hint = "Sets the third formula to be iterated; used only every N iters. \ For 'z^power', use parameter 'Power 3' to set power. For '3-term polynomial' set \ params 'Coeff 3a', 'Exponent 3a', 'Coeff 3b', 'Exponent 3b', 'Coeff 3c', \ 'Exponent 3c'." endparam param weight3 caption = "Formula3 Weight" default = 1.0 hint = "This is the proportion of Formula 3 that is \ blended into the others every N iterations" endparam param power3 caption = "Power 3" default = (7,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" visible = @formula3 == "z^power" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula1 == "3-term polynomial" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula1 == "3-term polynomial" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula1 == "3-term polynomial" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula2 == "3-term polynomial" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula2 == "3-term polynomial" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula2 == "3-term polynomial" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @formula3 == "3-term polynomial" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @formula3 == "3-term polynomial" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @formula3 == "3-term polynomial" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @formula3 == "3-term polynomial" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @formula3 == "3-term polynomial" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @formula3 == "3-term polynomial" endparam param fixbug caption = "Fix 3-Term Bug?" default = FALSE hint = "If either 'Formula 2' or 'Formula 3' is set to '3-term polynomial', \ then this option fixes an early bug. If not enabled, then both 'Formula 2' \ and 'Formula 3' use the 'Formula 1' coefficients and exponents, rather than \ the correct parameters" visible = ( (@formula2 == "3-term polynomial") || (@formula3 == "3-term polynomial") ) endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-3wayBlend" perturbation = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype freq = freq skip = skip formula1 = formula1 power1 = power1 weight1 = weight1 formula2 = formula2 power2 = power2 weight2 = weight2 formula3 = formula3 power3 = power3 weight3 = weight3 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c coeff3a = coeff3a exponent3a = exponent3a coeff3b = coeff3b exponent3b = exponent3b coeff3c = coeff3c exponent3c = exponent3c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc fixbug = fixbug pmode = pmode } jam-ContinuedZxSine { ; jam 020109 ; Mandelbrot/Julia in which the sine formula can be 'continued' ; through N iterations. The formula executed is ; z = z*sin( z*sin( z*sin( ... z*sin( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*sin is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 zextra = z repeat z = zextra * sin( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*sin(z)" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the sine function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxSine-J" limit = limit jconstant = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedZxSine-J { ; jam 020109 ; Mandelbrot/Julia in which the sine formula can be 'continued' ; through N iterations. The formula executed is ; z = z*sin( z*sin( z*sin( ... z*sin( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*sin is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 zextra = z repeat z = zextra * sin( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*sin(z) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the sine function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxSine" limit = limit perturbation = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedZxLog { ; jam 020109 ; Mandelbrot/Julia in which the log formula can be 'continued' ; through N iterations. The formula executed is ; z = z*log( z*log( z*log( ... z*log( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*log is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 zextra = z repeat z = zextra * log( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*log(z)" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the log function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxLog-J" limit = limit jconstant = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedZxLog-J { ; jam 020109 ; Mandelbrot/Julia in which the log formula can be 'continued' ; through N iterations. The formula executed is ; z = z*log( z*log( z*log( ... z*log( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*log is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 zextra = z repeat z = zextra * log( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*log(z) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the log function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxLog" limit = limit perturbation = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedZxExp { ; jam 020109 ; Mandelbrot/Julia in which the exponential function can be 'continued' ; through N iterations. The formula executed is ; z = z*exp( z*exp( z*exp( ... z*exp( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*exp is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode zblend = z count = 1 zextra = z repeat z = zextra * exp( z + jc ) count = count + 1 until count > @limit if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*e^z" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the exp function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxExp-J" limit = limit blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower jconstant = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedZxExp-J { ; jam 020109 ; Mandelbrot/Julia in which the exponential function can be 'continued' ; through N iterations. The formula executed is ; z = z*exp( z*exp( z*exp( ... z*exp( z+c ) ... ) +c ) +c ) +c ) +c, ; where the z*exp is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode zblend = z count = 1 zextra = z repeat z = zextra * exp( z + jc ) count = count + 1 until count > @limit if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued z*e^z Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the exp function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedZxExp" limit = limit perturbation = #pixel bail = bail blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedSin { ; jam 020109 ; Mandelbrot/Julia in which the sine function can be 'continued' ; through N iterations. The formula executed is ; z = sin( sin( sin( ... sin( z+c ) ... ) +c ) +c ) +c ) +c, ; where the sin() is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 repeat z = sin( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued sin(z)" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the sin function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedSin-J" limit = limit jconstant = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-ContinuedSin-J { ; jam 020109 ; Mandelbrot/Julia in which the sine function can be 'continued' ; through N iterations. The formula executed is ; z = sin( sin( sin( ... sin( z+c ) ... ) +c ) +c ) +c ) +c, ; where the sin() is exectued N times. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable int count = 0 ; loop counter ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode count = 1 repeat z = sin( z + jc ) count = count + 1 until count > @limit if @pmode != 1 z = z + jc endif ; pmode bailout: |z| < @bail default: title = "Continued sin(z) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param limit caption = "Formula Iterations" default = 2 hint = "This is the number of times the sin function will be continued" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-ContinuedSin" limit = limit perturbation = #pixel bail = bail pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-binomial1a+P { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel), ; where g is from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1 +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1a+P-J" jconstant = #pixel bail = bail power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower coeffp = coeffp pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-binomial1a+P-J { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel), ; where g is from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1 +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1a+P" perturbation = #pixel bail = bail power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower coeffp = coeffp pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-binomial1b*Fn+P { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) elseif @formula2 == 25 temp2 = (1,0)/cos( #z ) elseif @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) elseif @formula2 == 50 temp2 = acosh(1/#z) elseif @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) elseif @formula2 == 75 temp2 = exp(2*#z) elseif @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) elseif @formula2 == 91 temp2 = cosh(#z)*log(#z) elseif @formula2 == 92 temp2 = exp(#z*#z) elseif @formula2 == 93 temp2 = exp(-(#z*#z)) elseif @formula2 == 94 temp2 = exp(1/(#z*#z)) else ; @formula2 == 95 temp2 = exp(-1/(#z*#z)) endif ; @formula2 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) elseif @formula1 == 25 temp1 = (1,0)/cos( #z ) elseif @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) elseif @formula1 == 50 temp1 = acosh(1/#z) elseif @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) elseif @formula1 == 75 temp1 = exp(2*#z) elseif @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) elseif @formula1 == 91 temp1 = cosh(#z)*log(#z) elseif @formula1 == 92 temp1 = exp(#z*#z) elseif @formula1 == 93 temp1 = exp(-(#z*#z)) elseif @formula1 == 94 temp1 = exp(1/(#z*#z)) else ; @formula1 == 95 temp1 = exp(-1/(#z*#z)) endif ; @formula1 z = @coeff2 * temp2 * z^@power2 + @coeff1 * temp1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1*Fn +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the formula that is multiplied by the second term of the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the formula that is multiplied by the first term of the binomial" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" visible = @coeffp != 0 endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" visible = @plottype == 0 endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" visible = @plottype == 1 endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1b*Fn+P-J" jconstant = #pixel bail = bail power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower coeffp = coeffp pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-binomial1b*Fn+P-J { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) elseif @formula2 == 25 temp2 = (1,0)/cos( #z ) elseif @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) elseif @formula2 == 50 temp2 = acosh(1/#z) elseif @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) elseif @formula2 == 75 temp2 = exp(2*#z) elseif @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) elseif @formula2 == 91 temp2 = cosh(#z)*log(#z) elseif @formula2 == 92 temp2 = exp(#z*#z) elseif @formula2 == 93 temp2 = exp(-(#z*#z)) elseif @formula2 == 94 temp2 = exp(1/(#z*#z)) else ; @formula2 == 95 temp2 = exp(-1/(#z*#z)) endif ; @formula2 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) elseif @formula1 == 25 temp1 = (1,0)/cos( #z ) elseif @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) elseif @formula1 == 50 temp1 = acosh(1/#z) elseif @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) elseif @formula1 == 75 temp1 = exp(2*#z) elseif @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) elseif @formula1 == 91 temp1 = cosh(#z)*log(#z) elseif @formula1 == 92 temp1 = exp(#z*#z) elseif @formula1 == 93 temp1 = exp(-(#z*#z)) elseif @formula1 == 94 temp1 = exp(1/(#z*#z)) else ; @formula1 == 95 temp1 = exp(-1/(#z*#z)) endif ; @formula1 z = @coeff2 * temp2 * z^@power2 + @coeff1 * temp1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1*Fn +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the formula that is multiplied by the second term of the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Sets the formula that is multiplied by the first term of the binomial" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" visible = @coeffp != 0 endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" visible = @plottype == 0 endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" visible = @plottype == 1 endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1b*Fn+P" perturbation = #pixel bail = bail power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower coeffp = coeffp pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-binomial1c(Fn)+P { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: ; Execute formula2 option zblend = z if @formula2 == 0 temp2 = #z elseif @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) elseif @formula2 == 25 temp2 = (1,0)/cos( #z ) elseif @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) elseif @formula2 == 50 temp2 = acosh(1/#z) elseif @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) elseif @formula2 == 75 temp2 = exp(2*#z) elseif @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) elseif @formula2 == 91 temp2 = cosh(#z)*log(#z) elseif @formula2 == 92 temp2 = exp(#z*#z) elseif @formula2 == 93 temp2 = exp(-(#z*#z)) elseif @formula2 == 94 temp2 = exp(1/(#z*#z)) else ; @formula2 == 95 temp2 = exp(-1/(#z*#z)) endif ; @formula2 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) elseif @formula1 == 25 temp1 = (1,0)/cos( #z ) elseif @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) elseif @formula1 == 50 temp1 = acosh(1/#z) elseif @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) elseif @formula1 == 75 temp1 = exp(2*#z) elseif @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) elseif @formula1 == 91 temp1 = cosh(#z)*log(#z) elseif @formula1 == 92 temp1 = exp(#z*#z) elseif @formula1 == 93 temp1 = exp(-(#z*#z)) elseif @formula1 == 94 temp1 = exp(1/(#z*#z)) else ; @formula1 == 95 temp1 = exp(-1/(#z*#z)) endif ; @formula1 z = @coeff2 * temp2^@power2 + @coeff1 * temp1^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1(Fn) +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "This formula operates on z then forms the second term of the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "This formula operates on z then forms the first term of the binomial" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" visible = @coeffp != 0 endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" visible = @plottype == 0 endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" visible = @plottype == 1 endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1c(Fn)+P-J" jconstant = #pixel bail = bail power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-binomial1c(Fn)+P-J { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula2 option if @formula2 == 0 temp2 = #z elseif @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) elseif @formula2 == 25 temp2 = (1,0)/cos( #z ) elseif @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) elseif @formula2 == 50 temp2 = acosh(1/#z) elseif @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) elseif @formula2 == 75 temp2 = exp(2*#z) elseif @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) elseif @formula2 == 91 temp2 = cosh(#z)*log(#z) elseif @formula2 == 92 temp2 = exp(#z*#z) elseif @formula2 == 93 temp2 = exp(-(#z*#z)) elseif @formula2 == 94 temp2 = exp(1/(#z*#z)) else ; @formula2 == 95 temp2 = exp(-1/(#z*#z)) endif ; @formula2 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) elseif @formula1 == 25 temp1 = (1,0)/cos( #z ) elseif @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) elseif @formula1 == 50 temp1 = acosh(1/#z) elseif @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) elseif @formula1 == 75 temp1 = exp(2*#z) elseif @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) elseif @formula1 == 91 temp1 = cosh(#z)*log(#z) elseif @formula1 == 92 temp1 = exp(#z*#z) elseif @formula1 == 93 temp1 = exp(-(#z*#z)) elseif @formula1 == 94 temp1 = exp(1/(#z*#z)) else ; @formula1 == 95 temp1 = exp(-1/(#z*#z)) endif ; @formula1 z = @coeff2 * temp2^@power2 + @coeff1 * temp1^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Binomial_1(Fn) +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "This formula operates on z then forms the second term of the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "This formula operates on z then forms the first term of the binomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" visible = @coeffp != 0 endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" visible = @plottype == 0 endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" visible = @plottype == 1 endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-binomial1c(Fn)+P" perturbation = #pixel bail = bail power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Fn[binomial1d+] { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = f[ c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel) ], ; where f and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc ; Execute formula option if @formula1 == 0 temp1 = z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(z) elseif @formula1 == 3 temp1 = z ^ z elseif @formula1 == 4 temp1 = sin(z) elseif @formula1 == 5 temp1 = cos(z) elseif @formula1 == 6 temp1 = tan( z ) elseif @formula1 == 7 temp1 = asin(z) elseif @formula1 == 8 temp1 = acos( z) elseif @formula1 == 9 temp1 = atan(z) elseif @formula1 == 10 temp1 = sinh( z ) elseif @formula1 == 11 temp1 = cosh( z ) elseif @formula1 == 12 temp1 = tanh( z ) elseif @formula1 == 13 temp1 = asinh( z ) elseif @formula1 == 14 temp1 = acosh( z ) elseif @formula1 == 15 temp1 = atanh( z ) elseif @formula1 == 16 temp1 = log( 1/z ) elseif @formula1 == 17 temp1 = log(log( z )) elseif @formula1 == 18 temp1 = exp( -z ) elseif @formula1 == 19 temp1 = exp( 1/z ) elseif @formula1 == 20 temp1 = z^( -z ) elseif @formula1 == 21 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( z ) else ; @formula1 == 25 temp1 = (1,0)/cos( z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(z) elseif @formula1 == 27 zextra = cotan( z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = z^(z^z) elseif @formula1 == 31 temp1 = (1,0)/(z^(z^z)) elseif @formula1 == 32 temp1 = log( -z ) elseif @formula1 == 33 temp1 = (1,0)/log( z ) elseif @formula1 == 34 temp1 = sin(z) * cos(z) elseif @formula1 == 35 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/z) elseif @formula1 == 37 temp1 = atan((1,0)/z) elseif @formula1 == 38 temp1 = acos((1,0)/z) elseif @formula1 == 39 temp1 = asin((1,0)/z) elseif @formula1 == 40 temp1 = sin(1/z) elseif @formula1 == 41 temp1 = cos(1/z) elseif @formula1 == 42 temp1 = tan(1/z) elseif @formula1 == 43 temp1 = cotan(1/z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/z) elseif @formula1 == 46 temp1 = cotanh(z) elseif @formula1 == 47 temp1 = (1,0)/cosh(z) elseif @formula1 == 48 temp1 = (1,0)/sinh(z) elseif @formula1 == 49 temp1 = atanh(1/z) else ; @formula1 == 50 temp1 = acosh(1/z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/z) elseif @formula1 == 52 zextra = sinh(z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/z) elseif @formula1 == 59 temp1 = cosh(1/z) elseif @formula1 == 60 temp1 = tanh(1/z) elseif @formula1 == 61 temp1 = cotanh(1/z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/z) elseif @formula1 == 64 temp1 = sin( z ) * tan(z) elseif @formula1 == 65 temp1 = sinh(z) * tanh(z) elseif @formula1 == 66 temp1 = sinh(z) * cosh(z) elseif @formula1 == 67 temp1 = sinh(z), zextra = cosh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(z), zextra = cos(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(z) * cos(1/z) elseif @formula1 == 72 temp1 = sin(z) * sin(1/z) elseif @formula1 == 73 zextra = log(z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(z) * sin(2*z) else ; @formula1 == 75 temp1 = exp(2*z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*z) elseif @formula1 == 77 zextra = 1/z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(z) * cosh(1/z) elseif @formula1 == 80 temp1 = sinh(z) * sinh(1/z) elseif @formula1 == 81 temp1 = sin(z) * sinh(z) elseif @formula1 == 82 temp1 = sin(z) * cosh(z) elseif @formula1 == 83 zextra = sin(z), temp1 = sinh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(z)*exp(z) elseif @formula1 == 85 temp1 = cos(z)*exp(z) elseif @formula1 == 86 temp1 = sinh(z)*exp(z) elseif @formula1 == 87 temp1 = cosh(z)*exp(z) elseif @formula1 == 88 temp1 = sin(z)*log(z) elseif @formula1 == 89 temp1 = cos(z)*log(z) elseif @formula1 == 90 temp1 = sinh(z)*log(z) else ; @formula1 == 91 temp1 = cosh(z)*log(z) endif ; formula1-2 endif ; formula1-1 z = temp1 if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Fn(Binomial_1 +p)" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that operates on the entire binomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Fn[binomial1d+]-J" jconstant = #pixel bail = bail power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Fn[binomial1d+]-J { ; jam 011214 ; General binomial Mandelbrot/Julia. Formula executed is ; z(n+1) = f[ c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel) ], ; where f and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc ; Execute formula option if @formula1 == 0 temp1 = z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(z) elseif @formula1 == 3 temp1 = z ^ z elseif @formula1 == 4 temp1 = sin(z) elseif @formula1 == 5 temp1 = cos(z) elseif @formula1 == 6 temp1 = tan( z ) elseif @formula1 == 7 temp1 = asin(z) elseif @formula1 == 8 temp1 = acos( z) elseif @formula1 == 9 temp1 = atan(z) elseif @formula1 == 10 temp1 = sinh( z ) elseif @formula1 == 11 temp1 = cosh( z ) elseif @formula1 == 12 temp1 = tanh( z ) elseif @formula1 == 13 temp1 = asinh( z ) elseif @formula1 == 14 temp1 = acosh( z ) elseif @formula1 == 15 temp1 = atanh( z ) elseif @formula1 == 16 temp1 = log( 1/z ) elseif @formula1 == 17 temp1 = log(log( z )) elseif @formula1 == 18 temp1 = exp( -z ) elseif @formula1 == 19 temp1 = exp( 1/z ) elseif @formula1 == 20 temp1 = z^( -z ) elseif @formula1 == 21 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( z ) else ; @formula1 == 25 temp1 = (1,0)/cos( z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(z) elseif @formula1 == 27 zextra = cotan( z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = z^(z^z) elseif @formula1 == 31 temp1 = (1,0)/(z^(z^z)) elseif @formula1 == 32 temp1 = log( -z ) elseif @formula1 == 33 temp1 = (1,0)/log( z ) elseif @formula1 == 34 temp1 = sin(z) * cos(z) elseif @formula1 == 35 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/z) elseif @formula1 == 37 temp1 = atan((1,0)/z) elseif @formula1 == 38 temp1 = acos((1,0)/z) elseif @formula1 == 39 temp1 = asin((1,0)/z) elseif @formula1 == 40 temp1 = sin(1/z) elseif @formula1 == 41 temp1 = cos(1/z) elseif @formula1 == 42 temp1 = tan(1/z) elseif @formula1 == 43 temp1 = cotan(1/z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/z) elseif @formula1 == 46 temp1 = cotanh(z) elseif @formula1 == 47 temp1 = (1,0)/cosh(z) elseif @formula1 == 48 temp1 = (1,0)/sinh(z) elseif @formula1 == 49 temp1 = atanh(1/z) else ; @formula1 == 50 temp1 = acosh(1/z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/z) elseif @formula1 == 52 zextra = sinh(z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/z) elseif @formula1 == 59 temp1 = cosh(1/z) elseif @formula1 == 60 temp1 = tanh(1/z) elseif @formula1 == 61 temp1 = cotanh(1/z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/z) elseif @formula1 == 64 temp1 = sin( z ) * tan(z) elseif @formula1 == 65 temp1 = sinh(z) * tanh(z) elseif @formula1 == 66 temp1 = sinh(z) * cosh(z) elseif @formula1 == 67 temp1 = sinh(z), zextra = cosh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(z), zextra = cos(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(z) * cos(1/z) elseif @formula1 == 72 temp1 = sin(z) * sin(1/z) elseif @formula1 == 73 zextra = log(z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(z) * sin(2*z) else ; @formula1 == 75 temp1 = exp(2*z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*z) elseif @formula1 == 77 zextra = 1/z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(z) * cosh(1/z) elseif @formula1 == 80 temp1 = sinh(z) * sinh(1/z) elseif @formula1 == 81 temp1 = sin(z) * sinh(z) elseif @formula1 == 82 temp1 = sin(z) * cosh(z) elseif @formula1 == 83 zextra = sin(z), temp1 = sinh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(z)*exp(z) elseif @formula1 == 85 temp1 = cos(z)*exp(z) elseif @formula1 == 86 temp1 = sinh(z)*exp(z) elseif @formula1 == 87 temp1 = cosh(z)*exp(z) elseif @formula1 == 88 temp1 = sin(z)*log(z) elseif @formula1 == 89 temp1 = cos(z)*log(z) elseif @formula1 == 90 temp1 = sinh(z)*log(z) else ; @formula1 == 91 temp1 = cosh(z)*log(z) endif ; formula1-2 endif ; formula1-1 z = temp1 if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Fn(Binomial_1 +p) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the binomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the binomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the binomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the binomial" endparam param formula1 caption = "Formula" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that operates on the entire binomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Fn[binomial1d+]" perturbation = #pixel bail = bail power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1a+P { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*z(n)^power3 + c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel), ; where g is from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff3 * z^@power3 + @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1 +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1a+P-J" jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1b*Fn+P { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z)*z(n)^power3 + c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula3 option if @formula3 == 0 temp3 = (1,0) elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3 * z^@power3 + @coeff2 * temp2 * z^@power2 + \ @coeff1 * temp1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1*Fn +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1b*Fn+P-J" jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1c(Fn)+P { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z(n))^power3 + c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula3 option if @formula3 == 0 temp3 = #z elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = #z elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3^@power3 + @coeff2 * temp2^@power2 + \ @coeff1 * temp1^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1(Fn) +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1c(Fn)+P-J" jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Fn[trinomial1d+] { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = f[ c3*z(n)^power3 + c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel) ], ; where f and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff3 * z^@power3 + @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc ; Execute formula option if @formula1 == 0 temp1 = z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(z) elseif @formula1 == 3 temp1 = z ^ z elseif @formula1 == 4 temp1 = sin(z) elseif @formula1 == 5 temp1 = cos(z) elseif @formula1 == 6 temp1 = tan( z ) elseif @formula1 == 7 temp1 = asin(z) elseif @formula1 == 8 temp1 = acos( z) elseif @formula1 == 9 temp1 = atan(z) elseif @formula1 == 10 temp1 = sinh( z ) elseif @formula1 == 11 temp1 = cosh( z ) elseif @formula1 == 12 temp1 = tanh( z ) elseif @formula1 == 13 temp1 = asinh( z ) elseif @formula1 == 14 temp1 = acosh( z ) elseif @formula1 == 15 temp1 = atanh( z ) elseif @formula1 == 16 temp1 = log( 1/z ) elseif @formula1 == 17 temp1 = log(log( z )) elseif @formula1 == 18 temp1 = exp( -z ) elseif @formula1 == 19 temp1 = exp( 1/z ) elseif @formula1 == 20 temp1 = z^( -z ) elseif @formula1 == 21 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( z ) else ; @formula1 == 25 temp1 = (1,0)/cos( z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(z) elseif @formula1 == 27 zextra = cotan( z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = z^(z^z) elseif @formula1 == 31 temp1 = (1,0)/(z^(z^z)) elseif @formula1 == 32 temp1 = log( -z ) elseif @formula1 == 33 temp1 = (1,0)/log( z ) elseif @formula1 == 34 temp1 = sin(z) * cos(z) elseif @formula1 == 35 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/z) elseif @formula1 == 37 temp1 = atan((1,0)/z) elseif @formula1 == 38 temp1 = acos((1,0)/z) elseif @formula1 == 39 temp1 = asin((1,0)/z) elseif @formula1 == 40 temp1 = sin(1/z) elseif @formula1 == 41 temp1 = cos(1/z) elseif @formula1 == 42 temp1 = tan(1/z) elseif @formula1 == 43 temp1 = cotan(1/z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/z) elseif @formula1 == 46 temp1 = cotanh(z) elseif @formula1 == 47 temp1 = (1,0)/cosh(z) elseif @formula1 == 48 temp1 = (1,0)/sinh(z) elseif @formula1 == 49 temp1 = atanh(1/z) else ; @formula1 == 50 temp1 = acosh(1/z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/z) elseif @formula1 == 52 zextra = sinh(z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/z) elseif @formula1 == 59 temp1 = cosh(1/z) elseif @formula1 == 60 temp1 = tanh(1/z) elseif @formula1 == 61 temp1 = cotanh(1/z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/z) elseif @formula1 == 64 temp1 = sin( z ) * tan(z) elseif @formula1 == 65 temp1 = sinh(z) * tanh(z) elseif @formula1 == 66 temp1 = sinh(z) * cosh(z) elseif @formula1 == 67 temp1 = sinh(z), zextra = cosh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(z), zextra = cos(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(z) * cos(1/z) elseif @formula1 == 72 temp1 = sin(z) * sin(1/z) elseif @formula1 == 73 zextra = log(z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(z) * sin(2*z) else ; @formula1 == 75 temp1 = exp(2*z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*z) elseif @formula1 == 77 zextra = 1/z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(z) * cosh(1/z) elseif @formula1 == 80 temp1 = sinh(z) * sinh(1/z) elseif @formula1 == 81 temp1 = sin(z) * sinh(z) elseif @formula1 == 82 temp1 = sin(z) * cosh(z) elseif @formula1 == 83 zextra = sin(z), temp1 = sinh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(z)*exp(z) elseif @formula1 == 85 temp1 = cos(z)*exp(z) elseif @formula1 == 86 temp1 = sinh(z)*exp(z) elseif @formula1 == 87 temp1 = cosh(z)*exp(z) elseif @formula1 == 88 temp1 = sin(z)*log(z) elseif @formula1 == 89 temp1 = cos(z)*log(z) elseif @formula1 == 90 temp1 = sinh(z)*log(z) else ; @formula1 == 91 temp1 = cosh(z)*log(z) endif ; formula1-2 endif ; formula1-1 z = temp1 if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Fn(Trinomial_1 +p)" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that operates on the entire trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Fn[trinomial1d+]-J" jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1a+P-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*z(n)^power3 + c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel), ; where g is from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff3 * z^@power3 + @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1 +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1a+P" perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1b*Fn+P-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z)*z(n)^power3 + c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula3 option if @formula3 == 0 temp3 = (1,0) elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3 * z^@power3 + @coeff2 * temp2 * z^@power2 + \ @coeff1 * temp1 * z^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1*Fn +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1b*Fn+P" perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-trinomial1c(Fn)+P-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z(n))^power3 + c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z ; Execute formula3 option if @formula3 == 0 temp3 = #z elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = #z elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3^@power3 + @coeff2 * temp2^@power2 + \ @coeff1 * temp1^@power1 + @coeffp * jc if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Trinomial_1(Fn) +p Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-trinomial1c(Fn)+P" perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Fn[trinomial1d+]-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = f[ c3*z(n)^power3 + c2*z(n)^power2 + c1*z(n)^power1 + c0*g(pixel) ], ; where f and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp1 = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z z = @coeff3 * z^@power3 + @coeff2 * z^@power2 + @coeff1 * z^@power1 + @coeffp * jc ; Execute formula option if @formula1 == 0 temp1 = z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(z) elseif @formula1 == 3 temp1 = z ^ z elseif @formula1 == 4 temp1 = sin(z) elseif @formula1 == 5 temp1 = cos(z) elseif @formula1 == 6 temp1 = tan( z ) elseif @formula1 == 7 temp1 = asin(z) elseif @formula1 == 8 temp1 = acos( z) elseif @formula1 == 9 temp1 = atan(z) elseif @formula1 == 10 temp1 = sinh( z ) elseif @formula1 == 11 temp1 = cosh( z ) elseif @formula1 == 12 temp1 = tanh( z ) elseif @formula1 == 13 temp1 = asinh( z ) elseif @formula1 == 14 temp1 = acosh( z ) elseif @formula1 == 15 temp1 = atanh( z ) elseif @formula1 == 16 temp1 = log( 1/z ) elseif @formula1 == 17 temp1 = log(log( z )) elseif @formula1 == 18 temp1 = exp( -z ) elseif @formula1 == 19 temp1 = exp( 1/z ) elseif @formula1 == 20 temp1 = z^( -z ) elseif @formula1 == 21 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( z ) else ; @formula1 == 25 temp1 = (1,0)/cos( z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(z) elseif @formula1 == 27 zextra = cotan( z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = z^(z^z) elseif @formula1 == 31 temp1 = (1,0)/(z^(z^z)) elseif @formula1 == 32 temp1 = log( -z ) elseif @formula1 == 33 temp1 = (1,0)/log( z ) elseif @formula1 == 34 temp1 = sin(z) * cos(z) elseif @formula1 == 35 zextra = sin(z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/z) elseif @formula1 == 37 temp1 = atan((1,0)/z) elseif @formula1 == 38 temp1 = acos((1,0)/z) elseif @formula1 == 39 temp1 = asin((1,0)/z) elseif @formula1 == 40 temp1 = sin(1/z) elseif @formula1 == 41 temp1 = cos(1/z) elseif @formula1 == 42 temp1 = tan(1/z) elseif @formula1 == 43 temp1 = cotan(1/z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/z) elseif @formula1 == 46 temp1 = cotanh(z) elseif @formula1 == 47 temp1 = (1,0)/cosh(z) elseif @formula1 == 48 temp1 = (1,0)/sinh(z) elseif @formula1 == 49 temp1 = atanh(1/z) else ; @formula1 == 50 temp1 = acosh(1/z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/z) elseif @formula1 == 52 zextra = sinh(z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/z) elseif @formula1 == 59 temp1 = cosh(1/z) elseif @formula1 == 60 temp1 = tanh(1/z) elseif @formula1 == 61 temp1 = cotanh(1/z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/z) elseif @formula1 == 64 temp1 = sin( z ) * tan(z) elseif @formula1 == 65 temp1 = sinh(z) * tanh(z) elseif @formula1 == 66 temp1 = sinh(z) * cosh(z) elseif @formula1 == 67 temp1 = sinh(z), zextra = cosh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(z), zextra = cos(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(z) * cos(1/z) elseif @formula1 == 72 temp1 = sin(z) * sin(1/z) elseif @formula1 == 73 zextra = log(z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(z) * sin(2*z) else ; @formula1 == 75 temp1 = exp(2*z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*z) elseif @formula1 == 77 zextra = 1/z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(z) * cosh(1/z) elseif @formula1 == 80 temp1 = sinh(z) * sinh(1/z) elseif @formula1 == 81 temp1 = sin(z) * sinh(z) elseif @formula1 == 82 temp1 = sin(z) * cosh(z) elseif @formula1 == 83 zextra = sin(z), temp1 = sinh(z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(z)*exp(z) elseif @formula1 == 85 temp1 = cos(z)*exp(z) elseif @formula1 == 86 temp1 = sinh(z)*exp(z) elseif @formula1 == 87 temp1 = cosh(z)*exp(z) elseif @formula1 == 88 temp1 = sin(z)*log(z) elseif @formula1 == 89 temp1 = cos(z)*log(z) elseif @formula1 == 90 temp1 = sinh(z)*log(z) else ; @formula1 == 91 temp1 = cosh(z)*log(z) endif ; formula1-2 endif ; formula1-1 z = temp1 if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "Fn(Trinomial_1 +p) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the trinomial" endparam param formula1 caption = "Formula" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that operates on the entire trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Fn[trinomial1d+]" perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 power2 = power2 coeff2 = coeff2 power1 = power1 coeff1 = coeff1 formula1 = formula1 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Ntrinomial1b*Fn+P { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z)*z(n)^power3 + c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) int iteration = int remainder = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @cycle zblend = z if remainder != 0 ; execute A-series formulas ; Execute formula3 option if @formula3 == 0 temp3 = (1,0) elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3 * z^@power3 + @coeff2 * temp2 * z^@power2 + \ @coeff1 * temp1 * z^@power1 + @coeffp * jc else ; execute B-series formulas ; Execute formula6 option if @formula6 == 0 temp3 = (1,0) elseif @formula6 <= 50 if @formula6 <= 25 if @formula6 == 1 temp3 = log(z) elseif @formula6 == 2 temp3 = exp(#z) elseif @formula6 == 3 temp3 = #z ^ #z elseif @formula6 == 4 temp3 = sin(#z) elseif @formula6 == 5 temp3 = cos(#z) elseif @formula6 == 6 temp3 = tan( #z ) elseif @formula6 == 7 temp3 = asin(#z) elseif @formula6 == 8 temp3 = acos( #z) elseif @formula6 == 9 temp3 = atan(#z) elseif @formula6 == 10 temp3 = sinh( #z ) elseif @formula6 == 11 temp3 = cosh( #z ) elseif @formula6 == 12 temp3 = tanh( #z ) elseif @formula6 == 13 temp3 = asinh( #z ) elseif @formula6 == 14 temp3 = acosh( #z ) elseif @formula6 == 15 temp3 = atanh( #z ) elseif @formula6 == 16 temp3 = log( 1/#z ) elseif @formula6 == 17 temp3 = log(log( #z )) elseif @formula6 == 18 temp3 = exp( -#z ) elseif @formula6 == 19 temp3 = exp( 1/#z ) elseif @formula6 == 20 temp3 = #z^( -#z ) elseif @formula6 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula6 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula6 == 24 temp3 = cotan( #z ) else ; @formula6 == 25 temp3 = (1,0)/cos( #z ) endif ; formula6-3 else ; 25 < @formula6 <= 50 if @formula6 == 26 temp3 = (1,0)/sin(#z) elseif @formula6 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula6 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 30 temp3 = #z^(#z^#z) elseif @formula6 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula6 == 32 temp3 = log( -#z ) elseif @formula6 == 33 temp3 = (1,0)/log( #z ) elseif @formula6 == 34 temp3 = sin(#z) * cos(#z) elseif @formula6 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 36 temp3 = exp((-1,0)/#z) elseif @formula6 == 37 temp3 = atan((1,0)/#z) elseif @formula6 == 38 temp3 = acos((1,0)/#z) elseif @formula6 == 39 temp3 = asin((1,0)/#z) elseif @formula6 == 40 temp3 = sin(1/#z) elseif @formula6 == 41 temp3 = cos(1/#z) elseif @formula6 == 42 temp3 = tan(1/#z) elseif @formula6 == 43 temp3 = cotan(1/#z) elseif @formula6 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula6 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula6 == 46 temp3 = cotanh(#z) elseif @formula6 == 47 temp3 = (1,0)/cosh(#z) elseif @formula6 == 48 temp3 = (1,0)/sinh(#z) elseif @formula6 == 49 temp3 = atanh(1/#z) else ; @formula6 == 50 temp3 = acosh(1/#z) endif ; formula6-3 endif ; formula6-2 elseif @formula6 <= 75 if @formula6 == 51 temp3 = asinh(1/#z) elseif @formula6 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula6 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula6 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula6 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula6 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula6 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula6 == 58 temp3 = sinh(1/#z) elseif @formula6 == 59 temp3 = cosh(1/#z) elseif @formula6 == 60 temp3 = tanh(1/#z) elseif @formula6 == 61 temp3 = cotanh(1/#z) elseif @formula6 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula6 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula6 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula6 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula6 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula6 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula6 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula6 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula6 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula6 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula6 == 75 temp3 = exp(2*#z) endif ; formula6-2 else ; 75 < @formula6 <= 100 if @formula6 == 76 temp3 = exp(-2*#z) elseif @formula6 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula6 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula6 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula6 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula6 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula6 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 84 temp3 = sin(#z)*exp(#z) elseif @formula6 == 85 temp3 = cos(#z)*exp(#z) elseif @formula6 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula6 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula6 == 88 temp3 = sin(#z)*log(#z) elseif @formula6 == 89 temp3 = cos(#z)*log(#z) elseif @formula6 == 90 temp3 = sinh(#z)*log(#z) else ; @formula6 == 91 temp3 = cosh(#z)*log(#z) endif ; formula6-2 endif ; formula6-1 ; Execute formula5 option if @formula5 == 0 temp2 = (1,0) elseif @formula5 <= 50 if @formula5 <= 25 if @formula5 == 1 temp2 = log(z) elseif @formula5 == 2 temp2 = exp(#z) elseif @formula5 == 3 temp2 = #z ^ #z elseif @formula5 == 4 temp2 = sin(#z) elseif @formula5 == 5 temp2 = cos(#z) elseif @formula5 == 6 temp2 = tan( #z ) elseif @formula5 == 7 temp2 = asin(#z) elseif @formula5 == 8 temp2 = acos( #z) elseif @formula5 == 9 temp2 = atan(#z) elseif @formula5 == 10 temp2 = sinh( #z ) elseif @formula5 == 11 temp2 = cosh( #z ) elseif @formula5 == 12 temp2 = tanh( #z ) elseif @formula5 == 13 temp2 = asinh( #z ) elseif @formula5 == 14 temp2 = acosh( #z ) elseif @formula5 == 15 temp2 = atanh( #z ) elseif @formula5 == 16 temp2 = log( 1/#z ) elseif @formula5 == 17 temp2 = log(log( #z )) elseif @formula5 == 18 temp2 = exp( -#z ) elseif @formula5 == 19 temp2 = exp( 1/#z ) elseif @formula5 == 20 temp2 = #z^( -#z ) elseif @formula5 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula5 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula5 == 24 temp2 = cotan( #z ) else ; @formula5 == 25 temp2 = (1,0)/cos( #z ) endif ; formula5-3 else ; 25 < @formula5 <= 50 if @formula5 == 26 temp2 = (1,0)/sin(#z) elseif @formula5 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula5 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 30 temp2 = #z^(#z^#z) elseif @formula5 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula5 == 32 temp2 = log( -#z ) elseif @formula5 == 33 temp2 = (1,0)/log( #z ) elseif @formula5 == 34 temp2 = sin(#z) * cos(#z) elseif @formula5 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 36 temp2 = exp((-1,0)/#z) elseif @formula5 == 37 temp2 = atan((1,0)/#z) elseif @formula5 == 38 temp2 = acos((1,0)/#z) elseif @formula5 == 39 temp2 = asin((1,0)/#z) elseif @formula5 == 40 temp2 = sin(1/#z) elseif @formula5 == 41 temp2 = cos(1/#z) elseif @formula5 == 42 temp2 = tan(1/#z) elseif @formula5 == 43 temp2 = cotan(1/#z) elseif @formula5 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula5 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula5 == 46 temp2 = cotanh(#z) elseif @formula5 == 47 temp2 = (1,0)/cosh(#z) elseif @formula5 == 48 temp2 = (1,0)/sinh(#z) elseif @formula5 == 49 temp2 = atanh(1/#z) else ; @formula5 == 50 temp2 = acosh(1/#z) endif ; formula5-3 endif ; formula5-2 elseif @formula5 <= 75 if @formula5 == 51 temp2 = asinh(1/#z) elseif @formula5 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula5 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula5 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula5 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula5 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula5 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula5 == 58 temp2 = sinh(1/#z) elseif @formula5 == 59 temp2 = cosh(1/#z) elseif @formula5 == 60 temp2 = tanh(1/#z) elseif @formula5 == 61 temp2 = cotanh(1/#z) elseif @formula5 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula5 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula5 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula5 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula5 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula5 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula5 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula5 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula5 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula5 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula5 == 75 temp2 = exp(2*#z) endif ; formula5-2 else ; 75 < @formula5 <= 100 if @formula5 == 76 temp2 = exp(-2*#z) elseif @formula5 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula5 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula5 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula5 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula5 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula5 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 84 temp2 = sin(#z)*exp(#z) elseif @formula5 == 85 temp2 = cos(#z)*exp(#z) elseif @formula5 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula5 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula5 == 88 temp2 = sin(#z)*log(#z) elseif @formula5 == 89 temp2 = cos(#z)*log(#z) elseif @formula5 == 90 temp2 = sinh(#z)*log(#z) else ; @formula5 == 91 temp2 = cosh(#z)*log(#z) endif ; formula5-2 endif ; formula5-1 ; Execute formula4 option if @formula4 == 0 temp1 = (1,0) elseif @formula4 <= 50 if @formula4 <= 25 if @formula4 == 1 temp1 = log(z) elseif @formula4 == 2 temp1 = exp(#z) elseif @formula4 == 3 temp1 = #z ^ #z elseif @formula4 == 4 temp1 = sin(#z) elseif @formula4 == 5 temp1 = cos(#z) elseif @formula4 == 6 temp1 = tan( #z ) elseif @formula4 == 7 temp1 = asin(#z) elseif @formula4 == 8 temp1 = acos( #z) elseif @formula4 == 9 temp1 = atan(#z) elseif @formula4 == 10 temp1 = sinh( #z ) elseif @formula4 == 11 temp1 = cosh( #z ) elseif @formula4 == 12 temp1 = tanh( #z ) elseif @formula4 == 13 temp1 = asinh( #z ) elseif @formula4 == 14 temp1 = acosh( #z ) elseif @formula4 == 15 temp1 = atanh( #z ) elseif @formula4 == 16 temp1 = log( 1/#z ) elseif @formula4 == 17 temp1 = log(log( #z )) elseif @formula4 == 18 temp1 = exp( -#z ) elseif @formula4 == 19 temp1 = exp( 1/#z ) elseif @formula4 == 20 temp1 = #z^( -#z ) elseif @formula4 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula4 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula4 == 24 temp1 = cotan( #z ) else ; @formula4 == 25 temp1 = (1,0)/cos( #z ) endif ; formula4-3 else ; 25 < @formula4 <= 50 if @formula4 == 26 temp1 = (1,0)/sin(#z) elseif @formula4 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula4 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 30 temp1 = #z^(#z^#z) elseif @formula4 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula4 == 32 temp1 = log( -#z ) elseif @formula4 == 33 temp1 = (1,0)/log( #z ) elseif @formula4 == 34 temp1 = sin(#z) * cos(#z) elseif @formula4 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 36 temp1 = exp((-1,0)/#z) elseif @formula4 == 37 temp1 = atan((1,0)/#z) elseif @formula4 == 38 temp1 = acos((1,0)/#z) elseif @formula4 == 39 temp1 = asin((1,0)/#z) elseif @formula4 == 40 temp1 = sin(1/#z) elseif @formula4 == 41 temp1 = cos(1/#z) elseif @formula4 == 42 temp1 = tan(1/#z) elseif @formula4 == 43 temp1 = cotan(1/#z) elseif @formula4 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula4 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula4 == 46 temp1 = cotanh(#z) elseif @formula4 == 47 temp1 = (1,0)/cosh(#z) elseif @formula4 == 48 temp1 = (1,0)/sinh(#z) elseif @formula4 == 49 temp1 = atanh(1/#z) else ; @formula4 == 50 temp1 = acosh(1/#z) endif ; formula4-3 endif ; formula4-2 elseif @formula4 <= 75 if @formula4 == 51 temp1 = asinh(1/#z) elseif @formula4 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula4 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula4 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula4 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula4 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula4 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula4 == 58 temp1 = sinh(1/#z) elseif @formula4 == 59 temp1 = cosh(1/#z) elseif @formula4 == 60 temp1 = tanh(1/#z) elseif @formula4 == 61 temp1 = cotanh(1/#z) elseif @formula4 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula4 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula4 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula4 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula4 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula4 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula4 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula4 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula4 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula4 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula4 == 75 temp1 = exp(2*#z) endif ; formula4-2 else ; 75 < @formula4 <= 100 if @formula4 == 76 temp1 = exp(-2*#z) elseif @formula4 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula4 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula4 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula4 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula4 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula4 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 84 temp1 = sin(#z)*exp(#z) elseif @formula4 == 85 temp1 = cos(#z)*exp(#z) elseif @formula4 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula4 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula4 == 88 temp1 = sin(#z)*log(#z) elseif @formula4 == 89 temp1 = cos(#z)*log(#z) elseif @formula4 == 90 temp1 = sinh(#z)*log(#z) else ; @formula4 == 91 temp1 = cosh(#z)*log(#z) endif ; formula4-2 endif ; formula4-1 z = @coeff6 * temp3 * z^@power6 + @coeff5 * temp2 * z^@power5 + \ @coeff4 * temp1 * z^@power4 + @coeffp * jc endif ; remainder if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "N-cycle Trinom1*Fn +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param cycle caption = "Cycle Length" default = 5 min = 2 hint = "Frequency of execution of B-series formulas. The A-series formulas \ are executed except on iterations divisible by N (i.e., 0 mod N), when \ the B-series formulas are executed" endparam param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the A-series (main) trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the A-series trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the A-series trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the A-series (main) trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the A-series trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the A-series trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the A-series (main) trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the A-series trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the A-series trinomial" endparam param power6 caption = "Power 3B" default = (4,0) hint = "This is the exponent used for the third term of the B-series (secondary) \ trinomial (executed every N-iterations in place of the A-series trinomial)" endparam param coeff6 caption = "Coeff 3B" default = (-1,0) hint = "This is the coefficient of the third term in the B-series trinomial" endparam param formula6 caption = "Formula 3B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the B-series trinomial" endparam param power5 caption = "Power 2B" default = (3,0) hint = "This is the exponent used for the second term of the B-series (secondary) trinomial" endparam param coeff5 caption = "Coeff 2B" default = (1,0) hint = "This is the coefficient of the second term in the B-series trinomial" endparam param formula5 caption = "Formula 2B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the B-series trinomial" endparam param power4 caption = "Power 1B" default = (2,0) hint = "This is the exponent used for the first term of the B-series (main) trinomial" endparam param coeff4 caption = "Coeff 1B" default = (-1,0) hint = "This is the coefficient of the first term in the B-series trinomial" endparam param formula4 caption = "Formula 1B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the B-series trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Ntrinomial1b*Fn+P-J" cycle = cycle jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 power6 = power6 coeff6 = coeff6 formula6 = formula6 power5 = power5 coeff5 = coeff5 formula5 = formula5 power4 = power4 coeff4 = coeff4 formula4 = formula4 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Ntrinomial1c(Fn)+P { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z(n))^power3 + c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) complex zblend = (0,0) int iteration = int remainder = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @cycle zblend = z if remainder != 0 ; execute A-series formulas ; Execute formula3 option if @formula3 == 0 temp3 = #z elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = #z elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3^@power3 + @coeff2 * temp2^@power2 + \ @coeff1 * temp1^@power1 + @coeffp * jc else ; execute B-series formulas ; Execute formula6 option if @formula6 == 0 temp3 = #z elseif @formula6 <= 50 if @formula6 <= 25 if @formula6 == 1 temp3 = log(z) elseif @formula6 == 2 temp3 = exp(#z) elseif @formula6 == 3 temp3 = #z ^ #z elseif @formula6 == 4 temp3 = sin(#z) elseif @formula6 == 5 temp3 = cos(#z) elseif @formula6 == 6 temp3 = tan( #z ) elseif @formula6 == 7 temp3 = asin(#z) elseif @formula6 == 8 temp3 = acos( #z) elseif @formula6 == 9 temp3 = atan(#z) elseif @formula6 == 10 temp3 = sinh( #z ) elseif @formula6 == 11 temp3 = cosh( #z ) elseif @formula6 == 12 temp3 = tanh( #z ) elseif @formula6 == 13 temp3 = asinh( #z ) elseif @formula6 == 14 temp3 = acosh( #z ) elseif @formula6 == 15 temp3 = atanh( #z ) elseif @formula6 == 16 temp3 = log( 1/#z ) elseif @formula6 == 17 temp3 = log(log( #z )) elseif @formula6 == 18 temp3 = exp( -#z ) elseif @formula6 == 19 temp3 = exp( 1/#z ) elseif @formula6 == 20 temp3 = #z^( -#z ) elseif @formula6 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula6 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula6 == 24 temp3 = cotan( #z ) else ; @formula6 == 25 temp3 = (1,0)/cos( #z ) endif ; formula6-3 else ; 25 < @formula6 <= 50 if @formula6 == 26 temp3 = (1,0)/sin(#z) elseif @formula6 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula6 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 30 temp3 = #z^(#z^#z) elseif @formula6 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula6 == 32 temp3 = log( -#z ) elseif @formula6 == 33 temp3 = (1,0)/log( #z ) elseif @formula6 == 34 temp3 = sin(#z) * cos(#z) elseif @formula6 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 36 temp3 = exp((-1,0)/#z) elseif @formula6 == 37 temp3 = atan((1,0)/#z) elseif @formula6 == 38 temp3 = acos((1,0)/#z) elseif @formula6 == 39 temp3 = asin((1,0)/#z) elseif @formula6 == 40 temp3 = sin(1/#z) elseif @formula6 == 41 temp3 = cos(1/#z) elseif @formula6 == 42 temp3 = tan(1/#z) elseif @formula6 == 43 temp3 = cotan(1/#z) elseif @formula6 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula6 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula6 == 46 temp3 = cotanh(#z) elseif @formula6 == 47 temp3 = (1,0)/cosh(#z) elseif @formula6 == 48 temp3 = (1,0)/sinh(#z) elseif @formula6 == 49 temp3 = atanh(1/#z) else ; @formula6 == 50 temp3 = acosh(1/#z) endif ; formula6-3 endif ; formula6-2 elseif @formula6 <= 75 if @formula6 == 51 temp3 = asinh(1/#z) elseif @formula6 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula6 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula6 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula6 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula6 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula6 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula6 == 58 temp3 = sinh(1/#z) elseif @formula6 == 59 temp3 = cosh(1/#z) elseif @formula6 == 60 temp3 = tanh(1/#z) elseif @formula6 == 61 temp3 = cotanh(1/#z) elseif @formula6 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula6 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula6 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula6 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula6 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula6 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula6 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula6 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula6 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula6 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula6 == 75 temp3 = exp(2*#z) endif ; formula6-2 else ; 75 < @formula6 <= 100 if @formula6 == 76 temp3 = exp(-2*#z) elseif @formula6 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula6 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula6 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula6 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula6 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula6 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 84 temp3 = sin(#z)*exp(#z) elseif @formula6 == 85 temp3 = cos(#z)*exp(#z) elseif @formula6 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula6 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula6 == 88 temp3 = sin(#z)*log(#z) elseif @formula6 == 89 temp3 = cos(#z)*log(#z) elseif @formula6 == 90 temp3 = sinh(#z)*log(#z) else ; @formula6 == 91 temp3 = cosh(#z)*log(#z) endif ; formula6-2 endif ; formula6-1 ; Execute formula5 option if @formula5 == 0 temp2 = #z elseif @formula5 <= 50 if @formula5 <= 25 if @formula5 == 1 temp2 = log(z) elseif @formula5 == 2 temp2 = exp(#z) elseif @formula5 == 3 temp2 = #z ^ #z elseif @formula5 == 4 temp2 = sin(#z) elseif @formula5 == 5 temp2 = cos(#z) elseif @formula5 == 6 temp2 = tan( #z ) elseif @formula5 == 7 temp2 = asin(#z) elseif @formula5 == 8 temp2 = acos( #z) elseif @formula5 == 9 temp2 = atan(#z) elseif @formula5 == 10 temp2 = sinh( #z ) elseif @formula5 == 11 temp2 = cosh( #z ) elseif @formula5 == 12 temp2 = tanh( #z ) elseif @formula5 == 13 temp2 = asinh( #z ) elseif @formula5 == 14 temp2 = acosh( #z ) elseif @formula5 == 15 temp2 = atanh( #z ) elseif @formula5 == 16 temp2 = log( 1/#z ) elseif @formula5 == 17 temp2 = log(log( #z )) elseif @formula5 == 18 temp2 = exp( -#z ) elseif @formula5 == 19 temp2 = exp( 1/#z ) elseif @formula5 == 20 temp2 = #z^( -#z ) elseif @formula5 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula5 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula5 == 24 temp2 = cotan( #z ) else ; @formula5 == 25 temp2 = (1,0)/cos( #z ) endif ; formula5-3 else ; 25 < @formula5 <= 50 if @formula5 == 26 temp2 = (1,0)/sin(#z) elseif @formula5 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula5 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 30 temp2 = #z^(#z^#z) elseif @formula5 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula5 == 32 temp2 = log( -#z ) elseif @formula5 == 33 temp2 = (1,0)/log( #z ) elseif @formula5 == 34 temp2 = sin(#z) * cos(#z) elseif @formula5 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 36 temp2 = exp((-1,0)/#z) elseif @formula5 == 37 temp2 = atan((1,0)/#z) elseif @formula5 == 38 temp2 = acos((1,0)/#z) elseif @formula5 == 39 temp2 = asin((1,0)/#z) elseif @formula5 == 40 temp2 = sin(1/#z) elseif @formula5 == 41 temp2 = cos(1/#z) elseif @formula5 == 42 temp2 = tan(1/#z) elseif @formula5 == 43 temp2 = cotan(1/#z) elseif @formula5 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula5 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula5 == 46 temp2 = cotanh(#z) elseif @formula5 == 47 temp2 = (1,0)/cosh(#z) elseif @formula5 == 48 temp2 = (1,0)/sinh(#z) elseif @formula5 == 49 temp2 = atanh(1/#z) else ; @formula5 == 50 temp2 = acosh(1/#z) endif ; formula5-3 endif ; formula5-2 elseif @formula5 <= 75 if @formula5 == 51 temp2 = asinh(1/#z) elseif @formula5 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula5 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula5 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula5 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula5 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula5 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula5 == 58 temp2 = sinh(1/#z) elseif @formula5 == 59 temp2 = cosh(1/#z) elseif @formula5 == 60 temp2 = tanh(1/#z) elseif @formula5 == 61 temp2 = cotanh(1/#z) elseif @formula5 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula5 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula5 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula5 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula5 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula5 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula5 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula5 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula5 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula5 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula5 == 75 temp2 = exp(2*#z) endif ; formula5-2 else ; 75 < @formula5 <= 100 if @formula5 == 76 temp2 = exp(-2*#z) elseif @formula5 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula5 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula5 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula5 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula5 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula5 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 84 temp2 = sin(#z)*exp(#z) elseif @formula5 == 85 temp2 = cos(#z)*exp(#z) elseif @formula5 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula5 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula5 == 88 temp2 = sin(#z)*log(#z) elseif @formula5 == 89 temp2 = cos(#z)*log(#z) elseif @formula5 == 90 temp2 = sinh(#z)*log(#z) else ; @formula5 == 91 temp2 = cosh(#z)*log(#z) endif ; formula5-2 endif ; formula5-1 ; Execute formula4 option if @formula4 == 0 temp1 = #z elseif @formula4 <= 50 if @formula4 <= 25 if @formula4 == 1 temp1 = log(z) elseif @formula4 == 2 temp1 = exp(#z) elseif @formula4 == 3 temp1 = #z ^ #z elseif @formula4 == 4 temp1 = sin(#z) elseif @formula4 == 5 temp1 = cos(#z) elseif @formula4 == 6 temp1 = tan( #z ) elseif @formula4 == 7 temp1 = asin(#z) elseif @formula4 == 8 temp1 = acos( #z) elseif @formula4 == 9 temp1 = atan(#z) elseif @formula4 == 10 temp1 = sinh( #z ) elseif @formula4 == 11 temp1 = cosh( #z ) elseif @formula4 == 12 temp1 = tanh( #z ) elseif @formula4 == 13 temp1 = asinh( #z ) elseif @formula4 == 14 temp1 = acosh( #z ) elseif @formula4 == 15 temp1 = atanh( #z ) elseif @formula4 == 16 temp1 = log( 1/#z ) elseif @formula4 == 17 temp1 = log(log( #z )) elseif @formula4 == 18 temp1 = exp( -#z ) elseif @formula4 == 19 temp1 = exp( 1/#z ) elseif @formula4 == 20 temp1 = #z^( -#z ) elseif @formula4 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula4 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula4 == 24 temp1 = cotan( #z ) else ; @formula4 == 25 temp1 = (1,0)/cos( #z ) endif ; formula4-3 else ; 25 < @formula4 <= 50 if @formula4 == 26 temp1 = (1,0)/sin(#z) elseif @formula4 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula4 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 30 temp1 = #z^(#z^#z) elseif @formula4 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula4 == 32 temp1 = log( -#z ) elseif @formula4 == 33 temp1 = (1,0)/log( #z ) elseif @formula4 == 34 temp1 = sin(#z) * cos(#z) elseif @formula4 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 36 temp1 = exp((-1,0)/#z) elseif @formula4 == 37 temp1 = atan((1,0)/#z) elseif @formula4 == 38 temp1 = acos((1,0)/#z) elseif @formula4 == 39 temp1 = asin((1,0)/#z) elseif @formula4 == 40 temp1 = sin(1/#z) elseif @formula4 == 41 temp1 = cos(1/#z) elseif @formula4 == 42 temp1 = tan(1/#z) elseif @formula4 == 43 temp1 = cotan(1/#z) elseif @formula4 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula4 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula4 == 46 temp1 = cotanh(#z) elseif @formula4 == 47 temp1 = (1,0)/cosh(#z) elseif @formula4 == 48 temp1 = (1,0)/sinh(#z) elseif @formula4 == 49 temp1 = atanh(1/#z) else ; @formula4 == 50 temp1 = acosh(1/#z) endif ; formula4-3 endif ; formula4-2 elseif @formula4 <= 75 if @formula4 == 51 temp1 = asinh(1/#z) elseif @formula4 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula4 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula4 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula4 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula4 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula4 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula4 == 58 temp1 = sinh(1/#z) elseif @formula4 == 59 temp1 = cosh(1/#z) elseif @formula4 == 60 temp1 = tanh(1/#z) elseif @formula4 == 61 temp1 = cotanh(1/#z) elseif @formula4 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula4 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula4 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula4 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula4 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula4 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula4 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula4 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula4 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula4 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula4 == 75 temp1 = exp(2*#z) endif ; formula4-2 else ; 75 < @formula4 <= 100 if @formula4 == 76 temp1 = exp(-2*#z) elseif @formula4 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula4 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula4 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula4 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula4 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula4 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 84 temp1 = sin(#z)*exp(#z) elseif @formula4 == 85 temp1 = cos(#z)*exp(#z) elseif @formula4 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula4 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula4 == 88 temp1 = sin(#z)*log(#z) elseif @formula4 == 89 temp1 = cos(#z)*log(#z) elseif @formula4 == 90 temp1 = sinh(#z)*log(#z) else ; @formula4 == 91 temp1 = cosh(#z)*log(#z) endif ; formula4-2 endif ; formula4-1 z = @coeff6 * temp3^@power6 + @coeff5 * temp2^@power5 + \ @coeff4 * temp1^@power4 + @coeffp * jc endif ; remainder if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "N-cycle Trinomial1(Fn) +p" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param cycle caption = "Cycle Length" default = 5 min = 2 hint = "Frequency of execution of B-series formulas. The A-series formulas \ are executed except on iterations divisible by N (i.e., 0 mod N), when \ the B-series formulas are executed instead" endparam param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the A-series (main) trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the A-series trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the A-series trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the A-series trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the A-series trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the A-series trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the A-series trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the A-series trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the A-series trinomial" endparam param power6 caption = "Power 3B" default = (4,0) hint = "This is the exponent used for the third term of the B-series (secondary) \ trinomial, executed only on iterations divisible by the Cycle Length, N, \ in place of the main (A-series) formulas" endparam param coeff6 caption = "Coeff 3B" default = (-1,0) hint = "This is the coefficient of the third term in the B-series trinomial" endparam param formula6 caption = "Formula 3B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the B-series trinomial" endparam param power5 caption = "Power 2B" default = (3,0) hint = "This is the exponent used for the second term of the B-series trinomial" endparam param coeff5 caption = "Coeff 2B" default = (1,0) hint = "This is the coefficient of the second term in the B-series trinomial" endparam param formula5 caption = "Formula 2B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the B-series trinomial" endparam param power4 caption = "Power 1B" default = (2,0) hint = "This is the exponent used for the first term of the B-series trinomial" endparam param coeff4 caption = "Coeff 1B" default = (-1,0) hint = "This is the coefficient of the first term in the B-series trinomial" endparam param formula4 caption = "Formula 1B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the B-series trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Ntrinomial1c(Fn)+P-J" cycle = cycle jconstant = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 power6 = power6 coeff6 = coeff6 formula6 = formula6 power5 = power5 coeff5 = coeff5 formula5 = formula5 power4 = power4 coeff4 = coeff4 formula4 = formula4 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Ntrinomial1b*Fn+P-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z)*z(n)^power3 + c2*f2(z)*z(n)^power2 + c1*f1(z)*z(n)^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) int iteration = int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: iteration = iteration + 1 remainder = iteration % @cycle zblend = z if remainder != 0 ; execute A-series formulas ; Execute formula3 option if @formula3 == 0 temp3 = (1,0) elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = (1,0) elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = (1,0) elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3 * z^@power3 + @coeff2 * temp2 * z^@power2 + \ @coeff1 * temp1 * z^@power1 + @coeffp * jc else ; execute B-series formulas ; Execute formula6 option if @formula6 == 0 temp3 = (1,0) elseif @formula6 <= 50 if @formula6 <= 25 if @formula6 == 1 temp3 = log(z) elseif @formula6 == 2 temp3 = exp(#z) elseif @formula6 == 3 temp3 = #z ^ #z elseif @formula6 == 4 temp3 = sin(#z) elseif @formula6 == 5 temp3 = cos(#z) elseif @formula6 == 6 temp3 = tan( #z ) elseif @formula6 == 7 temp3 = asin(#z) elseif @formula6 == 8 temp3 = acos( #z) elseif @formula6 == 9 temp3 = atan(#z) elseif @formula6 == 10 temp3 = sinh( #z ) elseif @formula6 == 11 temp3 = cosh( #z ) elseif @formula6 == 12 temp3 = tanh( #z ) elseif @formula6 == 13 temp3 = asinh( #z ) elseif @formula6 == 14 temp3 = acosh( #z ) elseif @formula6 == 15 temp3 = atanh( #z ) elseif @formula6 == 16 temp3 = log( 1/#z ) elseif @formula6 == 17 temp3 = log(log( #z )) elseif @formula6 == 18 temp3 = exp( -#z ) elseif @formula6 == 19 temp3 = exp( 1/#z ) elseif @formula6 == 20 temp3 = #z^( -#z ) elseif @formula6 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula6 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula6 == 24 temp3 = cotan( #z ) else ; @formula6 == 25 temp3 = (1,0)/cos( #z ) endif ; formula6-3 else ; 25 < @formula6 <= 50 if @formula6 == 26 temp3 = (1,0)/sin(#z) elseif @formula6 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula6 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 30 temp3 = #z^(#z^#z) elseif @formula6 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula6 == 32 temp3 = log( -#z ) elseif @formula6 == 33 temp3 = (1,0)/log( #z ) elseif @formula6 == 34 temp3 = sin(#z) * cos(#z) elseif @formula6 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 36 temp3 = exp((-1,0)/#z) elseif @formula6 == 37 temp3 = atan((1,0)/#z) elseif @formula6 == 38 temp3 = acos((1,0)/#z) elseif @formula6 == 39 temp3 = asin((1,0)/#z) elseif @formula6 == 40 temp3 = sin(1/#z) elseif @formula6 == 41 temp3 = cos(1/#z) elseif @formula6 == 42 temp3 = tan(1/#z) elseif @formula6 == 43 temp3 = cotan(1/#z) elseif @formula6 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula6 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula6 == 46 temp3 = cotanh(#z) elseif @formula6 == 47 temp3 = (1,0)/cosh(#z) elseif @formula6 == 48 temp3 = (1,0)/sinh(#z) elseif @formula6 == 49 temp3 = atanh(1/#z) else ; @formula6 == 50 temp3 = acosh(1/#z) endif ; formula6-3 endif ; formula6-2 elseif @formula6 <= 75 if @formula6 == 51 temp3 = asinh(1/#z) elseif @formula6 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula6 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula6 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula6 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula6 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula6 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula6 == 58 temp3 = sinh(1/#z) elseif @formula6 == 59 temp3 = cosh(1/#z) elseif @formula6 == 60 temp3 = tanh(1/#z) elseif @formula6 == 61 temp3 = cotanh(1/#z) elseif @formula6 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula6 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula6 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula6 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula6 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula6 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula6 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula6 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula6 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula6 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula6 == 75 temp3 = exp(2*#z) endif ; formula6-2 else ; 75 < @formula6 <= 100 if @formula6 == 76 temp3 = exp(-2*#z) elseif @formula6 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula6 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula6 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula6 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula6 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula6 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 84 temp3 = sin(#z)*exp(#z) elseif @formula6 == 85 temp3 = cos(#z)*exp(#z) elseif @formula6 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula6 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula6 == 88 temp3 = sin(#z)*log(#z) elseif @formula6 == 89 temp3 = cos(#z)*log(#z) elseif @formula6 == 90 temp3 = sinh(#z)*log(#z) else ; @formula6 == 91 temp3 = cosh(#z)*log(#z) endif ; formula6-2 endif ; formula6-1 ; Execute formula5 option if @formula5 == 0 temp2 = (1,0) elseif @formula5 <= 50 if @formula5 <= 25 if @formula5 == 1 temp2 = log(z) elseif @formula5 == 2 temp2 = exp(#z) elseif @formula5 == 3 temp2 = #z ^ #z elseif @formula5 == 4 temp2 = sin(#z) elseif @formula5 == 5 temp2 = cos(#z) elseif @formula5 == 6 temp2 = tan( #z ) elseif @formula5 == 7 temp2 = asin(#z) elseif @formula5 == 8 temp2 = acos( #z) elseif @formula5 == 9 temp2 = atan(#z) elseif @formula5 == 10 temp2 = sinh( #z ) elseif @formula5 == 11 temp2 = cosh( #z ) elseif @formula5 == 12 temp2 = tanh( #z ) elseif @formula5 == 13 temp2 = asinh( #z ) elseif @formula5 == 14 temp2 = acosh( #z ) elseif @formula5 == 15 temp2 = atanh( #z ) elseif @formula5 == 16 temp2 = log( 1/#z ) elseif @formula5 == 17 temp2 = log(log( #z )) elseif @formula5 == 18 temp2 = exp( -#z ) elseif @formula5 == 19 temp2 = exp( 1/#z ) elseif @formula5 == 20 temp2 = #z^( -#z ) elseif @formula5 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula5 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula5 == 24 temp2 = cotan( #z ) else ; @formula5 == 25 temp2 = (1,0)/cos( #z ) endif ; formula5-3 else ; 25 < @formula5 <= 50 if @formula5 == 26 temp2 = (1,0)/sin(#z) elseif @formula5 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula5 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 30 temp2 = #z^(#z^#z) elseif @formula5 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula5 == 32 temp2 = log( -#z ) elseif @formula5 == 33 temp2 = (1,0)/log( #z ) elseif @formula5 == 34 temp2 = sin(#z) * cos(#z) elseif @formula5 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 36 temp2 = exp((-1,0)/#z) elseif @formula5 == 37 temp2 = atan((1,0)/#z) elseif @formula5 == 38 temp2 = acos((1,0)/#z) elseif @formula5 == 39 temp2 = asin((1,0)/#z) elseif @formula5 == 40 temp2 = sin(1/#z) elseif @formula5 == 41 temp2 = cos(1/#z) elseif @formula5 == 42 temp2 = tan(1/#z) elseif @formula5 == 43 temp2 = cotan(1/#z) elseif @formula5 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula5 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula5 == 46 temp2 = cotanh(#z) elseif @formula5 == 47 temp2 = (1,0)/cosh(#z) elseif @formula5 == 48 temp2 = (1,0)/sinh(#z) elseif @formula5 == 49 temp2 = atanh(1/#z) else ; @formula5 == 50 temp2 = acosh(1/#z) endif ; formula5-3 endif ; formula5-2 elseif @formula5 <= 75 if @formula5 == 51 temp2 = asinh(1/#z) elseif @formula5 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula5 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula5 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula5 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula5 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula5 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula5 == 58 temp2 = sinh(1/#z) elseif @formula5 == 59 temp2 = cosh(1/#z) elseif @formula5 == 60 temp2 = tanh(1/#z) elseif @formula5 == 61 temp2 = cotanh(1/#z) elseif @formula5 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula5 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula5 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula5 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula5 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula5 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula5 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula5 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula5 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula5 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula5 == 75 temp2 = exp(2*#z) endif ; formula5-2 else ; 75 < @formula5 <= 100 if @formula5 == 76 temp2 = exp(-2*#z) elseif @formula5 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula5 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula5 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula5 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula5 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula5 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 84 temp2 = sin(#z)*exp(#z) elseif @formula5 == 85 temp2 = cos(#z)*exp(#z) elseif @formula5 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula5 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula5 == 88 temp2 = sin(#z)*log(#z) elseif @formula5 == 89 temp2 = cos(#z)*log(#z) elseif @formula5 == 90 temp2 = sinh(#z)*log(#z) else ; @formula5 == 91 temp2 = cosh(#z)*log(#z) endif ; formula5-2 endif ; formula5-1 ; Execute formula4 option if @formula4 == 0 temp1 = (1,0) elseif @formula4 <= 50 if @formula4 <= 25 if @formula4 == 1 temp1 = log(z) elseif @formula4 == 2 temp1 = exp(#z) elseif @formula4 == 3 temp1 = #z ^ #z elseif @formula4 == 4 temp1 = sin(#z) elseif @formula4 == 5 temp1 = cos(#z) elseif @formula4 == 6 temp1 = tan( #z ) elseif @formula4 == 7 temp1 = asin(#z) elseif @formula4 == 8 temp1 = acos( #z) elseif @formula4 == 9 temp1 = atan(#z) elseif @formula4 == 10 temp1 = sinh( #z ) elseif @formula4 == 11 temp1 = cosh( #z ) elseif @formula4 == 12 temp1 = tanh( #z ) elseif @formula4 == 13 temp1 = asinh( #z ) elseif @formula4 == 14 temp1 = acosh( #z ) elseif @formula4 == 15 temp1 = atanh( #z ) elseif @formula4 == 16 temp1 = log( 1/#z ) elseif @formula4 == 17 temp1 = log(log( #z )) elseif @formula4 == 18 temp1 = exp( -#z ) elseif @formula4 == 19 temp1 = exp( 1/#z ) elseif @formula4 == 20 temp1 = #z^( -#z ) elseif @formula4 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula4 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula4 == 24 temp1 = cotan( #z ) else ; @formula4 == 25 temp1 = (1,0)/cos( #z ) endif ; formula4-3 else ; 25 < @formula4 <= 50 if @formula4 == 26 temp1 = (1,0)/sin(#z) elseif @formula4 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula4 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 30 temp1 = #z^(#z^#z) elseif @formula4 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula4 == 32 temp1 = log( -#z ) elseif @formula4 == 33 temp1 = (1,0)/log( #z ) elseif @formula4 == 34 temp1 = sin(#z) * cos(#z) elseif @formula4 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 36 temp1 = exp((-1,0)/#z) elseif @formula4 == 37 temp1 = atan((1,0)/#z) elseif @formula4 == 38 temp1 = acos((1,0)/#z) elseif @formula4 == 39 temp1 = asin((1,0)/#z) elseif @formula4 == 40 temp1 = sin(1/#z) elseif @formula4 == 41 temp1 = cos(1/#z) elseif @formula4 == 42 temp1 = tan(1/#z) elseif @formula4 == 43 temp1 = cotan(1/#z) elseif @formula4 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula4 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula4 == 46 temp1 = cotanh(#z) elseif @formula4 == 47 temp1 = (1,0)/cosh(#z) elseif @formula4 == 48 temp1 = (1,0)/sinh(#z) elseif @formula4 == 49 temp1 = atanh(1/#z) else ; @formula4 == 50 temp1 = acosh(1/#z) endif ; formula4-3 endif ; formula4-2 elseif @formula4 <= 75 if @formula4 == 51 temp1 = asinh(1/#z) elseif @formula4 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula4 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula4 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula4 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula4 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula4 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula4 == 58 temp1 = sinh(1/#z) elseif @formula4 == 59 temp1 = cosh(1/#z) elseif @formula4 == 60 temp1 = tanh(1/#z) elseif @formula4 == 61 temp1 = cotanh(1/#z) elseif @formula4 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula4 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula4 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula4 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula4 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula4 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula4 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula4 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula4 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula4 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula4 == 75 temp1 = exp(2*#z) endif ; formula4-2 else ; 75 < @formula4 <= 100 if @formula4 == 76 temp1 = exp(-2*#z) elseif @formula4 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula4 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula4 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula4 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula4 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula4 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 84 temp1 = sin(#z)*exp(#z) elseif @formula4 == 85 temp1 = cos(#z)*exp(#z) elseif @formula4 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula4 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula4 == 88 temp1 = sin(#z)*log(#z) elseif @formula4 == 89 temp1 = cos(#z)*log(#z) elseif @formula4 == 90 temp1 = sinh(#z)*log(#z) else ; @formula4 == 91 temp1 = cosh(#z)*log(#z) endif ; formula4-2 endif ; formula4-1 z = @coeff6 * temp3 * z^@power6 + @coeff5 * temp2 * z^@power5 + \ @coeff4 * temp1 * z^@power4 + @coeffp * jc endif ; remainder if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "N-cycle Trinom1*Fn Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param cycle caption = "Cycle Length" default = 5 min = 2 hint = "Frequency of execution of B-series formulas. The A-series formulas \ are executed except on iterations divisible by N (i.e., 0 mod N), when \ the B-series formulas are executed" endparam param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the A-series (main) trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the A-series trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the A-series trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the A-series (main) trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the A-series trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the A-series trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the A-series (main) trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the A-series trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the A-series trinomial" endparam param power6 caption = "Power 3B" default = (4,0) hint = "This is the exponent used for the third term of the B-series (secondary) \ trinomial (executed every N-iterations in place of the A-series trinomial)" endparam param coeff6 caption = "Coeff 3B" default = (-1,0) hint = "This is the coefficient of the third term in the B-series trinomial" endparam param formula6 caption = "Formula 3B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the third term of the B-series trinomial" endparam param power5 caption = "Power 2B" default = (3,0) hint = "This is the exponent used for the second term of the B-series (secondary) trinomial" endparam param coeff5 caption = "Coeff 2B" default = (1,0) hint = "This is the coefficient of the second term in the B-series trinomial" endparam param formula5 caption = "Formula 2B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the second term of the B-series trinomial" endparam param power4 caption = "Power 1B" default = (2,0) hint = "This is the exponent used for the first term of the B-series (main) trinomial" endparam param coeff4 caption = "Coeff 1B" default = (-1,0) hint = "This is the coefficient of the first term in the B-series trinomial" endparam param formula4 caption = "Formula 1B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "Sets the formula that is multiplied by the first term of the B-series trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Ntrinomial1b*Fn+P" cycle = cycle perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 power6 = power6 coeff6 = coeff6 formula6 = formula6 power5 = power5 coeff5 = coeff5 formula5 = formula5 power4 = power4 coeff4 = coeff4 formula4 = formula4 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-Ntrinomial1c(Fn)+P-J { ; jam 011214 ; General trinomial Mandelbrot/Julia. Formula executed is ; z(n+1) = c3*f3(z(n))^power3 + c2*f2(z(n))^power2 + c1*f1(z(n))^power1 + c0*g(pixel), ; where f1, f2, f3, and g are from my standard function library. ; For type Mandelbrot, g operates on #pixel; ; for type Julia, g operates on the seed constant. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = (0,0) ; temp/spare scratch variable complex temp3 = complex temp2 = complex temp1 = (0,0) int iteration = int remainder = 0 complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 temp2 = sinh(jc), zextra = cosh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 95 temp2 = sin(jc), zextra = cos(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), temp2 = sinh(jc) jc = temp2*temp2*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zblend = z iteration = iteration + 1 remainder = iteration % @cycle if remainder != 0 ; execute A-series formulas ; Execute formula3 option if @formula3 == 0 temp3 = #z elseif @formula3 <= 50 if @formula3 <= 25 if @formula3 == 1 temp3 = log(z) elseif @formula3 == 2 temp3 = exp(#z) elseif @formula3 == 3 temp3 = #z ^ #z elseif @formula3 == 4 temp3 = sin(#z) elseif @formula3 == 5 temp3 = cos(#z) elseif @formula3 == 6 temp3 = tan( #z ) elseif @formula3 == 7 temp3 = asin(#z) elseif @formula3 == 8 temp3 = acos( #z) elseif @formula3 == 9 temp3 = atan(#z) elseif @formula3 == 10 temp3 = sinh( #z ) elseif @formula3 == 11 temp3 = cosh( #z ) elseif @formula3 == 12 temp3 = tanh( #z ) elseif @formula3 == 13 temp3 = asinh( #z ) elseif @formula3 == 14 temp3 = acosh( #z ) elseif @formula3 == 15 temp3 = atanh( #z ) elseif @formula3 == 16 temp3 = log( 1/#z ) elseif @formula3 == 17 temp3 = log(log( #z )) elseif @formula3 == 18 temp3 = exp( -#z ) elseif @formula3 == 19 temp3 = exp( 1/#z ) elseif @formula3 == 20 temp3 = #z^( -#z ) elseif @formula3 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula3 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula3 == 24 temp3 = cotan( #z ) else ; @formula3 == 25 temp3 = (1,0)/cos( #z ) endif ; formula3-3 else ; 25 < @formula3 <= 50 if @formula3 == 26 temp3 = (1,0)/sin(#z) elseif @formula3 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula3 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula3 == 30 temp3 = #z^(#z^#z) elseif @formula3 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula3 == 32 temp3 = log( -#z ) elseif @formula3 == 33 temp3 = (1,0)/log( #z ) elseif @formula3 == 34 temp3 = sin(#z) * cos(#z) elseif @formula3 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula3 == 36 temp3 = exp((-1,0)/#z) elseif @formula3 == 37 temp3 = atan((1,0)/#z) elseif @formula3 == 38 temp3 = acos((1,0)/#z) elseif @formula3 == 39 temp3 = asin((1,0)/#z) elseif @formula3 == 40 temp3 = sin(1/#z) elseif @formula3 == 41 temp3 = cos(1/#z) elseif @formula3 == 42 temp3 = tan(1/#z) elseif @formula3 == 43 temp3 = cotan(1/#z) elseif @formula3 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula3 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula3 == 46 temp3 = cotanh(#z) elseif @formula3 == 47 temp3 = (1,0)/cosh(#z) elseif @formula3 == 48 temp3 = (1,0)/sinh(#z) elseif @formula3 == 49 temp3 = atanh(1/#z) else ; @formula3 == 50 temp3 = acosh(1/#z) endif ; formula3-3 endif ; formula3-2 elseif @formula3 <= 75 if @formula3 == 51 temp3 = asinh(1/#z) elseif @formula3 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula3 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula3 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula3 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula3 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula3 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula3 == 58 temp3 = sinh(1/#z) elseif @formula3 == 59 temp3 = cosh(1/#z) elseif @formula3 == 60 temp3 = tanh(1/#z) elseif @formula3 == 61 temp3 = cotanh(1/#z) elseif @formula3 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula3 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula3 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula3 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula3 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula3 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula3 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula3 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula3 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula3 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula3 == 75 temp3 = exp(2*#z) endif ; formula3-2 else ; 75 < @formula3 <= 100 if @formula3 == 76 temp3 = exp(-2*#z) elseif @formula3 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula3 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula3 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula3 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula3 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula3 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula3 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula3 == 84 temp3 = sin(#z)*exp(#z) elseif @formula3 == 85 temp3 = cos(#z)*exp(#z) elseif @formula3 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula3 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula3 == 88 temp3 = sin(#z)*log(#z) elseif @formula3 == 89 temp3 = cos(#z)*log(#z) elseif @formula3 == 90 temp3 = sinh(#z)*log(#z) else ; @formula3 == 91 temp3 = cosh(#z)*log(#z) endif ; formula3-2 endif ; formula3-1 ; Execute formula2 option if @formula2 == 0 temp2 = #z elseif @formula2 <= 50 if @formula2 <= 25 if @formula2 == 1 temp2 = log(z) elseif @formula2 == 2 temp2 = exp(#z) elseif @formula2 == 3 temp2 = #z ^ #z elseif @formula2 == 4 temp2 = sin(#z) elseif @formula2 == 5 temp2 = cos(#z) elseif @formula2 == 6 temp2 = tan( #z ) elseif @formula2 == 7 temp2 = asin(#z) elseif @formula2 == 8 temp2 = acos( #z) elseif @formula2 == 9 temp2 = atan(#z) elseif @formula2 == 10 temp2 = sinh( #z ) elseif @formula2 == 11 temp2 = cosh( #z ) elseif @formula2 == 12 temp2 = tanh( #z ) elseif @formula2 == 13 temp2 = asinh( #z ) elseif @formula2 == 14 temp2 = acosh( #z ) elseif @formula2 == 15 temp2 = atanh( #z ) elseif @formula2 == 16 temp2 = log( 1/#z ) elseif @formula2 == 17 temp2 = log(log( #z )) elseif @formula2 == 18 temp2 = exp( -#z ) elseif @formula2 == 19 temp2 = exp( 1/#z ) elseif @formula2 == 20 temp2 = #z^( -#z ) elseif @formula2 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula2 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula2 == 24 temp2 = cotan( #z ) else ; @formula2 == 25 temp2 = (1,0)/cos( #z ) endif ; formula2-3 else ; 25 < @formula2 <= 50 if @formula2 == 26 temp2 = (1,0)/sin(#z) elseif @formula2 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula2 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula2 == 30 temp2 = #z^(#z^#z) elseif @formula2 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula2 == 32 temp2 = log( -#z ) elseif @formula2 == 33 temp2 = (1,0)/log( #z ) elseif @formula2 == 34 temp2 = sin(#z) * cos(#z) elseif @formula2 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula2 == 36 temp2 = exp((-1,0)/#z) elseif @formula2 == 37 temp2 = atan((1,0)/#z) elseif @formula2 == 38 temp2 = acos((1,0)/#z) elseif @formula2 == 39 temp2 = asin((1,0)/#z) elseif @formula2 == 40 temp2 = sin(1/#z) elseif @formula2 == 41 temp2 = cos(1/#z) elseif @formula2 == 42 temp2 = tan(1/#z) elseif @formula2 == 43 temp2 = cotan(1/#z) elseif @formula2 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula2 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula2 == 46 temp2 = cotanh(#z) elseif @formula2 == 47 temp2 = (1,0)/cosh(#z) elseif @formula2 == 48 temp2 = (1,0)/sinh(#z) elseif @formula2 == 49 temp2 = atanh(1/#z) else ; @formula2 == 50 temp2 = acosh(1/#z) endif ; formula2-3 endif ; formula2-2 elseif @formula2 <= 75 if @formula2 == 51 temp2 = asinh(1/#z) elseif @formula2 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula2 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula2 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula2 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula2 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula2 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula2 == 58 temp2 = sinh(1/#z) elseif @formula2 == 59 temp2 = cosh(1/#z) elseif @formula2 == 60 temp2 = tanh(1/#z) elseif @formula2 == 61 temp2 = cotanh(1/#z) elseif @formula2 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula2 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula2 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula2 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula2 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula2 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula2 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula2 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula2 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula2 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula2 == 75 temp2 = exp(2*#z) endif ; formula2-2 else ; 75 < @formula2 <= 100 if @formula2 == 76 temp2 = exp(-2*#z) elseif @formula2 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula2 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula2 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula2 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula2 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula2 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula2 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula2 == 84 temp2 = sin(#z)*exp(#z) elseif @formula2 == 85 temp2 = cos(#z)*exp(#z) elseif @formula2 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula2 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula2 == 88 temp2 = sin(#z)*log(#z) elseif @formula2 == 89 temp2 = cos(#z)*log(#z) elseif @formula2 == 90 temp2 = sinh(#z)*log(#z) else ; @formula2 == 91 temp2 = cosh(#z)*log(#z) endif ; formula2-2 endif ; formula2-1 ; Execute formula1 option if @formula1 == 0 temp1 = #z elseif @formula1 <= 50 if @formula1 <= 25 if @formula1 == 1 temp1 = log(z) elseif @formula1 == 2 temp1 = exp(#z) elseif @formula1 == 3 temp1 = #z ^ #z elseif @formula1 == 4 temp1 = sin(#z) elseif @formula1 == 5 temp1 = cos(#z) elseif @formula1 == 6 temp1 = tan( #z ) elseif @formula1 == 7 temp1 = asin(#z) elseif @formula1 == 8 temp1 = acos( #z) elseif @formula1 == 9 temp1 = atan(#z) elseif @formula1 == 10 temp1 = sinh( #z ) elseif @formula1 == 11 temp1 = cosh( #z ) elseif @formula1 == 12 temp1 = tanh( #z ) elseif @formula1 == 13 temp1 = asinh( #z ) elseif @formula1 == 14 temp1 = acosh( #z ) elseif @formula1 == 15 temp1 = atanh( #z ) elseif @formula1 == 16 temp1 = log( 1/#z ) elseif @formula1 == 17 temp1 = log(log( #z )) elseif @formula1 == 18 temp1 = exp( -#z ) elseif @formula1 == 19 temp1 = exp( 1/#z ) elseif @formula1 == 20 temp1 = #z^( -#z ) elseif @formula1 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula1 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula1 == 24 temp1 = cotan( #z ) else ; @formula1 == 25 temp1 = (1,0)/cos( #z ) endif ; formula1-3 else ; 25 < @formula1 <= 50 if @formula1 == 26 temp1 = (1,0)/sin(#z) elseif @formula1 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula1 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula1 == 30 temp1 = #z^(#z^#z) elseif @formula1 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula1 == 32 temp1 = log( -#z ) elseif @formula1 == 33 temp1 = (1,0)/log( #z ) elseif @formula1 == 34 temp1 = sin(#z) * cos(#z) elseif @formula1 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula1 == 36 temp1 = exp((-1,0)/#z) elseif @formula1 == 37 temp1 = atan((1,0)/#z) elseif @formula1 == 38 temp1 = acos((1,0)/#z) elseif @formula1 == 39 temp1 = asin((1,0)/#z) elseif @formula1 == 40 temp1 = sin(1/#z) elseif @formula1 == 41 temp1 = cos(1/#z) elseif @formula1 == 42 temp1 = tan(1/#z) elseif @formula1 == 43 temp1 = cotan(1/#z) elseif @formula1 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula1 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula1 == 46 temp1 = cotanh(#z) elseif @formula1 == 47 temp1 = (1,0)/cosh(#z) elseif @formula1 == 48 temp1 = (1,0)/sinh(#z) elseif @formula1 == 49 temp1 = atanh(1/#z) else ; @formula1 == 50 temp1 = acosh(1/#z) endif ; formula1-3 endif ; formula1-2 elseif @formula1 <= 75 if @formula1 == 51 temp1 = asinh(1/#z) elseif @formula1 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula1 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula1 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula1 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula1 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula1 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula1 == 58 temp1 = sinh(1/#z) elseif @formula1 == 59 temp1 = cosh(1/#z) elseif @formula1 == 60 temp1 = tanh(1/#z) elseif @formula1 == 61 temp1 = cotanh(1/#z) elseif @formula1 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula1 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula1 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula1 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula1 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula1 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula1 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula1 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula1 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula1 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula1 == 75 temp1 = exp(2*#z) endif ; formula1-2 else ; 75 < @formula1 <= 100 if @formula1 == 76 temp1 = exp(-2*#z) elseif @formula1 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula1 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula1 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula1 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula1 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula1 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula1 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula1 == 84 temp1 = sin(#z)*exp(#z) elseif @formula1 == 85 temp1 = cos(#z)*exp(#z) elseif @formula1 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula1 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula1 == 88 temp1 = sin(#z)*log(#z) elseif @formula1 == 89 temp1 = cos(#z)*log(#z) elseif @formula1 == 90 temp1 = sinh(#z)*log(#z) else ; @formula1 == 91 temp1 = cosh(#z)*log(#z) endif ; formula1-2 endif ; formula1-1 z = @coeff3 * temp3^@power3 + @coeff2 * temp2^@power2 + \ @coeff1 * temp1^@power1 + @coeffp * jc else ; execute B-series formulas ; Execute formula6 option if @formula6 == 0 temp3 = #z elseif @formula6 <= 50 if @formula6 <= 25 if @formula6 == 1 temp3 = log(z) elseif @formula6 == 2 temp3 = exp(#z) elseif @formula6 == 3 temp3 = #z ^ #z elseif @formula6 == 4 temp3 = sin(#z) elseif @formula6 == 5 temp3 = cos(#z) elseif @formula6 == 6 temp3 = tan( #z ) elseif @formula6 == 7 temp3 = asin(#z) elseif @formula6 == 8 temp3 = acos( #z) elseif @formula6 == 9 temp3 = atan(#z) elseif @formula6 == 10 temp3 = sinh( #z ) elseif @formula6 == 11 temp3 = cosh( #z ) elseif @formula6 == 12 temp3 = tanh( #z ) elseif @formula6 == 13 temp3 = asinh( #z ) elseif @formula6 == 14 temp3 = acosh( #z ) elseif @formula6 == 15 temp3 = atanh( #z ) elseif @formula6 == 16 temp3 = log( 1/#z ) elseif @formula6 == 17 temp3 = log(log( #z )) elseif @formula6 == 18 temp3 = exp( -#z ) elseif @formula6 == 19 temp3 = exp( 1/#z ) elseif @formula6 == 20 temp3 = #z^( -#z ) elseif @formula6 == 21 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 22 zextra = cos(#z) temp3 = zextra*zextra elseif @formula6 == 23 zextra = tan(#z) temp3 = zextra*zextra elseif @formula6 == 24 temp3 = cotan( #z ) else ; @formula6 == 25 temp3 = (1,0)/cos( #z ) endif ; formula6-3 else ; 25 < @formula6 <= 50 if @formula6 == 26 temp3 = (1,0)/sin(#z) elseif @formula6 == 27 zextra = cotan( #z ) temp3 = zextra * zextra elseif @formula6 == 28 zextra = cos( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 29 zextra = sin( #z ) temp3 = (1,0)/(zextra * zextra) elseif @formula6 == 30 temp3 = #z^(#z^#z) elseif @formula6 == 31 temp3 = (1,0)/(#z^(#z^#z)) elseif @formula6 == 32 temp3 = log( -#z ) elseif @formula6 == 33 temp3 = (1,0)/log( #z ) elseif @formula6 == 34 temp3 = sin(#z) * cos(#z) elseif @formula6 == 35 zextra = sin(#z) temp3 = zextra*zextra elseif @formula6 == 36 temp3 = exp((-1,0)/#z) elseif @formula6 == 37 temp3 = atan((1,0)/#z) elseif @formula6 == 38 temp3 = acos((1,0)/#z) elseif @formula6 == 39 temp3 = asin((1,0)/#z) elseif @formula6 == 40 temp3 = sin(1/#z) elseif @formula6 == 41 temp3 = cos(1/#z) elseif @formula6 == 42 temp3 = tan(1/#z) elseif @formula6 == 43 temp3 = cotan(1/#z) elseif @formula6 == 44 temp3 = (1,0)/cos(1/#z) elseif @formula6 == 45 temp3 = (1,0)/sin(1/#z) elseif @formula6 == 46 temp3 = cotanh(#z) elseif @formula6 == 47 temp3 = (1,0)/cosh(#z) elseif @formula6 == 48 temp3 = (1,0)/sinh(#z) elseif @formula6 == 49 temp3 = atanh(1/#z) else ; @formula6 == 50 temp3 = acosh(1/#z) endif ; formula6-3 endif ; formula6-2 elseif @formula6 <= 75 if @formula6 == 51 temp3 = asinh(1/#z) elseif @formula6 == 52 zextra = sinh(#z) temp3 = zextra * zextra elseif @formula6 == 53 zextra = cosh( #z ) temp3 = zextra * zextra elseif @formula6 == 54 zextra = tanh(#z) temp3 = zextra * zextra elseif @formula6 == 55 zextra = cotanh( #z ) temp3 = zextra * zextra elseif @formula6 == 56 zextra = (1,0)/cosh(#z) temp3 = zextra * zextra elseif @formula6 == 57 zextra = (1,0) / sinh( #z ) temp3 = zextra * zextra elseif @formula6 == 58 temp3 = sinh(1/#z) elseif @formula6 == 59 temp3 = cosh(1/#z) elseif @formula6 == 60 temp3 = tanh(1/#z) elseif @formula6 == 61 temp3 = cotanh(1/#z) elseif @formula6 == 62 temp3 = (1,0)/cosh(1/#z) elseif @formula6 == 63 temp3 = (1,0)/sinh(1/#z) elseif @formula6 == 64 temp3 = sin( #z ) * tan(#z) elseif @formula6 == 65 temp3 = sinh(#z) * tanh(#z) elseif @formula6 == 66 temp3 = sinh(#z) * cosh(#z) elseif @formula6 == 67 temp3 = sinh(#z), zextra = cosh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 68 temp3 = sin(#z), zextra = cos(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 69 zextra = 1/#z temp3 = sin(zextra)*cos(zextra) elseif @formula6 == 70 zextra = sin( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 71 temp3 = sin(#z) * cos(1/#z) elseif @formula6 == 72 temp3 = sin(#z) * sin(1/#z) elseif @formula6 == 73 zextra = log(#z) temp3 = zextra*zextra elseif @formula6 == 74 temp3 = sin(#z) * sin(2*#z) else ; @formula6 == 75 temp3 = exp(2*#z) endif ; formula6-2 else ; 75 < @formula6 <= 100 if @formula6 == 76 temp3 = exp(-2*#z) elseif @formula6 == 77 zextra = 1/#z temp3 = sinh(zextra)*cosh(zextra) elseif @formula6 == 78 zextra = sinh( 1/#z ) temp3 = zextra*zextra elseif @formula6 == 79 temp3 = sinh(#z) * cosh(1/#z) elseif @formula6 == 80 temp3 = sinh(#z) * sinh(1/#z) elseif @formula6 == 81 temp3 = sin(#z) * sinh(#z) elseif @formula6 == 82 temp3 = sin(#z) * cosh(#z) elseif @formula6 == 83 zextra = sin(#z), temp3 = sinh(#z) temp3 = temp3*temp3*zextra*zextra elseif @formula6 == 84 temp3 = sin(#z)*exp(#z) elseif @formula6 == 85 temp3 = cos(#z)*exp(#z) elseif @formula6 == 86 temp3 = sinh(#z)*exp(#z) elseif @formula6 == 87 temp3 = cosh(#z)*exp(#z) elseif @formula6 == 88 temp3 = sin(#z)*log(#z) elseif @formula6 == 89 temp3 = cos(#z)*log(#z) elseif @formula6 == 90 temp3 = sinh(#z)*log(#z) else ; @formula6 == 91 temp3 = cosh(#z)*log(#z) endif ; formula6-2 endif ; formula6-1 ; Execute formula5 option if @formula5 == 0 temp2 = #z elseif @formula5 <= 50 if @formula5 <= 25 if @formula5 == 1 temp2 = log(z) elseif @formula5 == 2 temp2 = exp(#z) elseif @formula5 == 3 temp2 = #z ^ #z elseif @formula5 == 4 temp2 = sin(#z) elseif @formula5 == 5 temp2 = cos(#z) elseif @formula5 == 6 temp2 = tan( #z ) elseif @formula5 == 7 temp2 = asin(#z) elseif @formula5 == 8 temp2 = acos( #z) elseif @formula5 == 9 temp2 = atan(#z) elseif @formula5 == 10 temp2 = sinh( #z ) elseif @formula5 == 11 temp2 = cosh( #z ) elseif @formula5 == 12 temp2 = tanh( #z ) elseif @formula5 == 13 temp2 = asinh( #z ) elseif @formula5 == 14 temp2 = acosh( #z ) elseif @formula5 == 15 temp2 = atanh( #z ) elseif @formula5 == 16 temp2 = log( 1/#z ) elseif @formula5 == 17 temp2 = log(log( #z )) elseif @formula5 == 18 temp2 = exp( -#z ) elseif @formula5 == 19 temp2 = exp( 1/#z ) elseif @formula5 == 20 temp2 = #z^( -#z ) elseif @formula5 == 21 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 22 zextra = cos(#z) temp2 = zextra*zextra elseif @formula5 == 23 zextra = tan(#z) temp2 = zextra*zextra elseif @formula5 == 24 temp2 = cotan( #z ) else ; @formula5 == 25 temp2 = (1,0)/cos( #z ) endif ; formula5-3 else ; 25 < @formula5 <= 50 if @formula5 == 26 temp2 = (1,0)/sin(#z) elseif @formula5 == 27 zextra = cotan( #z ) temp2 = zextra * zextra elseif @formula5 == 28 zextra = cos( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 29 zextra = sin( #z ) temp2 = (1,0)/(zextra * zextra) elseif @formula5 == 30 temp2 = #z^(#z^#z) elseif @formula5 == 31 temp2 = (1,0)/(#z^(#z^#z)) elseif @formula5 == 32 temp2 = log( -#z ) elseif @formula5 == 33 temp2 = (1,0)/log( #z ) elseif @formula5 == 34 temp2 = sin(#z) * cos(#z) elseif @formula5 == 35 zextra = sin(#z) temp2 = zextra*zextra elseif @formula5 == 36 temp2 = exp((-1,0)/#z) elseif @formula5 == 37 temp2 = atan((1,0)/#z) elseif @formula5 == 38 temp2 = acos((1,0)/#z) elseif @formula5 == 39 temp2 = asin((1,0)/#z) elseif @formula5 == 40 temp2 = sin(1/#z) elseif @formula5 == 41 temp2 = cos(1/#z) elseif @formula5 == 42 temp2 = tan(1/#z) elseif @formula5 == 43 temp2 = cotan(1/#z) elseif @formula5 == 44 temp2 = (1,0)/cos(1/#z) elseif @formula5 == 45 temp2 = (1,0)/sin(1/#z) elseif @formula5 == 46 temp2 = cotanh(#z) elseif @formula5 == 47 temp2 = (1,0)/cosh(#z) elseif @formula5 == 48 temp2 = (1,0)/sinh(#z) elseif @formula5 == 49 temp2 = atanh(1/#z) else ; @formula5 == 50 temp2 = acosh(1/#z) endif ; formula5-3 endif ; formula5-2 elseif @formula5 <= 75 if @formula5 == 51 temp2 = asinh(1/#z) elseif @formula5 == 52 zextra = sinh(#z) temp2 = zextra * zextra elseif @formula5 == 53 zextra = cosh( #z ) temp2 = zextra * zextra elseif @formula5 == 54 zextra = tanh(#z) temp2 = zextra * zextra elseif @formula5 == 55 zextra = cotanh( #z ) temp2 = zextra * zextra elseif @formula5 == 56 zextra = (1,0)/cosh(#z) temp2 = zextra * zextra elseif @formula5 == 57 zextra = (1,0) / sinh( #z ) temp2 = zextra * zextra elseif @formula5 == 58 temp2 = sinh(1/#z) elseif @formula5 == 59 temp2 = cosh(1/#z) elseif @formula5 == 60 temp2 = tanh(1/#z) elseif @formula5 == 61 temp2 = cotanh(1/#z) elseif @formula5 == 62 temp2 = (1,0)/cosh(1/#z) elseif @formula5 == 63 temp2 = (1,0)/sinh(1/#z) elseif @formula5 == 64 temp2 = sin( #z ) * tan(#z) elseif @formula5 == 65 temp2 = sinh(#z) * tanh(#z) elseif @formula5 == 66 temp2 = sinh(#z) * cosh(#z) elseif @formula5 == 67 temp2 = sinh(#z), zextra = cosh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 68 temp2 = sin(#z), zextra = cos(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 69 zextra = 1/#z temp2 = sin(zextra)*cos(zextra) elseif @formula5 == 70 zextra = sin( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 71 temp2 = sin(#z) * cos(1/#z) elseif @formula5 == 72 temp2 = sin(#z) * sin(1/#z) elseif @formula5 == 73 zextra = log(#z) temp2 = zextra*zextra elseif @formula5 == 74 temp2 = sin(#z) * sin(2*#z) else ; @formula5 == 75 temp2 = exp(2*#z) endif ; formula5-2 else ; 75 < @formula5 <= 100 if @formula5 == 76 temp2 = exp(-2*#z) elseif @formula5 == 77 zextra = 1/#z temp2 = sinh(zextra)*cosh(zextra) elseif @formula5 == 78 zextra = sinh( 1/#z ) temp2 = zextra*zextra elseif @formula5 == 79 temp2 = sinh(#z) * cosh(1/#z) elseif @formula5 == 80 temp2 = sinh(#z) * sinh(1/#z) elseif @formula5 == 81 temp2 = sin(#z) * sinh(#z) elseif @formula5 == 82 temp2 = sin(#z) * cosh(#z) elseif @formula5 == 83 zextra = sin(#z), temp2 = sinh(#z) temp2 = temp2*temp2*zextra*zextra elseif @formula5 == 84 temp2 = sin(#z)*exp(#z) elseif @formula5 == 85 temp2 = cos(#z)*exp(#z) elseif @formula5 == 86 temp2 = sinh(#z)*exp(#z) elseif @formula5 == 87 temp2 = cosh(#z)*exp(#z) elseif @formula5 == 88 temp2 = sin(#z)*log(#z) elseif @formula5 == 89 temp2 = cos(#z)*log(#z) elseif @formula5 == 90 temp2 = sinh(#z)*log(#z) else ; @formula5 == 91 temp2 = cosh(#z)*log(#z) endif ; formula5-2 endif ; formula5-1 ; Execute formula4 option if @formula4 == 0 temp1 = #z elseif @formula4 <= 50 if @formula4 <= 25 if @formula4 == 1 temp1 = log(z) elseif @formula4 == 2 temp1 = exp(#z) elseif @formula4 == 3 temp1 = #z ^ #z elseif @formula4 == 4 temp1 = sin(#z) elseif @formula4 == 5 temp1 = cos(#z) elseif @formula4 == 6 temp1 = tan( #z ) elseif @formula4 == 7 temp1 = asin(#z) elseif @formula4 == 8 temp1 = acos( #z) elseif @formula4 == 9 temp1 = atan(#z) elseif @formula4 == 10 temp1 = sinh( #z ) elseif @formula4 == 11 temp1 = cosh( #z ) elseif @formula4 == 12 temp1 = tanh( #z ) elseif @formula4 == 13 temp1 = asinh( #z ) elseif @formula4 == 14 temp1 = acosh( #z ) elseif @formula4 == 15 temp1 = atanh( #z ) elseif @formula4 == 16 temp1 = log( 1/#z ) elseif @formula4 == 17 temp1 = log(log( #z )) elseif @formula4 == 18 temp1 = exp( -#z ) elseif @formula4 == 19 temp1 = exp( 1/#z ) elseif @formula4 == 20 temp1 = #z^( -#z ) elseif @formula4 == 21 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 22 zextra = cos(#z) temp1 = zextra*zextra elseif @formula4 == 23 zextra = tan(#z) temp1 = zextra*zextra elseif @formula4 == 24 temp1 = cotan( #z ) else ; @formula4 == 25 temp1 = (1,0)/cos( #z ) endif ; formula4-3 else ; 25 < @formula4 <= 50 if @formula4 == 26 temp1 = (1,0)/sin(#z) elseif @formula4 == 27 zextra = cotan( #z ) temp1 = zextra * zextra elseif @formula4 == 28 zextra = cos( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 29 zextra = sin( #z ) temp1 = (1,0)/(zextra * zextra) elseif @formula4 == 30 temp1 = #z^(#z^#z) elseif @formula4 == 31 temp1 = (1,0)/(#z^(#z^#z)) elseif @formula4 == 32 temp1 = log( -#z ) elseif @formula4 == 33 temp1 = (1,0)/log( #z ) elseif @formula4 == 34 temp1 = sin(#z) * cos(#z) elseif @formula4 == 35 zextra = sin(#z) temp1 = zextra*zextra elseif @formula4 == 36 temp1 = exp((-1,0)/#z) elseif @formula4 == 37 temp1 = atan((1,0)/#z) elseif @formula4 == 38 temp1 = acos((1,0)/#z) elseif @formula4 == 39 temp1 = asin((1,0)/#z) elseif @formula4 == 40 temp1 = sin(1/#z) elseif @formula4 == 41 temp1 = cos(1/#z) elseif @formula4 == 42 temp1 = tan(1/#z) elseif @formula4 == 43 temp1 = cotan(1/#z) elseif @formula4 == 44 temp1 = (1,0)/cos(1/#z) elseif @formula4 == 45 temp1 = (1,0)/sin(1/#z) elseif @formula4 == 46 temp1 = cotanh(#z) elseif @formula4 == 47 temp1 = (1,0)/cosh(#z) elseif @formula4 == 48 temp1 = (1,0)/sinh(#z) elseif @formula4 == 49 temp1 = atanh(1/#z) else ; @formula4 == 50 temp1 = acosh(1/#z) endif ; formula4-3 endif ; formula4-2 elseif @formula4 <= 75 if @formula4 == 51 temp1 = asinh(1/#z) elseif @formula4 == 52 zextra = sinh(#z) temp1 = zextra * zextra elseif @formula4 == 53 zextra = cosh( #z ) temp1 = zextra * zextra elseif @formula4 == 54 zextra = tanh(#z) temp1 = zextra * zextra elseif @formula4 == 55 zextra = cotanh( #z ) temp1 = zextra * zextra elseif @formula4 == 56 zextra = (1,0)/cosh(#z) temp1 = zextra * zextra elseif @formula4 == 57 zextra = (1,0) / sinh( #z ) temp1 = zextra * zextra elseif @formula4 == 58 temp1 = sinh(1/#z) elseif @formula4 == 59 temp1 = cosh(1/#z) elseif @formula4 == 60 temp1 = tanh(1/#z) elseif @formula4 == 61 temp1 = cotanh(1/#z) elseif @formula4 == 62 temp1 = (1,0)/cosh(1/#z) elseif @formula4 == 63 temp1 = (1,0)/sinh(1/#z) elseif @formula4 == 64 temp1 = sin( #z ) * tan(#z) elseif @formula4 == 65 temp1 = sinh(#z) * tanh(#z) elseif @formula4 == 66 temp1 = sinh(#z) * cosh(#z) elseif @formula4 == 67 temp1 = sinh(#z), zextra = cosh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 68 temp1 = sin(#z), zextra = cos(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 69 zextra = 1/#z temp1 = sin(zextra)*cos(zextra) elseif @formula4 == 70 zextra = sin( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 71 temp1 = sin(#z) * cos(1/#z) elseif @formula4 == 72 temp1 = sin(#z) * sin(1/#z) elseif @formula4 == 73 zextra = log(#z) temp1 = zextra*zextra elseif @formula4 == 74 temp1 = sin(#z) * sin(2*#z) else ; @formula4 == 75 temp1 = exp(2*#z) endif ; formula4-2 else ; 75 < @formula4 <= 100 if @formula4 == 76 temp1 = exp(-2*#z) elseif @formula4 == 77 zextra = 1/#z temp1 = sinh(zextra)*cosh(zextra) elseif @formula4 == 78 zextra = sinh( 1/#z ) temp1 = zextra*zextra elseif @formula4 == 79 temp1 = sinh(#z) * cosh(1/#z) elseif @formula4 == 80 temp1 = sinh(#z) * sinh(1/#z) elseif @formula4 == 81 temp1 = sin(#z) * sinh(#z) elseif @formula4 == 82 temp1 = sin(#z) * cosh(#z) elseif @formula4 == 83 zextra = sin(#z), temp1 = sinh(#z) temp1 = temp1*temp1*zextra*zextra elseif @formula4 == 84 temp1 = sin(#z)*exp(#z) elseif @formula4 == 85 temp1 = cos(#z)*exp(#z) elseif @formula4 == 86 temp1 = sinh(#z)*exp(#z) elseif @formula4 == 87 temp1 = cosh(#z)*exp(#z) elseif @formula4 == 88 temp1 = sin(#z)*log(#z) elseif @formula4 == 89 temp1 = cos(#z)*log(#z) elseif @formula4 == 90 temp1 = sinh(#z)*log(#z) else ; @formula4 == 91 temp1 = cosh(#z)*log(#z) endif ; formula4-2 endif ; formula4-1 z = @coeff6 * temp3^@power6 + @coeff5 * temp2^@power5 + \ @coeff4 * temp1^@power4 + @coeffp * jc endif ; remainder if @blend z = @weightzfn * z + @weightzpwr * (zblend^@zpower + jc) endif ; @blend bailout: |z| < @bail default: title = "N-cycle Trinom1(Fn) Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param cycle caption = "Cycle Length, N" default = 5 min = 2 hint = "Frequency of execution of B-series formulas. The A-series formulas \ are executed except on iterations divisible by N (i.e., 0 mod N), when \ the B-series formulas are executed instead" endparam param power3 caption = "Power 3" default = (4,0) hint = "This is the exponent used for the third term of the A-series (main) trinomial" endparam param coeff3 caption = "Coeff 3" default = (-1,0) hint = "This is the coefficient of the third term in the A-series trinomial" endparam param formula3 caption = "Formula 3" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the A-series trinomial" endparam param power2 caption = "Power 2" default = (3,0) hint = "This is the exponent used for the second term of the A-series trinomial" endparam param coeff2 caption = "Coeff 2" default = (1,0) hint = "This is the coefficient of the second term in the A-series trinomial" endparam param formula2 caption = "Formula 2" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the A-series trinomial" endparam param power1 caption = "Power 1" default = (2,0) hint = "This is the exponent used for the first term of the A-series trinomial" endparam param coeff1 caption = "Coeff 1" default = (-1,0) hint = "This is the coefficient of the first term in the A-series trinomial" endparam param formula1 caption = "Formula 1" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the A-series trinomial" endparam param power6 caption = "Power 3B" default = (4,0) hint = "This is the exponent used for the third term of the B-series (secondary) \ trinomial, executed only on iterations divisible by the Cycle Length, N, \ in place of the main (A-series) formulas" endparam param coeff6 caption = "Coeff 3B" default = (-1,0) hint = "This is the coefficient of the third term in the B-series trinomial" endparam param formula6 caption = "Formula 3B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the third term of the B-series trinomial" endparam param power5 caption = "Power 2B" default = (3,0) hint = "This is the exponent used for the second term of the B-series trinomial" endparam param coeff5 caption = "Coeff 2B" default = (1,0) hint = "This is the coefficient of the second term in the B-series trinomial" endparam param formula5 caption = "Formula 2B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the second term of the B-series trinomial" endparam param power4 caption = "Power 1B" default = (2,0) hint = "This is the exponent used for the first term of the B-series trinomial" endparam param coeff4 caption = "Coeff 1B" default = (-1,0) hint = "This is the coefficient of the first term in the B-series trinomial" endparam param formula4 caption = "Formula 1B" enum = "none" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "sin(z)*cos(z)" "sin(z^2)" "e^(-1/z)" "acot(z)" "asec(z)" \ "acsc(z)" "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" \ "csc(1/z)" "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" \ "acosech(z)" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "This formula operates on z then forms the first term of the B-series trinomial" endparam param coeffp caption = "Pixel Coefficient" default = 1.0 hint = "This is multiplied by the initialized pixel (Mand)/ seed \ constant (Julia) term" endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-Ntrinomial1c(Fn)+P" cycle = cycle perturbation = #pixel bail = bail power3 = power3 coeff3 = coeff3 formula3 = formula3 power2 = power2 coeff2 = coeff2 formula2 = formula2 power1 = power1 coeff1 = coeff1 formula1 = formula1 power6 = power6 coeff6 = coeff6 formula6 = formula6 power5 = power5 coeff5 = coeff5 formula5 = formula5 power4 = power4 coeff4 = coeff4 formula4 = formula4 coeffp = coeffp blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc } jam-MartinMan { ; jam 020214 ; General Mandelbrot/Julia in which, after the user-specified ; Mandelbrot formula has been executed at each iteration, one or ; more iterations of a generalized Martin attractor formula can ; also be executed. The cycle is ; (1) z(n+1) = FormulaMandelbrot(z) + pixel/constant, then ; (2) x(new) = y(n+1) - MartinFormula(x(n+1)) ; y(new) = MartinConstant - x(n+1) ; (3) z(new) = x(new) + flip(y(new)) init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex ztemp = (0,0) ; temp/spare scratch variables float tempx = float tempxx = float tempy = float temp = float temp2 = 0.0 int count = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode ; Execute the Mandelbrot/Julia formula if @formula1 == 0 z = z * z elseif @formula1 == 1 z = z * z * z elseif @formula1 == 2 zextra = z * z z = zextra * zextra elseif @formula1 == 3 z = z ^ @power1 elseif @formula1 == 4 z = 1/z elseif @formula1 == 5 z = sqrt(z) elseif @formula1 == 6 z = 1 / ( z * z ) elseif @formula1 == 7 z = log(z) elseif @formula1 == 8 z = exp( z) elseif @formula1 == 9 z = z^z elseif @formula1 == 10 z = sin( z ) elseif @formula1 == 11 z = cos( z ) elseif @formula1 == 12 z = tan( z ) elseif @formula1 == 13 z = asin( z ) elseif @formula1 == 14 z = acos( z ) elseif @formula1 == 15 z = atan( z ) elseif @formula1 == 16 z = sinh( z ) elseif @formula1 == 17 z = cosh( z ) elseif @formula1 == 18 z = tanh( z ) elseif @formula1 == 19 z = asinh( z ) elseif @formula1 == 20 z = acosh( z ) elseif @formula1 == 21 z = atanh( z ) elseif @formula1 == 22 z = log( 1/z ) elseif @formula1 == 23 z = log( log( z )) elseif @formula1 == 24 z = exp( -z ) elseif @formula1 == 25 z = exp( 1/z ) elseif @formula1 == 26 z = z^(-z) elseif @formula1 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula1 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula1 == 30 z = cotan( z ) elseif @formula1 == 31 z = 1/cos( z ) elseif @formula1 == 32 z = 1/sin( z ) elseif @formula1 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula1 == 36 zextra = z^(z) z = z^zextra elseif @formula1 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula1 == 38 z = log(-z) elseif @formula1 == 39 z = 1/log( z ) elseif @formula1 == 40 z = z * log( z ) elseif @formula1 == 41 z = sin( z ) / z elseif @formula1 == 42 z = cos( z ) / z elseif @formula1 == 43 z = sin( z ) * cos( z ) elseif @formula1 == 44 z = sin( z^2 ) elseif @formula1 == 45 z = exp( -1/z ) elseif @formula1 == 46 z = z * exp( z ) elseif @formula1 == 47 z = z * exp( -z ) elseif @formula1 == 48 z = z * exp( 1/z ) elseif @formula1 == 49 z = z * exp( -1/z ) elseif @formula1 == 50 z = z * z * z elseif @formula1 == 51 z = 1 / ( z * z * z ) elseif @formula1 == 52 z = atan( 1 / z ) elseif @formula1 == 53 z = acos( 1 / z ) elseif @formula1 == 54 z = asin( 1 / z ) elseif @formula1 == 55 z = tan( z ) / z elseif @formula1 == 56 z = cotan( z ) / z elseif @formula1 == 57 z = 1 / ( z * cos( z )) elseif @formula1 == 58 z = 1 / ( z * sin( z )) elseif @formula1 == 59 z = z * sin( z ) elseif @formula1 == 60 z = z * cos( z ) elseif @formula1 == 61 z = z * tan( z ) elseif @formula1 == 62 z = z * cotan( z ) elseif @formula1 == 63 z = z/cos( z ) elseif @formula1 == 64 z = z/sin( z ) elseif @formula1 == 65 z = sin( 1/z ) elseif @formula1 == 66 z = cos( 1/z ) elseif @formula1 == 67 z = tan( 1/z ) elseif @formula1 == 68 z = cotan( 1/z ) elseif @formula1 == 69 z = 1/cos( 1/z ) elseif @formula1 == 70 z = 1/sin( 1/z ) elseif @formula1 == 71 z = cotanh( z ) elseif @formula1 == 72 z = 1/cosh( z ) elseif @formula1 == 73 z = 1/sinh( z ) elseif @formula1 == 74 z = atanh( 1/z ) elseif @formula1 == 75 z = acosh( 1/z ) elseif @formula1 == 76 z = asinh( 1/z ) elseif @formula1 == 77 z = @coeff1a * z^@exponent1a + @coeff1b * z^@exponent1b + \ @coeff1c * z^@exponent1c elseif @formula1 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula1 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula1 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula1 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula1 == 84 z = sinh(1/z) elseif @formula1 == 85 z = cosh(1/z) elseif @formula1 == 86 z = tanh(1/z) elseif @formula1 == 87 z = cotanh(1/z) elseif @formula1 == 88 z = (1,0)/cosh(1/z) elseif @formula1 == 89 z = (1,0)/sinh(1/z) elseif @formula1 == 90 z = sin( z ) * tan(z) elseif @formula1 == 91 z = sinh(z) * tanh(z) elseif @formula1 == 92 z = sinh(z) * cosh(z) elseif @formula1 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula1 == 97 z = sin(z) * cos(1/z) elseif @formula1 == 98 z = sin(z) * sin(1/z) elseif @formula1 == 99 zextra = log(z) z = zextra*zextra elseif @formula1 == 100 z = sin(z) * sin(2*z) elseif @formula1 == 101 z = exp(2*z) elseif @formula1 == 102 z = exp(-2*z) elseif @formula1 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula1 == 105 z = sinh(z) * cosh(1/z) elseif @formula1 == 106 z = sinh(z) * sinh(1/z) elseif @formula1 == 107 z = sin(z) * sinh(z) elseif @formula1 == 108 z = sin(z) * cosh(z) elseif @formula1 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 110 z = sin(z)*exp(z) elseif @formula1 == 111 z = cos(z)*exp(z) elseif @formula1 == 112 z = sinh(z)*exp(z) elseif @formula1 == 113 z = cosh(z)*exp(z) elseif @formula1 == 114 z = sin(z)*log(z) elseif @formula1 == 115 z = cos(z)*log(z) elseif @formula1 == 116 z = sinh(z)*log(z) else ; @formula1 == 117 z = cosh(z)*log(z) endif ; @formula1 if @pmode != 1 z = z + jc endif ; pmode ; Now execute the generalized Martin formula count = 0 while count < @martincycles count = count+1 tempx = tempxx = real(z), tempy = imag(z) ; x, y, and old x if @martinformula == 0 tempx = tempx * tempx elseif @martinformula == 1 tempx = tempx * tempx * tempx elseif @martinformula == 2 temp2 = tempx * tempx tempx = temp2 * temp2 elseif @martinformula == 3 tempx = tempx ^ @martinpower elseif @martinformula == 4 tempx = 1/tempx elseif @martinformula == 5 tempx = sqrt(tempx) elseif @martinformula == 6 tempx = 1 / ( tempx * tempx ) elseif @martinformula == 7 tempx = log(tempx) elseif @martinformula == 8 tempx = exp( tempx) elseif @martinformula == 9 tempx = tempx^tempx elseif @martinformula == 10 tempx = sin( tempx ) elseif @martinformula == 11 tempx = cos( tempx ) elseif @martinformula == 12 tempx = tan( tempx ) elseif @martinformula == 13 tempx = asin( tempx ) elseif @martinformula == 14 tempx = acos( tempx ) elseif @martinformula == 15 tempx = atan( tempx ) elseif @martinformula == 16 tempx = sinh( tempx ) elseif @martinformula == 17 tempx = cosh( tempx ) elseif @martinformula == 18 tempx = tanh( tempx ) elseif @martinformula == 19 tempx = asinh( tempx ) elseif @martinformula == 20 tempx = acosh( tempx ) elseif @martinformula == 21 tempx = atanh( tempx ) elseif @martinformula == 22 tempx = log( 1/tempx ) elseif @martinformula == 23 tempx = log( log( tempx )) elseif @martinformula == 24 tempx = exp( -tempx ) elseif @martinformula == 25 tempx = exp( 1/tempx ) elseif @martinformula == 26 tempx = tempx^(-tempx) elseif @martinformula == 27 temp2 = sin( tempx ) tempx = temp2 * temp2 elseif @martinformula == 28 temp2 = cos( tempx ) tempx = temp2 * temp2 elseif @martinformula == 29 temp2 = tan( tempx ) tempx = temp2 * temp2 elseif @martinformula == 30 tempx = cotan( tempx ) elseif @martinformula == 31 tempx = 1/cos( tempx ) elseif @martinformula == 32 tempx = 1/sin( tempx ) elseif @martinformula == 33 temp2 = cotan( tempx ) tempx = temp2 * temp2 elseif @martinformula == 34 temp2 = 1/cos( tempx ) tempx = temp2 * temp2 elseif @martinformula == 35 temp2 = 1/sin( tempx ) tempx = temp2 * temp2 elseif @martinformula == 36 temp2 = tempx^(tempx) tempx = tempx^temp2 elseif @martinformula == 37 temp2 = tempx^(tempx) tempx = 1/( tempx^temp2 ) elseif @martinformula == 38 tempx = log(-tempx) elseif @martinformula == 39 tempx = 1/log( tempx ) elseif @martinformula == 40 tempx = tempx * log( tempx ) elseif @martinformula == 41 tempx = sin( tempx ) / tempx elseif @martinformula == 42 tempx = cos( tempx ) / tempx elseif @martinformula == 43 tempx = sin( tempx ) * cos( tempx ) elseif @martinformula == 44 tempx = sin( tempx^2 ) elseif @martinformula == 45 tempx = exp( -1/tempx ) elseif @martinformula == 46 tempx = tempx * exp( tempx ) elseif @martinformula == 47 tempx = tempx * exp( -tempx ) elseif @martinformula == 48 tempx = tempx * exp( 1/tempx ) elseif @martinformula == 49 tempx = tempx * exp( -1/tempx ) elseif @martinformula == 50 tempx = tempx * tempx * tempx elseif @martinformula == 51 tempx = 1 / ( tempx * tempx * tempx ) elseif @martinformula == 52 tempx = atan( 1 / tempx ) elseif @martinformula == 53 tempx = acos( 1 / tempx ) elseif @martinformula == 54 tempx = asin( 1 / tempx ) elseif @martinformula == 55 tempx = tan( tempx ) / tempx elseif @martinformula == 56 tempx = cotan( tempx ) / tempx elseif @martinformula == 57 tempx = 1 / ( tempx * cos( tempx )) elseif @martinformula == 58 tempx = 1 / ( tempx * sin( tempx )) elseif @martinformula == 59 tempx = tempx * sin( tempx ) elseif @martinformula == 60 tempx = tempx * cos( tempx ) elseif @martinformula == 61 tempx = tempx * tan( tempx ) elseif @martinformula == 62 tempx = tempx * cotan( tempx ) elseif @martinformula == 63 tempx = tempx/cos( tempx ) elseif @martinformula == 64 tempx = tempx/sin( tempx ) elseif @martinformula == 65 tempx = sin( 1/tempx ) elseif @martinformula == 66 tempx = cos( 1/tempx ) elseif @martinformula == 67 tempx = tan( 1/tempx ) elseif @martinformula == 68 tempx = cotan( 1/tempx ) elseif @martinformula == 69 tempx = 1/cos( 1/tempx ) elseif @martinformula == 70 tempx = 1/sin( 1/tempx ) elseif @martinformula == 71 tempx = cotanh( tempx ) elseif @martinformula == 72 tempx = 1/cosh( tempx ) elseif @martinformula == 73 tempx = 1/sinh( tempx ) elseif @martinformula == 74 tempx = atanh( 1/tempx ) elseif @martinformula == 75 tempx = acosh( 1/tempx ) elseif @martinformula == 76 tempx = asinh( 1/tempx ) elseif @martinformula == 77 tempx = @coeffma * tempx^@exponentma + @coeffmb * tempx^@exponentmb + \ @coeffmc * tempx^@exponentmc elseif @martinformula == 78 temp2 = sinh(tempx) tempx = temp2 * temp2 elseif @martinformula == 79 temp2 = cosh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 80 temp2 = tanh(tempx) tempx = temp2 * temp2 elseif @martinformula == 81 temp2 = cotanh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 82 temp2 = 1/cosh(tempx) tempx = temp2 * temp2 elseif @martinformula == 83 temp2 = 1/sinh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 84 tempx = sinh(1/tempx) elseif @martinformula == 85 tempx = cosh(1/tempx) elseif @martinformula == 86 tempx = tanh(1/tempx) elseif @martinformula == 87 tempx = cotanh(1/tempx) elseif @martinformula == 88 tempx = 1/cosh(1/tempx) elseif @martinformula == 89 tempx = 1/sinh(1/tempx) elseif @martinformula == 90 tempx = sin( tempx ) * tan(tempx) elseif @martinformula == 91 tempx = sinh(tempx) * tanh(tempx) elseif @martinformula == 92 tempx = sinh(tempx) * cosh(tempx) elseif @martinformula == 93 temp = sinh(tempx), temp2 = cosh(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 94 temp = sin(tempx), temp2 = cos(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 95 temp2 = 1/tempx tempx = sin(temp2)*cos(temp2) elseif @martinformula == 96 temp2 = sin( 1/tempx ) tempx = temp2*temp2 elseif @martinformula == 97 tempx = sin(tempx) * cos(1/tempx) elseif @martinformula == 98 tempx = sin(tempx) * sin(1/tempx) elseif @martinformula == 99 temp2 = log(tempx) tempx = temp2*temp2 elseif @martinformula == 100 tempx = sin(tempx) * sin(2*tempx) elseif @martinformula == 101 tempx = exp(2*tempx) elseif @martinformula == 102 tempx = exp(-2*tempx) elseif @martinformula == 103 temp2 = 1/tempx tempx = sinh(temp2)*cosh(temp2) elseif @martinformula == 104 temp2 = sinh( 1/tempx ) tempx = temp2*temp2 elseif @martinformula == 105 tempx = sinh(tempx) * cosh(1/tempx) elseif @martinformula == 106 tempx = sinh(tempx) * sinh(1/tempx) elseif @martinformula == 107 tempx = sin(tempx) * sinh(tempx) elseif @martinformula == 108 tempx = sin(tempx) * cosh(tempx) elseif @martinformula == 109 temp2 = sin(tempx), temp = sinh(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 110 tempx = sin(tempx)*exp(tempx) elseif @martinformula == 111 tempx = cos(tempx)*exp(tempx) elseif @martinformula == 112 tempx = sinh(tempx)*exp(tempx) elseif @martinformula == 113 tempx = cosh(tempx)*exp(tempx) elseif @martinformula == 114 tempx = sin(tempx)*log(tempx) elseif @martinformula == 115 tempx = cos(tempx)*log(tempx) elseif @martinformula == 116 tempx = sinh(tempx)*log(tempx) elseif @martinformula == 117 tempx = cosh(tempx)*log(tempx) elseif @martinformula == 118 tempx = tempx elseif @martinformula == 119 tempx = abs(tempx) elseif @martinformula == 120 tempx = 1.0 - tempx else ; @martinformula == 121 tempx = -tempx endif ; @martinformula tempx = tempy - tempx tempy = @martinconst - tempxx z = tempx + flip(tempy) endwhile bailout: |z| < @bail default: title = "MartinMan" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Mandy Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 11 hint = "This is the formula executed during the Mandelbrot/Julia stage \ of the iteration. For option 'z^power' set param 'Mandy Power'; for \ '3-term polynom' set Coeff ManA, Exponent ManA, Coeff ManB, Exponent \ ManB, Coeff ManC, Exponent ManC" endparam param power1 caption = "Mandy Power" default = (5,0) hint = "This is the power used for the Mandelbrot/Julia calculation \ if parameter 'Mandy Formula' is set to 'z^power'" endparam param martincycles caption = "Martin Iterations" default = 3 min = 0 hint = "This is the number of Martin cycles that are executed during each \ Mandelbrot iteration" endparam param martinformula caption = "Martin Formula" enum = "x^2" "x^3" "x^4" "x^power" "1/x" "sqrt(x)" "1/x^2" "log(x)" "e^x" \ "x^x" "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" \ "3-term polynomial" "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" "ident" "abs" "1-x" "negate" default = 10 hint = "This is the formula executed during the Martin stage \ of the iteration. For option 'x^power' set param 'Martin Power'; for \ '3-term polynom' set Coeff MarA, Exponent MarA, Coeff MarB, Exponent \ MarB, Coeff MarC, Exponent MarC" endparam param martinconst caption = "Martin Constant" default = 3.14159 hint = "This is the constant used in the Martin calculation" endparam param martinpower caption = "Martin Power" default = 5.0 hint = "This is the power used for the Martin calculation if parameter \ 'Martin Formula' is set to 'x^power'" endparam param coeff1a caption = "Coeff ManA" default = (1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 1st term" endparam param exponent1a caption = "Exponent ManA" default = (6,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff ManB" default = (-1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 2nd term" endparam param exponent1b caption = "Exponent ManB" default = (4,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff ManC" default = (1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 3rd term" endparam param exponent1c caption = "Exponent ManC" default = (2,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeffma caption = "Coeff MarA" default = 1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 1st term" endparam param exponentma caption = "Exponent MarA" default = 6.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffmb caption = "Coeff MarB" default = -1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 2nd term" endparam param exponentmb caption = "Exponent MarB" default = 4.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffmc caption = "Coeff MarC" default = 1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 3rd term" endparam param exponentmc caption = "Exponent MarC" default = 2.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-MartinMan-J" jconstant = #pixel bail = bail formula1 = formula1 power1 = power1 martincycles = martincycles martinformula = martinformula martinpower = martinpower martinconst = martinconst coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeffma = coeffma exponentma = exponentma coeffmb = coeffmb exponentmb = exponentmb coeffmc = coeffmc exponentmc = exponentmc pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-MartinMan-J { ; jam 020214 ; General Mandelbrot/Julia in which, after the user-specified ; Mandelbrot formula has been executed at each iteration, one or ; more iterations of a generalized Martin attractor formula can ; also be executed. The cycle is ; (1) z(n+1) = FormulaMandelbrot(z) + pixel/constant, then ; (2) x(new) = y(n+1) - MartinFormula(x(n+1)) ; y(new) = MartinConstant - x(n+1) ; (3) z(new) = x(new) + flip(y(new)) init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zextra = complex ztemp = (0,0) ; temp/spare scratch variables float tempx = float tempxx = float tempy = float temp = float temp2 = 0.0 int count = 0 ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode ; Execute the Mandelbrot/Julia formula if @formula1 == 0 z = z * z elseif @formula1 == 1 z = z * z * z elseif @formula1 == 2 zextra = z * z z = zextra * zextra elseif @formula1 == 3 z = z ^ @power1 elseif @formula1 == 4 z = 1/z elseif @formula1 == 5 z = sqrt(z) elseif @formula1 == 6 z = 1 / ( z * z ) elseif @formula1 == 7 z = log(z) elseif @formula1 == 8 z = exp( z) elseif @formula1 == 9 z = z^z elseif @formula1 == 10 z = sin( z ) elseif @formula1 == 11 z = cos( z ) elseif @formula1 == 12 z = tan( z ) elseif @formula1 == 13 z = asin( z ) elseif @formula1 == 14 z = acos( z ) elseif @formula1 == 15 z = atan( z ) elseif @formula1 == 16 z = sinh( z ) elseif @formula1 == 17 z = cosh( z ) elseif @formula1 == 18 z = tanh( z ) elseif @formula1 == 19 z = asinh( z ) elseif @formula1 == 20 z = acosh( z ) elseif @formula1 == 21 z = atanh( z ) elseif @formula1 == 22 z = log( 1/z ) elseif @formula1 == 23 z = log( log( z )) elseif @formula1 == 24 z = exp( -z ) elseif @formula1 == 25 z = exp( 1/z ) elseif @formula1 == 26 z = z^(-z) elseif @formula1 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula1 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula1 == 30 z = cotan( z ) elseif @formula1 == 31 z = 1/cos( z ) elseif @formula1 == 32 z = 1/sin( z ) elseif @formula1 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula1 == 36 zextra = z^(z) z = z^zextra elseif @formula1 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula1 == 38 z = log(-z) elseif @formula1 == 39 z = 1/log( z ) elseif @formula1 == 40 z = z * log( z ) elseif @formula1 == 41 z = sin( z ) / z elseif @formula1 == 42 z = cos( z ) / z elseif @formula1 == 43 z = sin( z ) * cos( z ) elseif @formula1 == 44 z = sin( z^2 ) elseif @formula1 == 45 z = exp( -1/z ) elseif @formula1 == 46 z = z * exp( z ) elseif @formula1 == 47 z = z * exp( -z ) elseif @formula1 == 48 z = z * exp( 1/z ) elseif @formula1 == 49 z = z * exp( -1/z ) elseif @formula1 == 50 z = z * z * z elseif @formula1 == 51 z = 1 / ( z * z * z ) elseif @formula1 == 52 z = atan( 1 / z ) elseif @formula1 == 53 z = acos( 1 / z ) elseif @formula1 == 54 z = asin( 1 / z ) elseif @formula1 == 55 z = tan( z ) / z elseif @formula1 == 56 z = cotan( z ) / z elseif @formula1 == 57 z = 1 / ( z * cos( z )) elseif @formula1 == 58 z = 1 / ( z * sin( z )) elseif @formula1 == 59 z = z * sin( z ) elseif @formula1 == 60 z = z * cos( z ) elseif @formula1 == 61 z = z * tan( z ) elseif @formula1 == 62 z = z * cotan( z ) elseif @formula1 == 63 z = z/cos( z ) elseif @formula1 == 64 z = z/sin( z ) elseif @formula1 == 65 z = sin( 1/z ) elseif @formula1 == 66 z = cos( 1/z ) elseif @formula1 == 67 z = tan( 1/z ) elseif @formula1 == 68 z = cotan( 1/z ) elseif @formula1 == 69 z = 1/cos( 1/z ) elseif @formula1 == 70 z = 1/sin( 1/z ) elseif @formula1 == 71 z = cotanh( z ) elseif @formula1 == 72 z = 1/cosh( z ) elseif @formula1 == 73 z = 1/sinh( z ) elseif @formula1 == 74 z = atanh( 1/z ) elseif @formula1 == 75 z = acosh( 1/z ) elseif @formula1 == 76 z = asinh( 1/z ) elseif @formula1 == 77 z = @coeff1a * z^@exponent1a + @coeff1b * z^@exponent1b + \ @coeff1c * z^@exponent1c elseif @formula1 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula1 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula1 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula1 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula1 == 84 z = sinh(1/z) elseif @formula1 == 85 z = cosh(1/z) elseif @formula1 == 86 z = tanh(1/z) elseif @formula1 == 87 z = cotanh(1/z) elseif @formula1 == 88 z = (1,0)/cosh(1/z) elseif @formula1 == 89 z = (1,0)/sinh(1/z) elseif @formula1 == 90 z = sin( z ) * tan(z) elseif @formula1 == 91 z = sinh(z) * tanh(z) elseif @formula1 == 92 z = sinh(z) * cosh(z) elseif @formula1 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula1 == 97 z = sin(z) * cos(1/z) elseif @formula1 == 98 z = sin(z) * sin(1/z) elseif @formula1 == 99 zextra = log(z) z = zextra*zextra elseif @formula1 == 100 z = sin(z) * sin(2*z) elseif @formula1 == 101 z = exp(2*z) elseif @formula1 == 102 z = exp(-2*z) elseif @formula1 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula1 == 105 z = sinh(z) * cosh(1/z) elseif @formula1 == 106 z = sinh(z) * sinh(1/z) elseif @formula1 == 107 z = sin(z) * sinh(z) elseif @formula1 == 108 z = sin(z) * cosh(z) elseif @formula1 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 110 z = sin(z)*exp(z) elseif @formula1 == 111 z = cos(z)*exp(z) elseif @formula1 == 112 z = sinh(z)*exp(z) elseif @formula1 == 113 z = cosh(z)*exp(z) elseif @formula1 == 114 z = sin(z)*log(z) elseif @formula1 == 115 z = cos(z)*log(z) elseif @formula1 == 116 z = sinh(z)*log(z) else ; @formula1 == 117 z = cosh(z)*log(z) endif ; @formula1 if @pmode != 1 z = z + jc endif ; pmode ; Now execute the generalized Martin formula count = 0 while count < @martincycles count = count+1 tempx = tempxx = real(z), tempy = imag(z) ; x, y, and old x if @martinformula == 0 tempx = tempx * tempx elseif @martinformula == 1 tempx = tempx * tempx * tempx elseif @martinformula == 2 temp2 = tempx * tempx tempx = temp2 * temp2 elseif @martinformula == 3 tempx = tempx ^ @martinpower elseif @martinformula == 4 tempx = 1/tempx elseif @martinformula == 5 tempx = sqrt(tempx) elseif @martinformula == 6 tempx = 1 / ( tempx * tempx ) elseif @martinformula == 7 tempx = log(tempx) elseif @martinformula == 8 tempx = exp( tempx) elseif @martinformula == 9 tempx = tempx^tempx elseif @martinformula == 10 tempx = sin( tempx ) elseif @martinformula == 11 tempx = cos( tempx ) elseif @martinformula == 12 tempx = tan( tempx ) elseif @martinformula == 13 tempx = asin( tempx ) elseif @martinformula == 14 tempx = acos( tempx ) elseif @martinformula == 15 tempx = atan( tempx ) elseif @martinformula == 16 tempx = sinh( tempx ) elseif @martinformula == 17 tempx = cosh( tempx ) elseif @martinformula == 18 tempx = tanh( tempx ) elseif @martinformula == 19 tempx = asinh( tempx ) elseif @martinformula == 20 tempx = acosh( tempx ) elseif @martinformula == 21 tempx = atanh( tempx ) elseif @martinformula == 22 tempx = log( 1/tempx ) elseif @martinformula == 23 tempx = log( log( tempx )) elseif @martinformula == 24 tempx = exp( -tempx ) elseif @martinformula == 25 tempx = exp( 1/tempx ) elseif @martinformula == 26 tempx = tempx^(-tempx) elseif @martinformula == 27 temp2 = sin( tempx ) tempx = temp2 * temp2 elseif @martinformula == 28 temp2 = cos( tempx ) tempx = temp2 * temp2 elseif @martinformula == 29 temp2 = tan( tempx ) tempx = temp2 * temp2 elseif @martinformula == 30 tempx = cotan( tempx ) elseif @martinformula == 31 tempx = 1/cos( tempx ) elseif @martinformula == 32 tempx = 1/sin( tempx ) elseif @martinformula == 33 temp2 = cotan( tempx ) tempx = temp2 * temp2 elseif @martinformula == 34 temp2 = 1/cos( tempx ) tempx = temp2 * temp2 elseif @martinformula == 35 temp2 = 1/sin( tempx ) tempx = temp2 * temp2 elseif @martinformula == 36 temp2 = tempx^(tempx) tempx = tempx^temp2 elseif @martinformula == 37 temp2 = tempx^(tempx) tempx = 1/( tempx^temp2 ) elseif @martinformula == 38 tempx = log(-tempx) elseif @martinformula == 39 tempx = 1/log( tempx ) elseif @martinformula == 40 tempx = tempx * log( tempx ) elseif @martinformula == 41 tempx = sin( tempx ) / tempx elseif @martinformula == 42 tempx = cos( tempx ) / tempx elseif @martinformula == 43 tempx = sin( tempx ) * cos( tempx ) elseif @martinformula == 44 tempx = sin( tempx^2 ) elseif @martinformula == 45 tempx = exp( -1/tempx ) elseif @martinformula == 46 tempx = tempx * exp( tempx ) elseif @martinformula == 47 tempx = tempx * exp( -tempx ) elseif @martinformula == 48 tempx = tempx * exp( 1/tempx ) elseif @martinformula == 49 tempx = tempx * exp( -1/tempx ) elseif @martinformula == 50 tempx = tempx * tempx * tempx elseif @martinformula == 51 tempx = 1 / ( tempx * tempx * tempx ) elseif @martinformula == 52 tempx = atan( 1 / tempx ) elseif @martinformula == 53 tempx = acos( 1 / tempx ) elseif @martinformula == 54 tempx = asin( 1 / tempx ) elseif @martinformula == 55 tempx = tan( tempx ) / tempx elseif @martinformula == 56 tempx = cotan( tempx ) / tempx elseif @martinformula == 57 tempx = 1 / ( tempx * cos( tempx )) elseif @martinformula == 58 tempx = 1 / ( tempx * sin( tempx )) elseif @martinformula == 59 tempx = tempx * sin( tempx ) elseif @martinformula == 60 tempx = tempx * cos( tempx ) elseif @martinformula == 61 tempx = tempx * tan( tempx ) elseif @martinformula == 62 tempx = tempx * cotan( tempx ) elseif @martinformula == 63 tempx = tempx/cos( tempx ) elseif @martinformula == 64 tempx = tempx/sin( tempx ) elseif @martinformula == 65 tempx = sin( 1/tempx ) elseif @martinformula == 66 tempx = cos( 1/tempx ) elseif @martinformula == 67 tempx = tan( 1/tempx ) elseif @martinformula == 68 tempx = cotan( 1/tempx ) elseif @martinformula == 69 tempx = 1/cos( 1/tempx ) elseif @martinformula == 70 tempx = 1/sin( 1/tempx ) elseif @martinformula == 71 tempx = cotanh( tempx ) elseif @martinformula == 72 tempx = 1/cosh( tempx ) elseif @martinformula == 73 tempx = 1/sinh( tempx ) elseif @martinformula == 74 tempx = atanh( 1/tempx ) elseif @martinformula == 75 tempx = acosh( 1/tempx ) elseif @martinformula == 76 tempx = asinh( 1/tempx ) elseif @martinformula == 77 tempx = @coeffma * tempx^@exponentma + @coeffmb * tempx^@exponentmb + \ @coeffmc * tempx^@exponentmc elseif @martinformula == 78 temp2 = sinh(tempx) tempx = temp2 * temp2 elseif @martinformula == 79 temp2 = cosh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 80 temp2 = tanh(tempx) tempx = temp2 * temp2 elseif @martinformula == 81 temp2 = cotanh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 82 temp2 = 1/cosh(tempx) tempx = temp2 * temp2 elseif @martinformula == 83 temp2 = 1/sinh( tempx ) tempx = temp2 * temp2 elseif @martinformula == 84 tempx = sinh(1/tempx) elseif @martinformula == 85 tempx = cosh(1/tempx) elseif @martinformula == 86 tempx = tanh(1/tempx) elseif @martinformula == 87 tempx = cotanh(1/tempx) elseif @martinformula == 88 tempx = 1/cosh(1/tempx) elseif @martinformula == 89 tempx = 1/sinh(1/tempx) elseif @martinformula == 90 tempx = sin( tempx ) * tan(tempx) elseif @martinformula == 91 tempx = sinh(tempx) * tanh(tempx) elseif @martinformula == 92 tempx = sinh(tempx) * cosh(tempx) elseif @martinformula == 93 temp = sinh(tempx), temp2 = cosh(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 94 temp = sin(tempx), temp2 = cos(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 95 temp2 = 1/tempx tempx = sin(temp2)*cos(temp2) elseif @martinformula == 96 temp2 = sin( 1/tempx ) tempx = temp2*temp2 elseif @martinformula == 97 tempx = sin(tempx) * cos(1/tempx) elseif @martinformula == 98 tempx = sin(tempx) * sin(1/tempx) elseif @martinformula == 99 temp2 = log(tempx) tempx = temp2*temp2 elseif @martinformula == 100 tempx = sin(tempx) * sin(2*tempx) elseif @martinformula == 101 tempx = exp(2*tempx) elseif @martinformula == 102 tempx = exp(-2*tempx) elseif @martinformula == 103 temp2 = 1/tempx tempx = sinh(temp2)*cosh(temp2) elseif @martinformula == 104 temp2 = sinh( 1/tempx ) tempx = temp2*temp2 elseif @martinformula == 105 tempx = sinh(tempx) * cosh(1/tempx) elseif @martinformula == 106 tempx = sinh(tempx) * sinh(1/tempx) elseif @martinformula == 107 tempx = sin(tempx) * sinh(tempx) elseif @martinformula == 108 tempx = sin(tempx) * cosh(tempx) elseif @martinformula == 109 temp2 = sin(tempx), temp = sinh(tempx) tempx = temp*temp*temp2*temp2 elseif @martinformula == 110 tempx = sin(tempx)*exp(tempx) elseif @martinformula == 111 tempx = cos(tempx)*exp(tempx) elseif @martinformula == 112 tempx = sinh(tempx)*exp(tempx) elseif @martinformula == 113 tempx = cosh(tempx)*exp(tempx) elseif @martinformula == 114 tempx = sin(tempx)*log(tempx) elseif @martinformula == 115 tempx = cos(tempx)*log(tempx) elseif @martinformula == 116 tempx = sinh(tempx)*log(tempx) elseif @martinformula == 117 tempx = cosh(tempx)*log(tempx) elseif @martinformula == 118 tempx = tempx elseif @martinformula == 119 tempx = abs(tempx) elseif @martinformula == 120 tempx = 1.0 - tempx else ; @martinformula == 121 tempx = -tempx endif ; @martinformula tempx = tempy - tempx tempy = @martinconst - tempxx z = tempx + flip(tempy) endwhile bailout: |z| < @bail default: title = "MartinMan Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Mandy Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 11 hint = "This is the formula executed during the Mandelbrot/Julia stage \ of the iteration. For option 'z^power' set param 'Mandy Power'; for \ '3-term polynom' set Coeff ManA, Exponent ManA, Coeff ManB, Exponent \ ManB, Coeff ManC, Exponent ManC" endparam param power1 caption = "Mandy Power" default = (5,0) hint = "This is the power used for the Mandelbrot/Julia calculation \ if parameter 'Mandy Formula' is set to 'z^power'" endparam param martincycles caption = "Martin Iterations" default = 3 min = 0 hint = "This is the number of Martin cycles that are executed during each \ Mandelbrot iteration" endparam param martinformula caption = "Martin Formula" enum = "x^2" "x^3" "x^4" "x^power" "1/x" "sqrt(x)" "1/x^2" "log(x)" "e^x" "x^x" \ "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" \ "3-term polynomial" "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" "ident" "abs" "1-x" "negate" default = 10 hint = "This is the formula executed during the Martin stage \ of the iteration. For option 'x^power' set param 'Martin Power'; for \ '3-term polynom' set Coeff MarA, Exponent MarA, Coeff MarB, Exponent \ MarB, Coeff MarC, Exponent MarC" endparam param martinconst caption = "Martin Constant" default = 3.14159 hint = "This is the constant used in the Martin calculation" endparam param martinpower caption = "Martin Power" default = 5.0 hint = "This is the power used for the Martin calculation if parameter \ 'Martin Formula' is set to 'x^power'" endparam param coeff1a caption = "Coeff ManA" default = (1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 1st term" endparam param exponent1a caption = "Exponent ManA" default = (6,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff ManB" default = (-1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 2nd term" endparam param exponent1b caption = "Exponent ManB" default = (4,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff ManC" default = (1,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the \ coefficient of the 3rd term" endparam param exponent1c caption = "Exponent ManC" default = (2,0) hint = "If 'Mandy Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeffma caption = "Coeff MarA" default = 1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 1st term" endparam param exponentma caption = "Exponent MarA" default = 6.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffmb caption = "Coeff MarB" default = -1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 2nd term" endparam param exponentmb caption = "Exponent MarB" default = 4.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffmc caption = "Coeff MarC" default = 1.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the \ coefficient of the 3rd term" endparam param exponentmc caption = "Exponent MarC" default = 2.0 hint = "If 'Martin Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "jam-MartinMan" perturbation = #pixel bail = bail formula1 = formula1 power1 = power1 martincycles = martincycles martinformula = martinformula martinpower = martinpower martinconst = martinconst coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeffma = coeffma exponentma = exponentma coeffmb = coeffmb exponentmb = exponentmb coeffmc = coeffmc exponentmc = exponentmc pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-shiftMandelbrot { ; jam 020212 ; Mandelbrot/Julia in which 4 independent formulas are executed, ; depending on current value of z relative to user-specified conditions. ; Formula 1 is executed if Condition1 Operation1 Level1 is TRUE, else ; Formula 2 is executed if Condition2 Operation2 Level2 is TRUE, else ; Formula 3 is executed if Condition3 Operation3 Level1 is TRUE, else ; Formula 4 is executed. Only 1 formula is executed on any given iteration. ; Conditions are checked in the order 1 - 2 - 3 - 4. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ; ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = complex ztemp = (0,0) ; temp/spare scratch variables complex zold = z float temp = float tempextra = 0.0 float tempx = float tempy = 0.0 float tempoldx = float tempoldy = 0.0 float tempxx = float tempyy = float tempoldxx = float tempoldyy = 0.0 bool execute = FALSE ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zold = z if @pmode != 0 z = z + jc endif ; pmode zblend = z tempx = real(z), tempy = imag(z) tempoldx = real(zold), tempoldy = imag(zold) execute = FALSE if @cond1mod == 1 || @cond1mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond1mod if @condition1 == 0 temp = cabs(z) elseif @condition1 == 1 temp = tempxx elseif @condition1 == 2 temp = tempyy elseif @condition1 == 3 temp = tempxx+tempyy elseif @condition1 == 4 temp = tempxx-tempyy elseif @condition1 == 5 temp = tempyy-tempxx elseif @condition1 == 6 temp = tempxx*tempyy elseif @condition1 == 7 temp = tempxx/tempyy elseif @condition1 == 8 temp = tempyy/tempxx elseif @condition1 == 9 temp = tempxx^tempyy elseif @condition1 == 10 temp = tempyy^tempxx elseif @condition1 == 11 temp = |z| elseif @condition1 == 12 temp = |z-zold| elseif @condition1 == 13 temp = cabs(z-zold) elseif @condition1 == 14 temp = cabs(z+zold) elseif @condition1 == 15 temp = cabs(z)-cabs(zold) elseif @condition1 == 16 temp = cabs(z)+cabs(zold) elseif @condition1 == 17 temp = tempxx+tempoldxx elseif @condition1 == 18 temp = tempyy+tempoldyy elseif @condition1 == 19 temp = tempxx-tempoldxx elseif @condition1 == 20 temp = tempyy-tempoldyy elseif @condition1 == 21 temp = tempxx, tempextra = tempyy elseif @condition1 == 22 temp = tempxx, tempextra = tempyy elseif @condition1 == 23 temp = tempxx, tempextra = tempyy elseif @condition1 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition1 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition1 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition1 if @cond1mod == 2 || @cond1mod == 4 || @cond1mod == 5 || @cond1mod == 7 temp = temp*temp if @condition1 > 20 tempextra = tempextra*tempextra endif ; @condition1 endif ; @cond1mod if @cond1mod == 3 || @cond1mod == 4 || @cond1mod == 6 || @cond1mod == 7 temp = 1.0/temp if @condition1 > 20 tempextra = 1.0/tempextra endif ; @condition1 endif ; @cond1mod if @operation1 == 0 if temp > @level1 execute = TRUE endif ; temp elseif @operation1 == 1 if temp >= @level1 execute = TRUE endif ; temp elseif @operation1 == 2 if temp < @level1 execute = TRUE endif ; temp elseif @operation1 == 3 if temp <= @level1 execute = TRUE endif ; temp endif ; @operation1 if execute ; handle logic of special cases if @condition1 == 21 || @condition1 > 23 ; AND if @operation1 == 0 if tempextra <= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 1 if tempextra < @level1 execute = FALSE endif ; tempextra elseif @operation1 == 2 if tempextra >= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 3 if tempextra > @level1 execute = FALSE endif ; tempextra endif ; @operation1 elseif @condition1 == 22 ; EOR if @operation1 == 0 if tempextra > @level1 execute = FALSE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = FALSE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = FALSE endif ; tempextra endif ; @operation1 endif ; @condition1 else if @condition1 == 22 ; OR if @operation1 == 0 if tempextra > @level1 execute = TRUE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = TRUE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = TRUE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = TRUE endif ; tempextra endif ; @operation1 elseif @condition1 == 22 ; EOR if @operation1 == 0 if tempextra > @level1 execute = TRUE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = TRUE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = TRUE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = TRUE endif ; tempextra endif ; @operation1 endif ; @condition1 endif ; execute ; Execute 1st formula selection if appropriate if execute if @formula1 == 0 z = z * z elseif @formula1 == 1 z = z * z * z elseif @formula1 == 2 zextra = z * z z = zextra * zextra elseif @formula1 == 3 z = z ^ @power1 elseif @formula1 == 4 z = 1/z elseif @formula1 == 5 z = sqrt(z) elseif @formula1 == 6 z = 1 / ( z * z ) elseif @formula1 == 7 z = log(z) elseif @formula1 == 8 z = exp( z) elseif @formula1 == 9 z = z^z elseif @formula1 == 10 z = sin( z ) elseif @formula1 == 11 z = cos( z ) elseif @formula1 == 12 z = tan( z ) elseif @formula1 == 13 z = asin( z ) elseif @formula1 == 14 z = acos( z ) elseif @formula1 == 15 z = atan( z ) elseif @formula1 == 16 z = sinh( z ) elseif @formula1 == 17 z = cosh( z ) elseif @formula1 == 18 z = tanh( z ) elseif @formula1 == 19 z = asinh( z ) elseif @formula1 == 20 z = acosh( z ) elseif @formula1 == 21 z = atanh( z ) elseif @formula1 == 22 z = log( 1/z ) elseif @formula1 == 23 z = log( log( z )) elseif @formula1 == 24 z = exp( -z ) elseif @formula1 == 25 z = exp( 1/z ) elseif @formula1 == 26 z = z^(-z) elseif @formula1 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula1 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula1 == 30 z = cotan( z ) elseif @formula1 == 31 z = 1/cos( z ) elseif @formula1 == 32 z = 1/sin( z ) elseif @formula1 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula1 == 36 zextra = z^(z) z = z^zextra elseif @formula1 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula1 == 38 z = log(-z) elseif @formula1 == 39 z = 1/log( z ) elseif @formula1 == 40 z = z * log( z ) elseif @formula1 == 41 z = sin( z ) / z elseif @formula1 == 42 z = cos( z ) / z elseif @formula1 == 43 z = sin( z ) * cos( z ) elseif @formula1 == 44 z = sin( z^2 ) elseif @formula1 == 45 z = exp( -1/z ) elseif @formula1 == 46 z = z * exp( z ) elseif @formula1 == 47 z = z * exp( -z ) elseif @formula1 == 48 z = z * exp( 1/z ) elseif @formula1 == 49 z = z * exp( -1/z ) elseif @formula1 == 50 z = z * z * z elseif @formula1 == 51 z = 1 / ( z * z * z ) elseif @formula1 == 52 z = atan( 1 / z ) elseif @formula1 == 53 z = acos( 1 / z ) elseif @formula1 == 54 z = asin( 1 / z ) elseif @formula1 == 55 z = tan( z ) / z elseif @formula1 == 56 z = cotan( z ) / z elseif @formula1 == 57 z = 1 / ( z * cos( z )) elseif @formula1 == 58 z = 1 / ( z * sin( z )) elseif @formula1 == 59 z = z * sin( z ) elseif @formula1 == 60 z = z * cos( z ) elseif @formula1 == 61 z = z * tan( z ) elseif @formula1 == 62 z = z * cotan( z ) elseif @formula1 == 63 z = z/cos( z ) elseif @formula1 == 64 z = z/sin( z ) elseif @formula1 == 65 z = sin( 1/z ) elseif @formula1 == 66 z = cos( 1/z ) elseif @formula1 == 67 z = tan( 1/z ) elseif @formula1 == 68 z = cotan( 1/z ) elseif @formula1 == 69 z = 1/cos( 1/z ) elseif @formula1 == 70 z = 1/sin( 1/z ) elseif @formula1 == 71 z = cotanh( z ) elseif @formula1 == 72 z = 1/cosh( z ) elseif @formula1 == 73 z = 1/sinh( z ) elseif @formula1 == 74 z = atanh( 1/z ) elseif @formula1 == 75 z = acosh( 1/z ) elseif @formula1 == 76 z = asinh( 1/z ) elseif @formula1 == 77 z = @coeff1a * z^@exponent1a + @coeff1b * z^@exponent1b + \ @coeff1c * z^@exponent1c elseif @formula1 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula1 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula1 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula1 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula1 == 84 z = sinh(1/z) elseif @formula1 == 85 z = cosh(1/z) elseif @formula1 == 86 z = tanh(1/z) elseif @formula1 == 87 z = cotanh(1/z) elseif @formula1 == 88 z = (1,0)/cosh(1/z) elseif @formula1 == 89 z = (1,0)/sinh(1/z) elseif @formula1 == 90 z = sin( z ) * tan(z) elseif @formula1 == 91 z = sinh(z) * tanh(z) elseif @formula1 == 92 z = sinh(z) * cosh(z) elseif @formula1 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula1 == 97 z = sin(z) * cos(1/z) elseif @formula1 == 98 z = sin(z) * sin(1/z) elseif @formula1 == 99 zextra = log(z) z = zextra*zextra elseif @formula1 == 100 z = sin(z) * sin(2*z) elseif @formula1 == 101 z = exp(2*z) elseif @formula1 == 102 z = exp(-2*z) elseif @formula1 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula1 == 105 z = sinh(z) * cosh(1/z) elseif @formula1 == 106 z = sinh(z) * sinh(1/z) elseif @formula1 == 107 z = sin(z) * sinh(z) elseif @formula1 == 108 z = sin(z) * cosh(z) elseif @formula1 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 110 z = sin(z)*exp(z) elseif @formula1 == 111 z = cos(z)*exp(z) elseif @formula1 == 112 z = sinh(z)*exp(z) elseif @formula1 == 113 z = cosh(z)*exp(z) elseif @formula1 == 114 z = sin(z)*log(z) elseif @formula1 == 115 z = cos(z)*log(z) elseif @formula1 == 116 z = sinh(z)*log(z) else ; @formula1 == 117 z = cosh(z)*log(z) endif ; @formula1 endif ; execute if !execute ; test for possible execution of Formula 2 since ; Formula 1 was not executed if @cond2mod == 1 || @cond2mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond2mod if @condition2 == 0 temp = cabs(z) elseif @condition2 == 1 temp = tempxx elseif @condition2 == 2 temp = tempyy elseif @condition2 == 3 temp = tempxx+tempyy elseif @condition2 == 4 temp = tempxx-tempyy elseif @condition2 == 5 temp = tempyy-tempxx elseif @condition2 == 6 temp = tempxx*tempyy elseif @condition2 == 7 temp = tempxx/tempyy elseif @condition2 == 8 temp = tempyy/tempxx elseif @condition2 == 9 temp = tempxx^tempyy elseif @condition2 == 10 temp = tempyy^tempxx elseif @condition2 == 11 temp = |z| elseif @condition2 == 12 temp = |z-zold| elseif @condition2 == 13 temp = cabs(z-zold) elseif @condition2 == 14 temp = cabs(z+zold) elseif @condition2 == 15 temp = cabs(z)-cabs(zold) elseif @condition2 == 16 temp = cabs(z)+cabs(zold) elseif @condition2 == 17 temp = tempxx+tempoldxx elseif @condition2 == 18 temp = tempyy+tempoldyy elseif @condition2 == 19 temp = tempxx-tempoldxx elseif @condition2 == 20 temp = tempyy-tempoldyy elseif @condition2 == 21 temp = tempxx, tempextra = tempyy elseif @condition2 == 22 temp = tempxx, tempextra = tempyy elseif @condition2 == 23 temp = tempxx, tempextra = tempyy elseif @condition2 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition2 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition2 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition2 if @cond2mod == 2 || @cond2mod == 4 || @cond2mod == 5 || @cond2mod == 7 temp = temp*temp if @condition2 > 20 tempextra = tempextra*tempextra endif ; @condition2 endif ; @cond2mod if @cond2mod == 3 || @cond2mod == 4 || @cond2mod == 6 || @cond2mod == 7 temp = 1.0/temp if @condition2 > 20 tempextra = 1.0/tempextra endif ; @condition2 endif ; @cond2mod if @operation2 == 0 if temp > @level2 execute = TRUE endif ; temp elseif @operation2 == 1 if temp >= @level2 execute = TRUE endif ; temp elseif @operation2 == 2 if temp < @level2 execute = TRUE endif ; temp elseif @operation2 == 3 if temp <= @level2 execute = TRUE endif ; temp endif ; @operation2 if execute ; handle logic of special cases if @condition2 == 21 || @condition2 > 23 ; AND if @operation2 == 0 if tempextra <= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 1 if tempextra < @level2 execute = FALSE endif ; tempextra elseif @operation2 == 2 if tempextra >= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 3 if tempextra > @level2 execute = FALSE endif ; tempextra endif ; @operation2 elseif @condition2 == 22 ; EOR if @operation2 == 0 if tempextra > @level2 execute = FALSE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = FALSE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = FALSE endif ; tempextra endif ; @operation2 endif ; @condition2 else if @condition2 == 22 ; OR if @operation2 == 0 if tempextra > @level2 execute = TRUE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = TRUE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = TRUE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = TRUE endif ; tempextra endif ; @operation2 elseif @condition2 == 22 ; EOR if @operation2 == 0 if tempextra > @level2 execute = TRUE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = TRUE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = TRUE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = TRUE endif ; tempextra endif ; @operation2 endif ; @condition2 endif ; execute ; Execute 2nd formula selection if appropriate if execute if @formula2 == 0 z = z * z elseif @formula2 == 1 z = z * z * z elseif @formula2 == 2 zextra = z * z z = zextra * zextra elseif @formula2 == 3 z = z ^ @power2 elseif @formula2 == 4 z = 1/z elseif @formula2 == 5 z = sqrt(z) elseif @formula2 == 6 z = 1 / ( z * z ) elseif @formula2 == 7 z = log(z) elseif @formula2 == 8 z = exp( z) elseif @formula2 == 9 z = z^z elseif @formula2 == 10 z = sin( z ) elseif @formula2 == 11 z = cos( z ) elseif @formula2 == 12 z = tan( z ) elseif @formula2 == 13 z = asin( z ) elseif @formula2 == 14 z = acos( z ) elseif @formula2 == 15 z = atan( z ) elseif @formula2 == 16 z = sinh( z ) elseif @formula2 == 17 z = cosh( z ) elseif @formula2 == 18 z = tanh( z ) elseif @formula2 == 19 z = asinh( z ) elseif @formula2 == 20 z = acosh( z ) elseif @formula2 == 21 z = atanh( z ) elseif @formula2 == 22 z = log( 1/z ) elseif @formula2 == 23 z = log( log( z )) elseif @formula2 == 24 z = exp( -z ) elseif @formula2 == 25 z = exp( 1/z ) elseif @formula2 == 26 z = z^(-z) elseif @formula2 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula2 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula2 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula2 == 30 z = cotan( z ) elseif @formula2 == 31 z = 1/cos( z ) elseif @formula2 == 32 z = 1/sin( z ) elseif @formula2 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula2 == 36 zextra = z^(z) z = z^zextra elseif @formula2 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula2 == 38 z = log(-z) elseif @formula2 == 39 z = 1/log( z ) elseif @formula2 == 40 z = z * log( z ) elseif @formula2 == 41 z = sin( z ) / z elseif @formula2 == 42 z = cos( z ) / z elseif @formula2 == 43 z = sin( z ) * cos( z ) elseif @formula2 == 44 z = sin( z^2 ) elseif @formula2 == 45 z = exp( -1/z ) elseif @formula2 == 46 z = z * exp( z ) elseif @formula2 == 47 z = z * exp( -z ) elseif @formula2 == 48 z = z * exp( 1/z ) elseif @formula2 == 49 z = z * exp( -1/z ) elseif @formula2 == 50 z = z * z * z elseif @formula2 == 51 z = 1 / ( z * z * z ) elseif @formula2 == 52 z = atan( 1 / z ) elseif @formula2 == 53 z = acos( 1 / z ) elseif @formula2 == 54 z = asin( 1 / z ) elseif @formula2 == 55 z = tan( z ) / z elseif @formula2 == 56 z = cotan( z ) / z elseif @formula2 == 57 z = 1 / ( z * cos( z )) elseif @formula2 == 58 z = 1 / ( z * sin( z )) elseif @formula2 == 59 z = z * sin( z ) elseif @formula2 == 60 z = z * cos( z ) elseif @formula2 == 61 z = z * tan( z ) elseif @formula2 == 62 z = z * cotan( z ) elseif @formula2 == 63 z = z/cos( z ) elseif @formula2 == 64 z = z/sin( z ) elseif @formula2 == 65 z = sin( 1/z ) elseif @formula2 == 66 z = cos( 1/z ) elseif @formula2 == 67 z = tan( 1/z ) elseif @formula2 == 68 z = cotan( 1/z ) elseif @formula2 == 69 z = 1/cos( 1/z ) elseif @formula2 == 70 z = 1/sin( 1/z ) elseif @formula2 == 71 z = cotanh( z ) elseif @formula2 == 72 z = 1/cosh( z ) elseif @formula2 == 73 z = 1/sinh( z ) elseif @formula2 == 74 z = atanh( 1/z ) elseif @formula2 == 75 z = acosh( 1/z ) elseif @formula2 == 76 z = asinh( 1/z ) elseif @formula2 == 77 z = @coeff2a * z^@exponent2a + @coeff2b * z^@exponent2b + \ @coeff2c * z^@exponent2c elseif @formula2 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula2 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula2 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula2 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula2 == 84 z = sinh(1/z) elseif @formula2 == 85 z = cosh(1/z) elseif @formula2 == 86 z = tanh(1/z) elseif @formula2 == 87 z = cotanh(1/z) elseif @formula2 == 88 z = (1,0)/cosh(1/z) elseif @formula2 == 89 z = (1,0)/sinh(1/z) elseif @formula2 == 90 z = sin( z ) * tan(z) elseif @formula2 == 91 z = sinh(z) * tanh(z) elseif @formula2 == 92 z = sinh(z) * cosh(z) elseif @formula2 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula2 == 97 z = sin(z) * cos(1/z) elseif @formula2 == 98 z = sin(z) * sin(1/z) elseif @formula2 == 99 zextra = log(z) z = zextra*zextra elseif @formula2 == 100 z = sin(z) * sin(2*z) elseif @formula2 == 101 z = exp(2*z) elseif @formula2 == 102 z = exp(-2*z) elseif @formula2 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula2 == 105 z = sinh(z) * cosh(1/z) elseif @formula2 == 106 z = sinh(z) * sinh(1/z) elseif @formula2 == 107 z = sin(z) * sinh(z) elseif @formula2 == 108 z = sin(z) * cosh(z) elseif @formula2 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 110 z = sin(z)*exp(z) elseif @formula2 == 111 z = cos(z)*exp(z) elseif @formula2 == 112 z = sinh(z)*exp(z) elseif @formula2 == 113 z = cosh(z)*exp(z) elseif @formula2 == 114 z = sin(z)*log(z) elseif @formula2 == 115 z = cos(z)*log(z) elseif @formula2 == 116 z = sinh(z)*log(z) else ; @formula2 == 117 z = cosh(z)*log(z) endif ; @formula2 endif ; execute endif ; !execute if !execute ; test for possible execution of Formula 3 since ; Formulas 1 and 2 were not executed if @cond3mod == 1 || @cond3mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond3mod if @condition3 == 0 temp = cabs(z) elseif @condition3 == 1 temp = tempxx elseif @condition3 == 2 temp = tempyy elseif @condition3 == 3 temp = tempxx+tempyy elseif @condition3 == 4 temp = tempxx-tempyy elseif @condition3 == 5 temp = tempyy-tempxx elseif @condition3 == 6 temp = tempxx*tempyy elseif @condition3 == 7 temp = tempxx/tempyy elseif @condition3 == 8 temp = tempyy/tempxx elseif @condition3 == 9 temp = tempxx^tempyy elseif @condition3 == 10 temp = tempyy^tempxx elseif @condition3 == 11 temp = |z| elseif @condition3 == 12 temp = |z-zold| elseif @condition3 == 13 temp = cabs(z-zold) elseif @condition3 == 14 temp = cabs(z+zold) elseif @condition3 == 15 temp = cabs(z)-cabs(zold) elseif @condition3 == 16 temp = cabs(z)+cabs(zold) elseif @condition3 == 17 temp = tempxx+tempoldxx elseif @condition3 == 18 temp = tempyy+tempoldyy elseif @condition3 == 19 temp = tempxx-tempoldxx elseif @condition3 == 20 temp = tempyy-tempoldyy elseif @condition3 == 21 temp = tempxx, tempextra = tempyy elseif @condition3 == 22 temp = tempxx, tempextra = tempyy elseif @condition3 == 23 temp = tempxx, tempextra = tempyy elseif @condition3 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition3 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition3 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition3 if @cond3mod == 2 || @cond3mod == 4 || @cond3mod == 5 || @cond3mod == 7 temp = temp*temp if @condition3 > 20 tempextra = tempextra*tempextra endif ; @condition3 endif ; @cond3mod if @cond3mod == 3 || @cond3mod == 4 || @cond3mod == 6 || @cond3mod == 7 temp = 1.0/temp if @condition3 > 20 tempextra = 1.0/tempextra endif ; @condition3 endif ; @cond3mod if @operation3 == 0 if temp > @level3 execute = TRUE endif ; temp elseif @operation3 == 1 if temp >= @level3 execute = TRUE endif ; temp elseif @operation3 == 2 if temp < @level3 execute = TRUE endif ; temp elseif @operation3 == 3 if temp <= @level3 execute = TRUE endif ; temp endif ; @operation3 if execute ; handle logic of special cases if @condition3 == 21 || @condition3 > 23 ; AND if @operation3 == 0 if tempextra <= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 1 if tempextra < @level3 execute = FALSE endif ; tempextra elseif @operation3 == 2 if tempextra >= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 3 if tempextra > @level3 execute = FALSE endif ; tempextra endif ; @operation3 elseif @condition3 == 22 ; EOR if @operation3 == 0 if tempextra > @level3 execute = FALSE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = FALSE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = FALSE endif ; tempextra endif ; @operation3 endif ; @condition3 else if @condition3 == 22 ; OR if @operation3 == 0 if tempextra > @level3 execute = TRUE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = TRUE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = TRUE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = TRUE endif ; tempextra endif ; @operation3 elseif @condition3 == 22 ; EOR if @operation3 == 0 if tempextra > @level3 execute = TRUE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = TRUE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = TRUE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = TRUE endif ; tempextra endif ; @operation3 endif ; @condition3 endif ; execute ; Execute 2nd formula selection if appropriate if execute if @formula3 == 0 z = z * z elseif @formula3 == 1 z = z * z * z elseif @formula3 == 2 zextra = z * z z = zextra * zextra elseif @formula3 == 3 z = z ^ @power3 elseif @formula3 == 4 z = 1/z elseif @formula3 == 5 z = sqrt(z) elseif @formula3 == 6 z = 1 / ( z * z ) elseif @formula3 == 7 z = log(z) elseif @formula3 == 8 z = exp( z) elseif @formula3 == 9 z = z^z elseif @formula3 == 10 z = sin( z ) elseif @formula3 == 11 z = cos( z ) elseif @formula3 == 12 z = tan( z ) elseif @formula3 == 13 z = asin( z ) elseif @formula3 == 14 z = acos( z ) elseif @formula3 == 15 z = atan( z ) elseif @formula3 == 16 z = sinh( z ) elseif @formula3 == 17 z = cosh( z ) elseif @formula3 == 18 z = tanh( z ) elseif @formula3 == 19 z = asinh( z ) elseif @formula3 == 20 z = acosh( z ) elseif @formula3 == 21 z = atanh( z ) elseif @formula3 == 22 z = log( 1/z ) elseif @formula3 == 23 z = log( log( z )) elseif @formula3 == 24 z = exp( -z ) elseif @formula3 == 25 z = exp( 1/z ) elseif @formula3 == 26 z = z^(-z) elseif @formula3 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula3 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula3 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula3 == 30 z = cotan( z ) elseif @formula3 == 31 z = 1/cos( z ) elseif @formula3 == 32 z = 1/sin( z ) elseif @formula3 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula3 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula3 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula3 == 36 zextra = z^(z) z = z^zextra elseif @formula3 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula3 == 38 z = log(-z) elseif @formula3 == 39 z = 1/log( z ) elseif @formula3 == 40 z = z * log( z ) elseif @formula3 == 41 z = sin( z ) / z elseif @formula3 == 42 z = cos( z ) / z elseif @formula3 == 43 z = sin( z ) * cos( z ) elseif @formula3 == 44 z = sin( z^2 ) elseif @formula3 == 45 z = exp( -1/z ) elseif @formula3 == 46 z = z * exp( z ) elseif @formula3 == 47 z = z * exp( -z ) elseif @formula3 == 48 z = z * exp( 1/z ) elseif @formula3 == 49 z = z * exp( -1/z ) elseif @formula3 == 50 z = z * z * z elseif @formula3 == 51 z = 1 / ( z * z * z ) elseif @formula3 == 52 z = atan( 1 / z ) elseif @formula3 == 53 z = acos( 1 / z ) elseif @formula3 == 54 z = asin( 1 / z ) elseif @formula3 == 55 z = tan( z ) / z elseif @formula3 == 56 z = cotan( z ) / z elseif @formula3 == 57 z = 1 / ( z * cos( z )) elseif @formula3 == 58 z = 1 / ( z * sin( z )) elseif @formula3 == 59 z = z * sin( z ) elseif @formula3 == 60 z = z * cos( z ) elseif @formula3 == 61 z = z * tan( z ) elseif @formula3 == 62 z = z * cotan( z ) elseif @formula3 == 63 z = z/cos( z ) elseif @formula3 == 64 z = z/sin( z ) elseif @formula3 == 65 z = sin( 1/z ) elseif @formula3 == 66 z = cos( 1/z ) elseif @formula3 == 67 z = tan( 1/z ) elseif @formula3 == 68 z = cotan( 1/z ) elseif @formula3 == 69 z = 1/cos( 1/z ) elseif @formula3 == 70 z = 1/sin( 1/z ) elseif @formula3 == 71 z = cotanh( z ) elseif @formula3 == 72 z = 1/cosh( z ) elseif @formula3 == 73 z = 1/sinh( z ) elseif @formula3 == 74 z = atanh( 1/z ) elseif @formula3 == 75 z = acosh( 1/z ) elseif @formula3 == 76 z = asinh( 1/z ) elseif @formula3 == 77 z = @coeff3a * z^@exponent3a + @coeff3b * z^@exponent3b + \ @coeff3c * z^@exponent3c elseif @formula3 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula3 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula3 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula3 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula3 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula3 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula3 == 84 z = sinh(1/z) elseif @formula3 == 85 z = cosh(1/z) elseif @formula3 == 86 z = tanh(1/z) elseif @formula3 == 87 z = cotanh(1/z) elseif @formula3 == 88 z = (1,0)/cosh(1/z) elseif @formula3 == 89 z = (1,0)/sinh(1/z) elseif @formula3 == 90 z = sin( z ) * tan(z) elseif @formula3 == 91 z = sinh(z) * tanh(z) elseif @formula3 == 92 z = sinh(z) * cosh(z) elseif @formula3 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula3 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula3 == 97 z = sin(z) * cos(1/z) elseif @formula3 == 98 z = sin(z) * sin(1/z) elseif @formula3 == 99 zextra = log(z) z = zextra*zextra elseif @formula3 == 100 z = sin(z) * sin(2*z) elseif @formula3 == 101 z = exp(2*z) elseif @formula3 == 102 z = exp(-2*z) elseif @formula3 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula3 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula3 == 105 z = sinh(z) * cosh(1/z) elseif @formula3 == 106 z = sinh(z) * sinh(1/z) elseif @formula3 == 107 z = sin(z) * sinh(z) elseif @formula3 == 108 z = sin(z) * cosh(z) elseif @formula3 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 110 z = sin(z)*exp(z) elseif @formula3 == 111 z = cos(z)*exp(z) elseif @formula3 == 112 z = sinh(z)*exp(z) elseif @formula3 == 113 z = cosh(z)*exp(z) elseif @formula3 == 114 z = sin(z)*log(z) elseif @formula3 == 115 z = cos(z)*log(z) elseif @formula3 == 116 z = sinh(z)*log(z) else ; @formula3 == 117 z = cosh(z)*log(z) endif ; @formula3 endif ; execute endif ; !execute if !execute ; Execute Formula 4 since none of the others were executed if @formula4 == 0 z = z * z elseif @formula4 == 1 z = z * z * z elseif @formula4 == 2 zextra = z * z z = zextra * zextra elseif @formula4 == 3 z = z ^ @power4 elseif @formula4 == 4 z = 1/z elseif @formula4 == 5 z = sqrt(z) elseif @formula4 == 6 z = 1 / ( z * z ) elseif @formula4 == 7 z = log(z) elseif @formula4 == 8 z = exp( z) elseif @formula4 == 9 z = z^z elseif @formula4 == 10 z = sin( z ) elseif @formula4 == 11 z = cos( z ) elseif @formula4 == 12 z = tan( z ) elseif @formula4 == 13 z = asin( z ) elseif @formula4 == 14 z = acos( z ) elseif @formula4 == 15 z = atan( z ) elseif @formula4 == 16 z = sinh( z ) elseif @formula4 == 17 z = cosh( z ) elseif @formula4 == 18 z = tanh( z ) elseif @formula4 == 19 z = asinh( z ) elseif @formula4 == 20 z = acosh( z ) elseif @formula4 == 21 z = atanh( z ) elseif @formula4 == 22 z = log( 1/z ) elseif @formula4 == 23 z = log( log( z )) elseif @formula4 == 24 z = exp( -z ) elseif @formula4 == 25 z = exp( 1/z ) elseif @formula4 == 26 z = z^(-z) elseif @formula4 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula4 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula4 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula4 == 30 z = cotan( z ) elseif @formula4 == 31 z = 1/cos( z ) elseif @formula4 == 32 z = 1/sin( z ) elseif @formula4 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula4 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula4 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula4 == 36 zextra = z^(z) z = z^zextra elseif @formula4 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula4 == 38 z = log(-z) elseif @formula4 == 39 z = 1/log( z ) elseif @formula4 == 40 z = z * log( z ) elseif @formula4 == 41 z = sin( z ) / z elseif @formula4 == 42 z = cos( z ) / z elseif @formula4 == 43 z = sin( z ) * cos( z ) elseif @formula4 == 44 z = sin( z^2 ) elseif @formula4 == 45 z = exp( -1/z ) elseif @formula4 == 46 z = z * exp( z ) elseif @formula4 == 47 z = z * exp( -z ) elseif @formula4 == 48 z = z * exp( 1/z ) elseif @formula4 == 49 z = z * exp( -1/z ) elseif @formula4 == 50 z = z * z * z elseif @formula4 == 51 z = 1 / ( z * z * z ) elseif @formula4 == 52 z = atan( 1 / z ) elseif @formula4 == 53 z = acos( 1 / z ) elseif @formula4 == 54 z = asin( 1 / z ) elseif @formula4 == 55 z = tan( z ) / z elseif @formula4 == 56 z = cotan( z ) / z elseif @formula4 == 57 z = 1 / ( z * cos( z )) elseif @formula4 == 58 z = 1 / ( z * sin( z )) elseif @formula4 == 59 z = z * sin( z ) elseif @formula4 == 60 z = z * cos( z ) elseif @formula4 == 61 z = z * tan( z ) elseif @formula4 == 62 z = z * cotan( z ) elseif @formula4 == 63 z = z/cos( z ) elseif @formula4 == 64 z = z/sin( z ) elseif @formula4 == 65 z = sin( 1/z ) elseif @formula4 == 66 z = cos( 1/z ) elseif @formula4 == 67 z = tan( 1/z ) elseif @formula4 == 68 z = cotan( 1/z ) elseif @formula4 == 69 z = 1/cos( 1/z ) elseif @formula4 == 70 z = 1/sin( 1/z ) elseif @formula4 == 71 z = cotanh( z ) elseif @formula4 == 72 z = 1/cosh( z ) elseif @formula4 == 73 z = 1/sinh( z ) elseif @formula4 == 74 z = atanh( 1/z ) elseif @formula4 == 75 z = acosh( 1/z ) elseif @formula4 == 76 z = asinh( 1/z ) elseif @formula4 == 77 z = @coeff4a * z^@exponent4a + @coeff4b * z^@exponent4b + \ @coeff4c * z^@exponent4c elseif @formula4 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula4 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula4 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula4 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula4 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula4 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula4 == 84 z = sinh(1/z) elseif @formula4 == 85 z = cosh(1/z) elseif @formula4 == 86 z = tanh(1/z) elseif @formula4 == 87 z = cotanh(1/z) elseif @formula4 == 88 z = (1,0)/cosh(1/z) elseif @formula4 == 89 z = (1,0)/sinh(1/z) elseif @formula4 == 90 z = sin( z ) * tan(z) elseif @formula4 == 91 z = sinh(z) * tanh(z) elseif @formula4 == 92 z = sinh(z) * cosh(z) elseif @formula4 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula4 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula4 == 97 z = sin(z) * cos(1/z) elseif @formula4 == 98 z = sin(z) * sin(1/z) elseif @formula4 == 99 zextra = log(z) z = zextra*zextra elseif @formula4 == 100 z = sin(z) * sin(2*z) elseif @formula4 == 101 z = exp(2*z) elseif @formula4 == 102 z = exp(-2*z) elseif @formula4 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula4 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula4 == 105 z = sinh(z) * cosh(1/z) elseif @formula4 == 106 z = sinh(z) * sinh(1/z) elseif @formula4 == 107 z = sin(z) * sinh(z) elseif @formula4 == 108 z = sin(z) * cosh(z) elseif @formula4 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 110 z = sin(z)*exp(z) elseif @formula4 == 111 z = cos(z)*exp(z) elseif @formula4 == 112 z = sinh(z)*exp(z) elseif @formula4 == 113 z = cosh(z)*exp(z) elseif @formula4 == 114 z = sin(z)*log(z) elseif @formula4 == 115 z = cos(z)*log(z) elseif @formula4 == 116 z = sinh(z)*log(z) else ; @formula4 == 117 z = cosh(z)*log(z) endif ; @formula4 endif ; !execute if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "ShiftMan" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If Condition1 Operation1 Level1 is TRUE, then Formula 1 is executed; \ otherwise Condition 2 is examined. For 'z^power', param 'Power 1' sets \ exponent. For '3-term polynomial' set params 'Coeff 1a', 'Exponent 1a', \ 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', 'Exponent 1c'." endparam param condition1 caption = "Condition 1" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" default = 1 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param operation1 caption = "Operation 1" enum = ">" ">=" "<" "<=" default = 0 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param level1 caption = "Level 1" default = 1.0 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param cond1mod caption = "Cond1 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 1 test is performed" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 1 hint = "If Condition2 Operation2 Level2 is TRUE (& Cond1 is FALSE), then \ Formula 2 is executed; otherwise Cond3 is examined. For \ 'z^power', param 'Power 2' sets power. For '3-term polynomial' \ set params Coeff 2a, Exponent 2a, Coeff 2b, Exponent 2b, \ Coeff 2c, Exponent 2c" endparam param condition2 caption = "Condition 2" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" default = 1 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed (assuming Cond1 was NOT true) \ , otherwise Condition 3 is examined" endparam param operation2 caption = "Operation 2" enum = ">" ">=" "<" "<=" default = 3 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed, otherwise Condition 3 is examined" endparam param level2 caption = "Level 2" default = 1.0 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed, otherwise Condition 3 is examined" endparam param cond2mod caption = "Cond2 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 2 test is performed" endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If Cond3 Op3 Level3 is TRUE (& Conds 1 and 2 are FALSE), then \ Formula 3 is executed; otherwise Form 4 is executed. For \ 'z^power', param 'Power 3' sets power. For '3-term polynomial' \ set params Coeff 3a, Exponent 3a, Coeff 3b, Exponent 3b, \ Coeff 3c, Exponent 3c" endparam param condition3 caption = "Condition 3" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param operation3 caption = "Operation 3" enum = ">" ">=" "<" "<=" default = 0 hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param level3 caption = "Level 3" default = 0.0 hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param cond3mod caption = "Cond3 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 3 test is performed" endparam param formula4 caption = "Formula 4" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If conditions 1, 2, and 3 are all FALSE, then this formula is executed; \ For 'z^power', param 'Power 4' sets \ exponent. For '3-term polynomial' set params 'Coeff 4a', 'Exponent 4a', \ 'Coeff 4b', 'Exponent 4b', 'Coeff 4c', 'Exponent 4c'." endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" endparam param power4 caption = "Power 4" default = (6,0) hint = "This is the power used for the fourth formula series if parameter \ 'Formula 4' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff4a caption = "Coeff 4A" default = (1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent4a caption = "Exponent 4A" default = (6,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff4b caption = "Coeff 4B" default = (-1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent4b caption = "Exponent 4B" default = (4,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff4c caption = "Coeff 4C" default = (1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent4c caption = "Exponent 4C" default = (2,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-shiftMandelbrot-J" jconstant = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype formula1 = formula1 condition1 = condition1 cond1mod = cond1mod operation1 = operation1 level1 = level1 formula2 = formula2 condition2 = condition2 cond2mod = cond2mod operation2 = operation2 level2 = level2 formula3 = formula3 condition3 = condition3 cond3mod = cond3mod operation3 = operation3 level3 = level3 formula4 = formula4 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower power1 = power1 power2 = power2 power3 = power3 power4 = power4 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c coeff3a = coeff3a exponent3a = exponent3a coeff3b = coeff3b exponent3b = exponent3b coeff3c = coeff3c exponent3c = exponent3c coeff4a = coeff4a exponent4a = exponent4a coeff4b = coeff4b exponent4b = exponent4b coeff4c = coeff4c exponent4c = exponent4c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-shiftMandelbrot-J { ; jam 020212 ; Mandelbrot/Julia in which 4 independent formulas are executed, ; depending on current value of z relative to user-specified conditions. ; Formula 1 is executed if Condition1 Operation1 Level1 is TRUE, else ; Formula 2 is executed if Condition2 Operation2 Level2 is TRUE, else ; Formula 3 is executed if Condition3 Operation3 Level1 is TRUE, else ; Formula 4 is executed. Only 1 formula is executed on any given iteration. ; Conditions are checked in the order 1 - 2 - 3 - 4. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ; ( CoeffC * z^ExponentC ) + constant init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif complex zblend = (0,0) complex zextra = complex ztemp = (0,0) ; temp/spare scratch variables complex zold = z float temp = float tempextra = 0.0 float tempx = float tempy = 0.0 float tempoldx = float tempoldy = 0.0 float tempxx = float tempyy = float tempoldxx = float tempoldyy = 0.0 bool execute = FALSE ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: zold = z if @pmode != 0 z = z + jc endif ; pmode zblend = z tempx = real(z), tempy = imag(z) tempoldx = real(zold), tempoldy = imag(zold) execute = FALSE if @cond1mod == 1 || @cond1mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond1mod if @condition1 == 0 temp = cabs(z) elseif @condition1 == 1 temp = tempxx elseif @condition1 == 2 temp = tempyy elseif @condition1 == 3 temp = tempxx+tempyy elseif @condition1 == 4 temp = tempxx-tempyy elseif @condition1 == 5 temp = tempyy-tempxx elseif @condition1 == 6 temp = tempxx*tempyy elseif @condition1 == 7 temp = tempxx/tempyy elseif @condition1 == 8 temp = tempyy/tempxx elseif @condition1 == 9 temp = tempxx^tempyy elseif @condition1 == 10 temp = tempyy^tempxx elseif @condition1 == 11 temp = |z| elseif @condition1 == 12 temp = |z-zold| elseif @condition1 == 13 temp = cabs(z-zold) elseif @condition1 == 14 temp = cabs(z+zold) elseif @condition1 == 15 temp = cabs(z)-cabs(zold) elseif @condition1 == 16 temp = cabs(z)+cabs(zold) elseif @condition1 == 17 temp = tempxx+tempoldxx elseif @condition1 == 18 temp = tempyy+tempoldyy elseif @condition1 == 19 temp = tempxx-tempoldxx elseif @condition1 == 20 temp = tempyy-tempoldyy elseif @condition1 == 21 temp = tempxx, tempextra = tempyy elseif @condition1 == 22 temp = tempxx, tempextra = tempyy elseif @condition1 == 23 temp = tempxx, tempextra = tempyy elseif @condition1 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition1 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition1 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition1 if @cond1mod == 2 || @cond1mod == 4 || @cond1mod == 5 || @cond1mod == 7 temp = temp*temp if @condition1 > 20 tempextra = tempextra*tempextra endif ; @condition1 endif ; @cond1mod if @cond1mod == 3 || @cond1mod == 4 || @cond1mod == 6 || @cond1mod == 7 temp = 1.0/temp if @condition1 > 20 tempextra = 1.0/tempextra endif ; @condition1 endif ; @cond1mod if @operation1 == 0 if temp > @level1 execute = TRUE endif ; temp elseif @operation1 == 1 if temp >= @level1 execute = TRUE endif ; temp elseif @operation1 == 2 if temp < @level1 execute = TRUE endif ; temp elseif @operation1 == 3 if temp <= @level1 execute = TRUE endif ; temp endif ; @operation1 if execute ; handle logic of special cases if @condition1 == 21 || @condition1 > 23 ; AND if @operation1 == 0 if tempextra <= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 1 if tempextra < @level1 execute = FALSE endif ; tempextra elseif @operation1 == 2 if tempextra >= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 3 if tempextra > @level1 execute = FALSE endif ; tempextra endif ; @operation1 elseif @condition1 == 22 ; EOR if @operation1 == 0 if tempextra > @level1 execute = FALSE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = FALSE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = FALSE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = FALSE endif ; tempextra endif ; @operation1 endif ; @condition1 else if @condition1 == 22 ; OR if @operation1 == 0 if tempextra > @level1 execute = TRUE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = TRUE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = TRUE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = TRUE endif ; tempextra endif ; @operation1 elseif @condition1 == 22 ; EOR if @operation1 == 0 if tempextra > @level1 execute = TRUE endif ; tempextra elseif @operation1 == 1 if tempextra >= @level1 execute = TRUE endif ; tempextra elseif @operation1 == 2 if tempextra < @level1 execute = TRUE endif ; tempextra elseif @operation1 == 3 if tempextra <= @level1 execute = TRUE endif ; tempextra endif ; @operation1 endif ; @condition1 endif ; execute ; Execute 1st formula selection if appropriate if execute if @formula1 == 0 z = z * z elseif @formula1 == 1 z = z * z * z elseif @formula1 == 2 zextra = z * z z = zextra * zextra elseif @formula1 == 3 z = z ^ @power1 elseif @formula1 == 4 z = 1/z elseif @formula1 == 5 z = sqrt(z) elseif @formula1 == 6 z = 1 / ( z * z ) elseif @formula1 == 7 z = log(z) elseif @formula1 == 8 z = exp( z) elseif @formula1 == 9 z = z^z elseif @formula1 == 10 z = sin( z ) elseif @formula1 == 11 z = cos( z ) elseif @formula1 == 12 z = tan( z ) elseif @formula1 == 13 z = asin( z ) elseif @formula1 == 14 z = acos( z ) elseif @formula1 == 15 z = atan( z ) elseif @formula1 == 16 z = sinh( z ) elseif @formula1 == 17 z = cosh( z ) elseif @formula1 == 18 z = tanh( z ) elseif @formula1 == 19 z = asinh( z ) elseif @formula1 == 20 z = acosh( z ) elseif @formula1 == 21 z = atanh( z ) elseif @formula1 == 22 z = log( 1/z ) elseif @formula1 == 23 z = log( log( z )) elseif @formula1 == 24 z = exp( -z ) elseif @formula1 == 25 z = exp( 1/z ) elseif @formula1 == 26 z = z^(-z) elseif @formula1 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula1 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula1 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula1 == 30 z = cotan( z ) elseif @formula1 == 31 z = 1/cos( z ) elseif @formula1 == 32 z = 1/sin( z ) elseif @formula1 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula1 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula1 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula1 == 36 zextra = z^(z) z = z^zextra elseif @formula1 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula1 == 38 z = log(-z) elseif @formula1 == 39 z = 1/log( z ) elseif @formula1 == 40 z = z * log( z ) elseif @formula1 == 41 z = sin( z ) / z elseif @formula1 == 42 z = cos( z ) / z elseif @formula1 == 43 z = sin( z ) * cos( z ) elseif @formula1 == 44 z = sin( z^2 ) elseif @formula1 == 45 z = exp( -1/z ) elseif @formula1 == 46 z = z * exp( z ) elseif @formula1 == 47 z = z * exp( -z ) elseif @formula1 == 48 z = z * exp( 1/z ) elseif @formula1 == 49 z = z * exp( -1/z ) elseif @formula1 == 50 z = z * z * z elseif @formula1 == 51 z = 1 / ( z * z * z ) elseif @formula1 == 52 z = atan( 1 / z ) elseif @formula1 == 53 z = acos( 1 / z ) elseif @formula1 == 54 z = asin( 1 / z ) elseif @formula1 == 55 z = tan( z ) / z elseif @formula1 == 56 z = cotan( z ) / z elseif @formula1 == 57 z = 1 / ( z * cos( z )) elseif @formula1 == 58 z = 1 / ( z * sin( z )) elseif @formula1 == 59 z = z * sin( z ) elseif @formula1 == 60 z = z * cos( z ) elseif @formula1 == 61 z = z * tan( z ) elseif @formula1 == 62 z = z * cotan( z ) elseif @formula1 == 63 z = z/cos( z ) elseif @formula1 == 64 z = z/sin( z ) elseif @formula1 == 65 z = sin( 1/z ) elseif @formula1 == 66 z = cos( 1/z ) elseif @formula1 == 67 z = tan( 1/z ) elseif @formula1 == 68 z = cotan( 1/z ) elseif @formula1 == 69 z = 1/cos( 1/z ) elseif @formula1 == 70 z = 1/sin( 1/z ) elseif @formula1 == 71 z = cotanh( z ) elseif @formula1 == 72 z = 1/cosh( z ) elseif @formula1 == 73 z = 1/sinh( z ) elseif @formula1 == 74 z = atanh( 1/z ) elseif @formula1 == 75 z = acosh( 1/z ) elseif @formula1 == 76 z = asinh( 1/z ) elseif @formula1 == 77 z = @coeff1a * z^@exponent1a + @coeff1b * z^@exponent1b + \ @coeff1c * z^@exponent1c elseif @formula1 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula1 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula1 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula1 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula1 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula1 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula1 == 84 z = sinh(1/z) elseif @formula1 == 85 z = cosh(1/z) elseif @formula1 == 86 z = tanh(1/z) elseif @formula1 == 87 z = cotanh(1/z) elseif @formula1 == 88 z = (1,0)/cosh(1/z) elseif @formula1 == 89 z = (1,0)/sinh(1/z) elseif @formula1 == 90 z = sin( z ) * tan(z) elseif @formula1 == 91 z = sinh(z) * tanh(z) elseif @formula1 == 92 z = sinh(z) * cosh(z) elseif @formula1 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula1 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula1 == 97 z = sin(z) * cos(1/z) elseif @formula1 == 98 z = sin(z) * sin(1/z) elseif @formula1 == 99 zextra = log(z) z = zextra*zextra elseif @formula1 == 100 z = sin(z) * sin(2*z) elseif @formula1 == 101 z = exp(2*z) elseif @formula1 == 102 z = exp(-2*z) elseif @formula1 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula1 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula1 == 105 z = sinh(z) * cosh(1/z) elseif @formula1 == 106 z = sinh(z) * sinh(1/z) elseif @formula1 == 107 z = sin(z) * sinh(z) elseif @formula1 == 108 z = sin(z) * cosh(z) elseif @formula1 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula1 == 110 z = sin(z)*exp(z) elseif @formula1 == 111 z = cos(z)*exp(z) elseif @formula1 == 112 z = sinh(z)*exp(z) elseif @formula1 == 113 z = cosh(z)*exp(z) elseif @formula1 == 114 z = sin(z)*log(z) elseif @formula1 == 115 z = cos(z)*log(z) elseif @formula1 == 116 z = sinh(z)*log(z) else ; @formula1 == 117 z = cosh(z)*log(z) endif ; @formula1 endif ; execute if !execute ; test for possible execution of Formula 2 since ; Formula 1 was not executed if @cond2mod == 1 || @cond2mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond2mod if @condition2 == 0 temp = cabs(z) elseif @condition2 == 1 temp = tempxx elseif @condition2 == 2 temp = tempyy elseif @condition2 == 3 temp = tempxx+tempyy elseif @condition2 == 4 temp = tempxx-tempyy elseif @condition2 == 5 temp = tempyy-tempxx elseif @condition2 == 6 temp = tempxx*tempyy elseif @condition2 == 7 temp = tempxx/tempyy elseif @condition2 == 8 temp = tempyy/tempxx elseif @condition2 == 9 temp = tempxx^tempyy elseif @condition2 == 10 temp = tempyy^tempxx elseif @condition2 == 11 temp = |z| elseif @condition2 == 12 temp = |z-zold| elseif @condition2 == 13 temp = cabs(z-zold) elseif @condition2 == 14 temp = cabs(z+zold) elseif @condition2 == 15 temp = cabs(z)-cabs(zold) elseif @condition2 == 16 temp = cabs(z)+cabs(zold) elseif @condition2 == 17 temp = tempxx+tempoldxx elseif @condition2 == 18 temp = tempyy+tempoldyy elseif @condition2 == 19 temp = tempxx-tempoldxx elseif @condition2 == 20 temp = tempyy-tempoldyy elseif @condition2 == 21 temp = tempxx, tempextra = tempyy elseif @condition2 == 22 temp = tempxx, tempextra = tempyy elseif @condition2 == 23 temp = tempxx, tempextra = tempyy elseif @condition2 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition2 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition2 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition2 if @cond2mod == 2 || @cond2mod == 4 || @cond2mod == 5 || @cond2mod == 7 temp = temp*temp if @condition2 > 20 tempextra = tempextra*tempextra endif ; @condition2 endif ; @cond2mod if @cond2mod == 3 || @cond2mod == 4 || @cond2mod == 6 || @cond2mod == 7 temp = 1.0/temp if @condition2 > 20 tempextra = 1.0/tempextra endif ; @condition2 endif ; @cond2mod if @operation2 == 0 if temp > @level2 execute = TRUE endif ; temp elseif @operation2 == 1 if temp >= @level2 execute = TRUE endif ; temp elseif @operation2 == 2 if temp < @level2 execute = TRUE endif ; temp elseif @operation2 == 3 if temp <= @level2 execute = TRUE endif ; temp endif ; @operation2 if execute ; handle logic of special cases if @condition2 == 21 || @condition2 > 23 ; AND if @operation2 == 0 if tempextra <= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 1 if tempextra < @level2 execute = FALSE endif ; tempextra elseif @operation2 == 2 if tempextra >= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 3 if tempextra > @level2 execute = FALSE endif ; tempextra endif ; @operation2 elseif @condition2 == 22 ; EOR if @operation2 == 0 if tempextra > @level2 execute = FALSE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = FALSE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = FALSE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = FALSE endif ; tempextra endif ; @operation2 endif ; @condition2 else if @condition2 == 22 ; OR if @operation2 == 0 if tempextra > @level2 execute = TRUE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = TRUE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = TRUE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = TRUE endif ; tempextra endif ; @operation2 elseif @condition2 == 22 ; EOR if @operation2 == 0 if tempextra > @level2 execute = TRUE endif ; tempextra elseif @operation2 == 1 if tempextra >= @level2 execute = TRUE endif ; tempextra elseif @operation2 == 2 if tempextra < @level2 execute = TRUE endif ; tempextra elseif @operation2 == 3 if tempextra <= @level2 execute = TRUE endif ; tempextra endif ; @operation2 endif ; @condition2 endif ; execute ; Execute 2nd formula selection if appropriate if execute if @formula2 == 0 z = z * z elseif @formula2 == 1 z = z * z * z elseif @formula2 == 2 zextra = z * z z = zextra * zextra elseif @formula2 == 3 z = z ^ @power2 elseif @formula2 == 4 z = 1/z elseif @formula2 == 5 z = sqrt(z) elseif @formula2 == 6 z = 1 / ( z * z ) elseif @formula2 == 7 z = log(z) elseif @formula2 == 8 z = exp( z) elseif @formula2 == 9 z = z^z elseif @formula2 == 10 z = sin( z ) elseif @formula2 == 11 z = cos( z ) elseif @formula2 == 12 z = tan( z ) elseif @formula2 == 13 z = asin( z ) elseif @formula2 == 14 z = acos( z ) elseif @formula2 == 15 z = atan( z ) elseif @formula2 == 16 z = sinh( z ) elseif @formula2 == 17 z = cosh( z ) elseif @formula2 == 18 z = tanh( z ) elseif @formula2 == 19 z = asinh( z ) elseif @formula2 == 20 z = acosh( z ) elseif @formula2 == 21 z = atanh( z ) elseif @formula2 == 22 z = log( 1/z ) elseif @formula2 == 23 z = log( log( z )) elseif @formula2 == 24 z = exp( -z ) elseif @formula2 == 25 z = exp( 1/z ) elseif @formula2 == 26 z = z^(-z) elseif @formula2 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula2 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula2 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula2 == 30 z = cotan( z ) elseif @formula2 == 31 z = 1/cos( z ) elseif @formula2 == 32 z = 1/sin( z ) elseif @formula2 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula2 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula2 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula2 == 36 zextra = z^(z) z = z^zextra elseif @formula2 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula2 == 38 z = log(-z) elseif @formula2 == 39 z = 1/log( z ) elseif @formula2 == 40 z = z * log( z ) elseif @formula2 == 41 z = sin( z ) / z elseif @formula2 == 42 z = cos( z ) / z elseif @formula2 == 43 z = sin( z ) * cos( z ) elseif @formula2 == 44 z = sin( z^2 ) elseif @formula2 == 45 z = exp( -1/z ) elseif @formula2 == 46 z = z * exp( z ) elseif @formula2 == 47 z = z * exp( -z ) elseif @formula2 == 48 z = z * exp( 1/z ) elseif @formula2 == 49 z = z * exp( -1/z ) elseif @formula2 == 50 z = z * z * z elseif @formula2 == 51 z = 1 / ( z * z * z ) elseif @formula2 == 52 z = atan( 1 / z ) elseif @formula2 == 53 z = acos( 1 / z ) elseif @formula2 == 54 z = asin( 1 / z ) elseif @formula2 == 55 z = tan( z ) / z elseif @formula2 == 56 z = cotan( z ) / z elseif @formula2 == 57 z = 1 / ( z * cos( z )) elseif @formula2 == 58 z = 1 / ( z * sin( z )) elseif @formula2 == 59 z = z * sin( z ) elseif @formula2 == 60 z = z * cos( z ) elseif @formula2 == 61 z = z * tan( z ) elseif @formula2 == 62 z = z * cotan( z ) elseif @formula2 == 63 z = z/cos( z ) elseif @formula2 == 64 z = z/sin( z ) elseif @formula2 == 65 z = sin( 1/z ) elseif @formula2 == 66 z = cos( 1/z ) elseif @formula2 == 67 z = tan( 1/z ) elseif @formula2 == 68 z = cotan( 1/z ) elseif @formula2 == 69 z = 1/cos( 1/z ) elseif @formula2 == 70 z = 1/sin( 1/z ) elseif @formula2 == 71 z = cotanh( z ) elseif @formula2 == 72 z = 1/cosh( z ) elseif @formula2 == 73 z = 1/sinh( z ) elseif @formula2 == 74 z = atanh( 1/z ) elseif @formula2 == 75 z = acosh( 1/z ) elseif @formula2 == 76 z = asinh( 1/z ) elseif @formula2 == 77 z = @coeff2a * z^@exponent2a + @coeff2b * z^@exponent2b + \ @coeff2c * z^@exponent2c elseif @formula2 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula2 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula2 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula2 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula2 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula2 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula2 == 84 z = sinh(1/z) elseif @formula2 == 85 z = cosh(1/z) elseif @formula2 == 86 z = tanh(1/z) elseif @formula2 == 87 z = cotanh(1/z) elseif @formula2 == 88 z = (1,0)/cosh(1/z) elseif @formula2 == 89 z = (1,0)/sinh(1/z) elseif @formula2 == 90 z = sin( z ) * tan(z) elseif @formula2 == 91 z = sinh(z) * tanh(z) elseif @formula2 == 92 z = sinh(z) * cosh(z) elseif @formula2 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula2 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula2 == 97 z = sin(z) * cos(1/z) elseif @formula2 == 98 z = sin(z) * sin(1/z) elseif @formula2 == 99 zextra = log(z) z = zextra*zextra elseif @formula2 == 100 z = sin(z) * sin(2*z) elseif @formula2 == 101 z = exp(2*z) elseif @formula2 == 102 z = exp(-2*z) elseif @formula2 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula2 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula2 == 105 z = sinh(z) * cosh(1/z) elseif @formula2 == 106 z = sinh(z) * sinh(1/z) elseif @formula2 == 107 z = sin(z) * sinh(z) elseif @formula2 == 108 z = sin(z) * cosh(z) elseif @formula2 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula2 == 110 z = sin(z)*exp(z) elseif @formula2 == 111 z = cos(z)*exp(z) elseif @formula2 == 112 z = sinh(z)*exp(z) elseif @formula2 == 113 z = cosh(z)*exp(z) elseif @formula2 == 114 z = sin(z)*log(z) elseif @formula2 == 115 z = cos(z)*log(z) elseif @formula2 == 116 z = sinh(z)*log(z) else ; @formula2 == 117 z = cosh(z)*log(z) endif ; @formula2 endif ; execute endif ; !execute if !execute ; test for possible execution of Formula 3 since ; Formulas 1 and 2 were not executed if @cond3mod == 1 || @cond3mod > 4 tempxx = abs(tempx), tempyy = abs(tempy) tempoldxx = abs(tempoldx), tempoldyy = abs(tempoldy) else tempxx = tempx, tempyy = tempy tempoldxx = tempoldx, tempoldyy = tempoldy endif ; @cond3mod if @condition3 == 0 temp = cabs(z) elseif @condition3 == 1 temp = tempxx elseif @condition3 == 2 temp = tempyy elseif @condition3 == 3 temp = tempxx+tempyy elseif @condition3 == 4 temp = tempxx-tempyy elseif @condition3 == 5 temp = tempyy-tempxx elseif @condition3 == 6 temp = tempxx*tempyy elseif @condition3 == 7 temp = tempxx/tempyy elseif @condition3 == 8 temp = tempyy/tempxx elseif @condition3 == 9 temp = tempxx^tempyy elseif @condition3 == 10 temp = tempyy^tempxx elseif @condition3 == 11 temp = |z| elseif @condition3 == 12 temp = |z-zold| elseif @condition3 == 13 temp = cabs(z-zold) elseif @condition3 == 14 temp = cabs(z+zold) elseif @condition3 == 15 temp = cabs(z)-cabs(zold) elseif @condition3 == 16 temp = cabs(z)+cabs(zold) elseif @condition3 == 17 temp = tempxx+tempoldxx elseif @condition3 == 18 temp = tempyy+tempoldyy elseif @condition3 == 19 temp = tempxx-tempoldxx elseif @condition3 == 20 temp = tempyy-tempoldyy elseif @condition3 == 21 temp = tempxx, tempextra = tempyy elseif @condition3 == 22 temp = tempxx, tempextra = tempyy elseif @condition3 == 23 temp = tempxx, tempextra = tempyy elseif @condition3 == 24 temp = cabs(z), tempextra = cabs(zold) elseif @condition3 == 25 temp = tempxx, tempextra = tempoldxx elseif @condition3 == 26 temp = tempyy, tempextra = tempoldyy endif ; @condition3 if @cond3mod == 2 || @cond3mod == 4 || @cond3mod == 5 || @cond3mod == 7 temp = temp*temp if @condition3 > 20 tempextra = tempextra*tempextra endif ; @condition3 endif ; @cond3mod if @cond3mod == 3 || @cond3mod == 4 || @cond3mod == 6 || @cond3mod == 7 temp = 1.0/temp if @condition3 > 20 tempextra = 1.0/tempextra endif ; @condition3 endif ; @cond3mod if @operation3 == 0 if temp > @level3 execute = TRUE endif ; temp elseif @operation3 == 1 if temp >= @level3 execute = TRUE endif ; temp elseif @operation3 == 2 if temp < @level3 execute = TRUE endif ; temp elseif @operation3 == 3 if temp <= @level3 execute = TRUE endif ; temp endif ; @operation3 if execute ; handle logic of special cases if @condition3 == 21 || @condition3 > 23 ; AND if @operation3 == 0 if tempextra <= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 1 if tempextra < @level3 execute = FALSE endif ; tempextra elseif @operation3 == 2 if tempextra >= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 3 if tempextra > @level3 execute = FALSE endif ; tempextra endif ; @operation3 elseif @condition3 == 22 ; EOR if @operation3 == 0 if tempextra > @level3 execute = FALSE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = FALSE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = FALSE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = FALSE endif ; tempextra endif ; @operation3 endif ; @condition3 else if @condition3 == 22 ; OR if @operation3 == 0 if tempextra > @level3 execute = TRUE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = TRUE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = TRUE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = TRUE endif ; tempextra endif ; @operation3 elseif @condition3 == 22 ; EOR if @operation3 == 0 if tempextra > @level3 execute = TRUE endif ; tempextra elseif @operation3 == 1 if tempextra >= @level3 execute = TRUE endif ; tempextra elseif @operation3 == 2 if tempextra < @level3 execute = TRUE endif ; tempextra elseif @operation3 == 3 if tempextra <= @level3 execute = TRUE endif ; tempextra endif ; @operation3 endif ; @condition3 endif ; execute ; Execute 2nd formula selection if appropriate if execute if @formula3 == 0 z = z * z elseif @formula3 == 1 z = z * z * z elseif @formula3 == 2 zextra = z * z z = zextra * zextra elseif @formula3 == 3 z = z ^ @power3 elseif @formula3 == 4 z = 1/z elseif @formula3 == 5 z = sqrt(z) elseif @formula3 == 6 z = 1 / ( z * z ) elseif @formula3 == 7 z = log(z) elseif @formula3 == 8 z = exp( z) elseif @formula3 == 9 z = z^z elseif @formula3 == 10 z = sin( z ) elseif @formula3 == 11 z = cos( z ) elseif @formula3 == 12 z = tan( z ) elseif @formula3 == 13 z = asin( z ) elseif @formula3 == 14 z = acos( z ) elseif @formula3 == 15 z = atan( z ) elseif @formula3 == 16 z = sinh( z ) elseif @formula3 == 17 z = cosh( z ) elseif @formula3 == 18 z = tanh( z ) elseif @formula3 == 19 z = asinh( z ) elseif @formula3 == 20 z = acosh( z ) elseif @formula3 == 21 z = atanh( z ) elseif @formula3 == 22 z = log( 1/z ) elseif @formula3 == 23 z = log( log( z )) elseif @formula3 == 24 z = exp( -z ) elseif @formula3 == 25 z = exp( 1/z ) elseif @formula3 == 26 z = z^(-z) elseif @formula3 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula3 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula3 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula3 == 30 z = cotan( z ) elseif @formula3 == 31 z = 1/cos( z ) elseif @formula3 == 32 z = 1/sin( z ) elseif @formula3 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula3 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula3 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula3 == 36 zextra = z^(z) z = z^zextra elseif @formula3 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula3 == 38 z = log(-z) elseif @formula3 == 39 z = 1/log( z ) elseif @formula3 == 40 z = z * log( z ) elseif @formula3 == 41 z = sin( z ) / z elseif @formula3 == 42 z = cos( z ) / z elseif @formula3 == 43 z = sin( z ) * cos( z ) elseif @formula3 == 44 z = sin( z^2 ) elseif @formula3 == 45 z = exp( -1/z ) elseif @formula3 == 46 z = z * exp( z ) elseif @formula3 == 47 z = z * exp( -z ) elseif @formula3 == 48 z = z * exp( 1/z ) elseif @formula3 == 49 z = z * exp( -1/z ) elseif @formula3 == 50 z = z * z * z elseif @formula3 == 51 z = 1 / ( z * z * z ) elseif @formula3 == 52 z = atan( 1 / z ) elseif @formula3 == 53 z = acos( 1 / z ) elseif @formula3 == 54 z = asin( 1 / z ) elseif @formula3 == 55 z = tan( z ) / z elseif @formula3 == 56 z = cotan( z ) / z elseif @formula3 == 57 z = 1 / ( z * cos( z )) elseif @formula3 == 58 z = 1 / ( z * sin( z )) elseif @formula3 == 59 z = z * sin( z ) elseif @formula3 == 60 z = z * cos( z ) elseif @formula3 == 61 z = z * tan( z ) elseif @formula3 == 62 z = z * cotan( z ) elseif @formula3 == 63 z = z/cos( z ) elseif @formula3 == 64 z = z/sin( z ) elseif @formula3 == 65 z = sin( 1/z ) elseif @formula3 == 66 z = cos( 1/z ) elseif @formula3 == 67 z = tan( 1/z ) elseif @formula3 == 68 z = cotan( 1/z ) elseif @formula3 == 69 z = 1/cos( 1/z ) elseif @formula3 == 70 z = 1/sin( 1/z ) elseif @formula3 == 71 z = cotanh( z ) elseif @formula3 == 72 z = 1/cosh( z ) elseif @formula3 == 73 z = 1/sinh( z ) elseif @formula3 == 74 z = atanh( 1/z ) elseif @formula3 == 75 z = acosh( 1/z ) elseif @formula3 == 76 z = asinh( 1/z ) elseif @formula3 == 77 z = @coeff3a * z^@exponent3a + @coeff3b * z^@exponent3b + \ @coeff3c * z^@exponent3c elseif @formula3 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula3 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula3 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula3 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula3 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula3 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula3 == 84 z = sinh(1/z) elseif @formula3 == 85 z = cosh(1/z) elseif @formula3 == 86 z = tanh(1/z) elseif @formula3 == 87 z = cotanh(1/z) elseif @formula3 == 88 z = (1,0)/cosh(1/z) elseif @formula3 == 89 z = (1,0)/sinh(1/z) elseif @formula3 == 90 z = sin( z ) * tan(z) elseif @formula3 == 91 z = sinh(z) * tanh(z) elseif @formula3 == 92 z = sinh(z) * cosh(z) elseif @formula3 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula3 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula3 == 97 z = sin(z) * cos(1/z) elseif @formula3 == 98 z = sin(z) * sin(1/z) elseif @formula3 == 99 zextra = log(z) z = zextra*zextra elseif @formula3 == 100 z = sin(z) * sin(2*z) elseif @formula3 == 101 z = exp(2*z) elseif @formula3 == 102 z = exp(-2*z) elseif @formula3 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula3 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula3 == 105 z = sinh(z) * cosh(1/z) elseif @formula3 == 106 z = sinh(z) * sinh(1/z) elseif @formula3 == 107 z = sin(z) * sinh(z) elseif @formula3 == 108 z = sin(z) * cosh(z) elseif @formula3 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula3 == 110 z = sin(z)*exp(z) elseif @formula3 == 111 z = cos(z)*exp(z) elseif @formula3 == 112 z = sinh(z)*exp(z) elseif @formula3 == 113 z = cosh(z)*exp(z) elseif @formula3 == 114 z = sin(z)*log(z) elseif @formula3 == 115 z = cos(z)*log(z) elseif @formula3 == 116 z = sinh(z)*log(z) else ; @formula3 == 117 z = cosh(z)*log(z) endif ; @formula3 endif ; execute endif ; !execute if !execute ; Execute Formula 4 since none of the others were executed if @formula4 == 0 z = z * z elseif @formula4 == 1 z = z * z * z elseif @formula4 == 2 zextra = z * z z = zextra * zextra elseif @formula4 == 3 z = z ^ @power4 elseif @formula4 == 4 z = 1/z elseif @formula4 == 5 z = sqrt(z) elseif @formula4 == 6 z = 1 / ( z * z ) elseif @formula4 == 7 z = log(z) elseif @formula4 == 8 z = exp( z) elseif @formula4 == 9 z = z^z elseif @formula4 == 10 z = sin( z ) elseif @formula4 == 11 z = cos( z ) elseif @formula4 == 12 z = tan( z ) elseif @formula4 == 13 z = asin( z ) elseif @formula4 == 14 z = acos( z ) elseif @formula4 == 15 z = atan( z ) elseif @formula4 == 16 z = sinh( z ) elseif @formula4 == 17 z = cosh( z ) elseif @formula4 == 18 z = tanh( z ) elseif @formula4 == 19 z = asinh( z ) elseif @formula4 == 20 z = acosh( z ) elseif @formula4 == 21 z = atanh( z ) elseif @formula4 == 22 z = log( 1/z ) elseif @formula4 == 23 z = log( log( z )) elseif @formula4 == 24 z = exp( -z ) elseif @formula4 == 25 z = exp( 1/z ) elseif @formula4 == 26 z = z^(-z) elseif @formula4 == 27 zextra = sin( z ) z = zextra * zextra elseif @formula4 == 28 zextra = cos( z ) z = zextra * zextra elseif @formula4 == 29 zextra = tan( z ) z = zextra * zextra elseif @formula4 == 30 z = cotan( z ) elseif @formula4 == 31 z = 1/cos( z ) elseif @formula4 == 32 z = 1/sin( z ) elseif @formula4 == 33 zextra = cotan( z ) z = zextra * zextra elseif @formula4 == 34 zextra = 1/cos( z ) z = zextra * zextra elseif @formula4 == 35 zextra = 1/sin( z ) z = zextra * zextra elseif @formula4 == 36 zextra = z^(z) z = z^zextra elseif @formula4 == 37 zextra = z^(z) z = 1/( z^zextra ) elseif @formula4 == 38 z = log(-z) elseif @formula4 == 39 z = 1/log( z ) elseif @formula4 == 40 z = z * log( z ) elseif @formula4 == 41 z = sin( z ) / z elseif @formula4 == 42 z = cos( z ) / z elseif @formula4 == 43 z = sin( z ) * cos( z ) elseif @formula4 == 44 z = sin( z^2 ) elseif @formula4 == 45 z = exp( -1/z ) elseif @formula4 == 46 z = z * exp( z ) elseif @formula4 == 47 z = z * exp( -z ) elseif @formula4 == 48 z = z * exp( 1/z ) elseif @formula4 == 49 z = z * exp( -1/z ) elseif @formula4 == 50 z = z * z * z elseif @formula4 == 51 z = 1 / ( z * z * z ) elseif @formula4 == 52 z = atan( 1 / z ) elseif @formula4 == 53 z = acos( 1 / z ) elseif @formula4 == 54 z = asin( 1 / z ) elseif @formula4 == 55 z = tan( z ) / z elseif @formula4 == 56 z = cotan( z ) / z elseif @formula4 == 57 z = 1 / ( z * cos( z )) elseif @formula4 == 58 z = 1 / ( z * sin( z )) elseif @formula4 == 59 z = z * sin( z ) elseif @formula4 == 60 z = z * cos( z ) elseif @formula4 == 61 z = z * tan( z ) elseif @formula4 == 62 z = z * cotan( z ) elseif @formula4 == 63 z = z/cos( z ) elseif @formula4 == 64 z = z/sin( z ) elseif @formula4 == 65 z = sin( 1/z ) elseif @formula4 == 66 z = cos( 1/z ) elseif @formula4 == 67 z = tan( 1/z ) elseif @formula4 == 68 z = cotan( 1/z ) elseif @formula4 == 69 z = 1/cos( 1/z ) elseif @formula4 == 70 z = 1/sin( 1/z ) elseif @formula4 == 71 z = cotanh( z ) elseif @formula4 == 72 z = 1/cosh( z ) elseif @formula4 == 73 z = 1/sinh( z ) elseif @formula4 == 74 z = atanh( 1/z ) elseif @formula4 == 75 z = acosh( 1/z ) elseif @formula4 == 76 z = asinh( 1/z ) elseif @formula4 == 77 z = @coeff4a * z^@exponent4a + @coeff4b * z^@exponent4b + \ @coeff4c * z^@exponent4c elseif @formula4 == 78 zextra = sinh(z) z = zextra * zextra elseif @formula4 == 79 zextra = cosh( z ) z = zextra * zextra elseif @formula4 == 80 zextra = tanh(z) z = zextra * zextra elseif @formula4 == 81 zextra = cotanh( z ) z = zextra * zextra elseif @formula4 == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif @formula4 == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif @formula4 == 84 z = sinh(1/z) elseif @formula4 == 85 z = cosh(1/z) elseif @formula4 == 86 z = tanh(1/z) elseif @formula4 == 87 z = cotanh(1/z) elseif @formula4 == 88 z = (1,0)/cosh(1/z) elseif @formula4 == 89 z = (1,0)/sinh(1/z) elseif @formula4 == 90 z = sin( z ) * tan(z) elseif @formula4 == 91 z = sinh(z) * tanh(z) elseif @formula4 == 92 z = sinh(z) * cosh(z) elseif @formula4 == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif @formula4 == 96 zextra = sin( 1/z ) z = zextra*zextra elseif @formula4 == 97 z = sin(z) * cos(1/z) elseif @formula4 == 98 z = sin(z) * sin(1/z) elseif @formula4 == 99 zextra = log(z) z = zextra*zextra elseif @formula4 == 100 z = sin(z) * sin(2*z) elseif @formula4 == 101 z = exp(2*z) elseif @formula4 == 102 z = exp(-2*z) elseif @formula4 == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif @formula4 == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif @formula4 == 105 z = sinh(z) * cosh(1/z) elseif @formula4 == 106 z = sinh(z) * sinh(1/z) elseif @formula4 == 107 z = sin(z) * sinh(z) elseif @formula4 == 108 z = sin(z) * cosh(z) elseif @formula4 == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif @formula4 == 110 z = sin(z)*exp(z) elseif @formula4 == 111 z = cos(z)*exp(z) elseif @formula4 == 112 z = sinh(z)*exp(z) elseif @formula4 == 113 z = cosh(z)*exp(z) elseif @formula4 == 114 z = sin(z)*log(z) elseif @formula4 == 115 z = cos(z)*log(z) elseif @formula4 == 116 z = sinh(z)*log(z) else ; @formula4 == 117 z = cosh(z)*log(z) endif ; @formula4 endif ; !execute if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "ShiftMan Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If Condition1 Operation1 Level1 is TRUE, then Formula 1 is executed; \ otherwise Condition 2 is examined. For 'z^power', param 'Power 1' sets \ exponent. For '3-term polynomial' set params 'Coeff 1a', 'Exponent 1a', \ 'Coeff 1b', 'Exponent 1b', 'Coeff 1c', 'Exponent 1c'." endparam param condition1 caption = "Condition 1" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" default = 1 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param operation1 caption = "Operation 1" enum = ">" ">=" "<" "<=" default = 0 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param level1 caption = "Level 1" default = 1.0 hint = "Params Condition 1, Operation 1, and Level 1 determine whether \ Formula 1 is executed on the current iteration: if Cond1 Op1 Level1 \ is TRUE, then Formula 1 is executed, otherwise Condition 2 is examined" endparam param cond1mod caption = "Cond1 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 1 test is performed" endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 1 hint = "If Condition2 Operation2 Level2 is TRUE (& Cond1 is FALSE), then \ Formula 2 is executed; otherwise Cond3 is examined. For \ 'z^power', param 'Power 2' sets power. For '3-term polynomial' \ set params Coeff 2a, Exponent 2a, Coeff 2b, Exponent 2b, \ Coeff 2c, Exponent 2c" endparam param condition2 caption = "Condition 2" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" default = 1 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed (assuming Cond1 was NOT true) \ , otherwise Condition 3 is examined" endparam param operation2 caption = "Operation 2" enum = ">" ">=" "<" "<=" default = 3 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed, otherwise Condition 3 is examined" endparam param level2 caption = "Level 2" default = 1.0 hint = "Params Condition 2, Operation 2, and Level 2 determine whether \ Formula 2 is executed on the current iteration: if Cond2 Op2 Level2 \ is TRUE, then Formula 2 is executed, otherwise Condition 3 is examined" endparam param cond2mod caption = "Cond2 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 2 test is performed" endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If Cond3 Op3 Level3 is TRUE (& Conds 1 and 2 are FALSE), then \ Formula 3 is executed; otherwise Form 4 is executed. For \ 'z^power', param 'Power 3' sets power. For '3-term polynomial' \ set params Coeff 3a, Exponent 3a, Coeff 3b, Exponent 3b, \ Coeff 3c, Exponent 3c" endparam param condition3 caption = "Condition 3" enum = "cabs(z)" "Real(z)" "Imag(z)" "Real+Imag" "R - I" "I - R" \ "R * I" "R/I" "I/R" "R^I" "I^R" \ "|z|" "|z - old z|" "cabs(z-old z)" "cabs(z+old z)" \ "cabs(z)-cabs(oldz)" "cabs(z)+cabs(oldz)" \ "R + old R" "I +old I" "R - old R" "I - old I" \ "R AND I" "R OR I" "R EOR I" \ "cabs(z) && cabs(oldz)" "R && old R" "I && old I" hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param operation3 caption = "Operation 3" enum = ">" ">=" "<" "<=" default = 0 hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param level3 caption = "Level 3" default = 0.0 hint = "Params Condition 3, Operation 3, and Level 3 determine whether \ Formula 3 is executed on the current iteration: if Cond3 Op3 Level3 \ is TRUE, then Formula 3 is executed, otherwise Formula 4 is executed" endparam param cond3mod caption = "Cond3 Modifier" enum = "none" "use abs()" "use sqr" "use recip" "sqr+recip" "abs+sqr" \ "abs+recip" "abs+sqr+recip" default = 0 hint = "These functions can be applied to the real and imaginary parts \ of z before the Condition 3 test is performed" endparam param formula4 caption = "Formula 4" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" default = 0 hint = "If conditions 1, 2, and 3 are all FALSE, then this formula is executed; \ For 'z^power', param 'Power 4' sets \ exponent. For '3-term polynomial' set params 'Coeff 4a', 'Exponent 4a', \ 'Coeff 4b', 'Exponent 4b', 'Coeff 4c', 'Exponent 4c'." endparam param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" endparam param power4 caption = "Power 4" default = (6,0) hint = "This is the power used for the fourth formula series if parameter \ 'Formula 4' is set to 'z^power'" endparam param coeff1a caption = "Coeff 1A" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent1a caption = "Exponent 1A" default = (6,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff1b caption = "Coeff 1B" default = (-1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent1b caption = "Exponent 1B" default = (4,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff1c caption = "Coeff 1C" default = (1,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent1c caption = "Exponent 1C" default = (2,0) hint = "If 'Formula 1' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff2a caption = "Coeff 2A" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent2a caption = "Exponent 2A" default = (6,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff2b caption = "Coeff 2B" default = (-1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent2b caption = "Exponent 2B" default = (4,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff2c caption = "Coeff 2C" default = (1,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent2c caption = "Exponent 2C" default = (2,0) hint = "If 'Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff3a caption = "Coeff 3A" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent3a caption = "Exponent 3A" default = (6,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff3b caption = "Coeff 3B" default = (-1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent3b caption = "Exponent 3B" default = (4,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff3c caption = "Coeff 3C" default = (1,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent3c caption = "Exponent 3C" default = (2,0) hint = "If 'Formula 3' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param coeff4a caption = "Coeff 4A" default = (1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponent4a caption = "Exponent 4A" default = (6,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeff4b caption = "Coeff 4B" default = (-1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponent4b caption = "Exponent 4B" default = (4,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeff4c caption = "Coeff 4C" default = (1,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponent4c caption = "Exponent 4C" default = (2,0) hint = "If 'Formula 4' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-shiftMandelbrot" perturbation = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype formula1 = formula1 condition1 = condition1 cond1mod = cond1mod operation1 = operation1 level1 = level1 formula2 = formula2 condition2 = condition2 cond2mod = cond2mod operation2 = operation2 level2 = level2 formula3 = formula3 condition3 = condition3 cond3mod = cond3mod operation3 = operation3 level3 = level3 formula4 = formula4 blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower power1 = power1 power2 = power2 power3 = power3 power4 = power4 coeff1a = coeff1a exponent1a = exponent1a coeff1b = coeff1b exponent1b = exponent1b coeff1c = coeff1c exponent1c = exponent1c coeff2a = coeff2a exponent2a = exponent2a coeff2b = coeff2b exponent2b = exponent2b coeff2c = coeff2c exponent2c = exponent2c coeff3a = coeff3a exponent3a = exponent3a coeff3b = coeff3b exponent3b = exponent3b coeff3c = coeff3c exponent3c = exponent3c coeff4a = coeff4a exponent4a = exponent4a coeff4b = coeff4b exponent4b = exponent4b coeff4c = coeff4c exponent4c = exponent4c pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-Intervals { ; jam 020213 ; Up to 11 different Mandelbrot/Julia style formulas can be specified. ; Formula 1 is executed for N1 iterations, then Formula 2 is executed for ; N2 iterations, etc., up to the Final Formula, which is executed on all ; subsequent iterations. If any of Formulas 1 thru 10 counts (i.e., N1-N10) ; are set to 0, then execution of the Final Formula commences. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ; ( CoeffC * z^ExponentC ) + constant ; To reduce the number of variables needed, all formulas use the same ; set of coeffs and exponents for the polynomial option. ; In cycling mode, Final Formula is never executed, but Formulas 1-10 ; are continuously stepped through and executed for their respective ; iteration count. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif int iterations = int formindex = 0 int limit1 = @count1+1 int limit2 = limit1 + @count2 int limit3 = limit2 + @count3 int limit4 = limit3 + @count4 int limit5 = limit4 + @count5 int limit6 = limit5 + @count6 int limit7 = limit6 + @count7 int limit8 = limit7 + @count8 int limit9 = limit8 + @count9 int limit10 = limit9 + @count10 complex zextra = complex ztemp = (0,0) ; temp/spare scratch variable complex fpower = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode iterations = iterations+1 zblend = z if @cycle if iterations >= limit10 iterations = 1 ; skip final formula & start the cycle over at form1 endif ; iterations endif ; @cycle if iterations >= limit10 ; execute @finalformula formindex = @finalformula elseif iterations < limit1 ; execute @formula1, etc. formindex = @formula1 elseif iterations < limit2 formindex = @formula2 elseif iterations < limit3 formindex = @formula3 elseif iterations < limit4 formindex = @formula4 elseif iterations < limit5 formindex = @formula5 elseif iterations < limit6 formindex = @formula6 elseif iterations < limit7 formindex = @formula7 elseif iterations < limit8 formindex = @formula8 elseif iterations < limit9 formindex = @formula9 elseif iterations < limit10 formindex = @formula10 endif ; iterations if formindex == 0 z = z * z elseif formindex == 1 z = z * z * z elseif formindex == 2 zextra = z * z z = zextra * zextra elseif formindex == 3 if iterations >= limit10 fpower = @finalpower elseif iterations < limit1 fpower = @power1 elseif iterations < limit2 fpower = @power2 elseif iterations < limit3 fpower = @power3 elseif iterations < limit4 fpower = @power4 elseif iterations < limit5 fpower = @power5 elseif iterations < limit6 fpower = @power6 elseif iterations < limit7 fpower = @power7 elseif iterations < limit8 fpower = @power8 elseif iterations < limit9 fpower = @power9 elseif iterations < limit10 fpower = @power10 endif ; iterations z = z ^ fpower elseif formindex == 4 z = 1/z elseif formindex == 5 z = sqrt(z) elseif formindex == 6 z = 1 / ( z * z ) elseif formindex == 7 z = log(z) elseif formindex == 8 z = exp( z) elseif formindex == 9 z = z^z elseif formindex == 10 z = sin( z ) elseif formindex == 11 z = cos( z ) elseif formindex == 12 z = tan( z ) elseif formindex == 13 z = asin( z ) elseif formindex == 14 z = acos( z ) elseif formindex == 15 z = atan( z ) elseif formindex == 16 z = sinh( z ) elseif formindex == 17 z = cosh( z ) elseif formindex == 18 z = tanh( z ) elseif formindex == 19 z = asinh( z ) elseif formindex == 20 z = acosh( z ) elseif formindex == 21 z = atanh( z ) elseif formindex == 22 z = log( 1/z ) elseif formindex == 23 z = log( log( z )) elseif formindex == 24 z = exp( -z ) elseif formindex == 25 z = exp( 1/z ) elseif formindex == 26 z = z^(-z) elseif formindex == 27 zextra = sin( z ) z = zextra * zextra elseif formindex == 28 zextra = cos( z ) z = zextra * zextra elseif formindex == 29 zextra = tan( z ) z = zextra * zextra elseif formindex == 30 z = cotan( z ) elseif formindex == 31 z = 1/cos( z ) elseif formindex == 32 z = 1/sin( z ) elseif formindex == 33 zextra = cotan( z ) z = zextra * zextra elseif formindex == 34 zextra = 1/cos( z ) z = zextra * zextra elseif formindex == 35 zextra = 1/sin( z ) z = zextra * zextra elseif formindex == 36 zextra = z^(z) z = z^zextra elseif formindex == 37 zextra = z^(z) z = 1/( z^zextra ) elseif formindex == 38 z = log(-z) elseif formindex == 39 z = 1/log( z ) elseif formindex == 40 z = z * log( z ) elseif formindex == 41 z = sin( z ) / z elseif formindex == 42 z = cos( z ) / z elseif formindex == 43 z = sin( z ) * cos( z ) elseif formindex == 44 z = sin( z^2 ) elseif formindex == 45 z = exp( -1/z ) elseif formindex == 46 z = z * exp( z ) elseif formindex == 47 z = z * exp( -z ) elseif formindex == 48 z = z * exp( 1/z ) elseif formindex == 49 z = z * exp( -1/z ) elseif formindex == 50 z = z * z * z elseif formindex == 51 z = 1 / ( z * z * z ) elseif formindex == 52 z = atan( 1 / z ) elseif formindex == 53 z = acos( 1 / z ) elseif formindex == 54 z = asin( 1 / z ) elseif formindex == 55 z = tan( z ) / z elseif formindex == 56 z = cotan( z ) / z elseif formindex == 57 z = 1 / ( z * cos( z )) elseif formindex == 58 z = 1 / ( z * sin( z )) elseif formindex == 59 z = z * sin( z ) elseif formindex == 60 z = z * cos( z ) elseif formindex == 61 z = z * tan( z ) elseif formindex == 62 z = z * cotan( z ) elseif formindex == 63 z = z/cos( z ) elseif formindex == 64 z = z/sin( z ) elseif formindex == 65 z = sin( 1/z ) elseif formindex == 66 z = cos( 1/z ) elseif formindex == 67 z = tan( 1/z ) elseif formindex == 68 z = cotan( 1/z ) elseif formindex == 69 z = 1/cos( 1/z ) elseif formindex == 70 z = 1/sin( 1/z ) elseif formindex == 71 z = cotanh( z ) elseif formindex == 72 z = 1/cosh( z ) elseif formindex == 73 z = 1/sinh( z ) elseif formindex == 74 z = atanh( 1/z ) elseif formindex == 75 z = acosh( 1/z ) elseif formindex == 76 z = asinh( 1/z ) elseif formindex == 77 z = @coeffa * z^@exponenta + @coeffb * z^@exponentb + \ @coeffc * z^@exponentc elseif formindex == 78 zextra = sinh(z) z = zextra * zextra elseif formindex == 79 zextra = cosh( z ) z = zextra * zextra elseif formindex == 80 zextra = tanh(z) z = zextra * zextra elseif formindex == 81 zextra = cotanh( z ) z = zextra * zextra elseif formindex == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif formindex == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif formindex == 84 z = sinh(1/z) elseif formindex == 85 z = cosh(1/z) elseif formindex == 86 z = tanh(1/z) elseif formindex == 87 z = cotanh(1/z) elseif formindex == 88 z = (1,0)/cosh(1/z) elseif formindex == 89 z = (1,0)/sinh(1/z) elseif formindex == 90 z = sin( z ) * tan(z) elseif formindex == 91 z = sinh(z) * tanh(z) elseif formindex == 92 z = sinh(z) * cosh(z) elseif formindex == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif formindex == 96 zextra = sin( 1/z ) z = zextra*zextra elseif formindex == 97 z = sin(z) * cos(1/z) elseif formindex == 98 z = sin(z) * sin(1/z) elseif formindex == 99 zextra = log(z) z = zextra*zextra elseif formindex == 100 z = sin(z) * sin(2*z) elseif formindex == 101 z = exp(2*z) elseif formindex == 102 z = exp(-2*z) elseif formindex == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif formindex == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif formindex == 105 z = sinh(z) * cosh(1/z) elseif formindex == 106 z = sinh(z) * sinh(1/z) elseif formindex == 107 z = sin(z) * sinh(z) elseif formindex == 108 z = sin(z) * cosh(z) elseif formindex == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 110 z = sin(z)*exp(z) elseif formindex == 111 z = cos(z)*exp(z) elseif formindex == 112 z = sinh(z)*exp(z) elseif formindex == 113 z = cosh(z)*exp(z) elseif formindex == 114 z = sin(z)*log(z) elseif formindex == 115 z = cos(z)*log(z) elseif formindex == 116 z = sinh(z)*log(z) elseif formindex == 117 z = cosh(z)*log(z) elseif formindex == 118 z = exp(z*z) elseif formindex == 119 z = exp(-(z*z)) elseif formindex == 120 z = exp(1/(z*z)) else ; formindex == 121 z = exp(-1/(z*z)) endif ; formindex if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = ((abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest)) elseif @biomorphtype == "real + imag + cabs" bail = ((abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest))) elseif @biomorphtype == "real" bail = (abs(real(z)) < @biomorphtest) elseif @biomorphtype == "imag" bail = (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "cabs" bail = (cabs(z) < sqr(@biomorphtest)) endif ; @biomorphtype else bail = (|z| < @bail) endif ; @biomorph bailout: bail default: title = "Intervals" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param cycle caption = "Enable Cycling" default = TRUE hint = "If enabled, 'Final Formula' is never executed, rather any of formulas \ 1-10 that are enabled (i.e. their 'Count' parameter != 0) are repeatedly \ cycled through for their various iteration counts. If disabled, then \ any active Formulas 1-10 are executed for just 1 pass, then 'Final Formula' \ is executed for all remaining iterations" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 1 hint = "Formula executed from iterations 1 thru 'Count 1'. At \ iteration 'Count 1'+1, Formula 2 is executed. For 'z^power', set \ parameter 'Power 1'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count1 caption = "Count 1" default = 10 min = 0 hint = "This is the number of iterations that Formula 1 is executed. \ To turn off Formula 1 so it is not iterated at all, set 'Count 1' \ to zero" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = (@formula1 == "z^power") && (@count1 != 0) endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed from iterations 'Count 1' + 1 thru \ 'Count 1' + 'Count 2'; then, Form. 3 is executed if enabled. For \ 'z^power', set param 'Power 2'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count2 caption = "Count 2" default = 0 min = 0 hint = "This is the number of iterations that Formula 2 is executed. \ To turn off Formula 2 so it is not iterated at all, set 'Count 2' \ to zero" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = (@formula2 == "z^power") && (@count2 != 0) endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 2' iterations, if enabled. For \ 'z^power', set param 'Power 3'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count3 caption = "Count 3" default = 0 min = 0 hint = "This is the number of iterations that Formula 3 is executed. \ To turn off Formula 3 so it is not iterated at all, set 'Count 3' \ to zero" endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" visible = (@formula3 == "z^power") && (@count3 != 0) endparam param formula4 caption = "Formula 4" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 3' iterations, if enabled. For \ 'z^power', set param 'Power 4'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count4 caption = "Count 4" default = 0 min = 0 hint = "This is the number of iterations that Formula 4 is executed. \ To turn off Formula 4 so it is not iterated at all, set 'Count 4' \ to zero" endparam param power4 caption = "Power 4" default = (6,0) hint = "This is the power used for the fourth formula series if parameter \ 'Formula 4' is set to 'z^power'" visible = (@formula4 == "z^power") && (@count4 != 0) endparam param formula5 caption = "Formula 5" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 4' iterations, if enabled. For \ 'z^power', set param 'Power 5'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count5 caption = "Count 5" default = 0 min = 0 hint = "This is the number of iterations that Formula 5 is executed. \ To turn off Formula 5 so it is not iterated at all, set 'Count 5' \ to zero" endparam param power5 caption = "Power 5" default = (6,0) hint = "This is the power used for the fifth formula series if parameter \ 'Formula 5' is set to 'z^power'" visible = (@formula5 == "z^power") && (@count5 != 0) endparam param formula6 caption = "Formula 6" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 5' iterations, if enabled. For \ 'z^power', set param 'Power 6'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count6 caption = "Count 6" default = 0 min = 0 hint = "This is the number of iterations that Formula 6 is executed. \ To turn off Formula 6 so it is not iterated at all, set 'Count 6' \ to zero" endparam param power6 caption = "Power 6" default = (6,0) hint = "This is the power used for the sixth formula series if parameter \ 'Formula 6' is set to 'z^power'" visible = (@formula6 == "z^power") && (@count6 != 0) endparam param formula7 caption = "Formula 7" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 6' iterations, if enabled. For \ 'z^power', set param 'Power 7'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count7 caption = "Count 7" default = 0 min = 0 hint = "This is the number of iterations that Formula 7 is executed. \ To turn off Formula 7 so it is not iterated at all, set 'Count 7' \ to zero" endparam param power7 caption = "Power 7" default = (6,0) hint = "This is the power used for the seventh formula series if parameter \ 'Formula 7' is set to 'z^power'" visible = (@formula7 == "z^power") && (@count7 != 0) endparam param formula8 caption = "Formula 8" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 7' iterations, if enabled. For \ 'z^power', set param 'Power 8'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count8 caption = "Count 8" default = 0 min = 0 hint = "This is the number of iterations that Formula 8 is executed. \ To turn off Formula 8 so it is not iterated at all, set 'Count 8' \ to zero" endparam param power8 caption = "Power 8" default = (6,0) hint = "This is the power used for the eighth formula series if parameter \ 'Formula 8' is set to 'z^power'" visible = (@formula8 == "z^power") && (@count8 != 0) endparam param formula9 caption = "Formula 9" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 8' iterations, if enabled. For \ 'z^power', set param 'Power 9'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count9 caption = "Count 9" default = 0 min = 0 hint = "This is the number of iterations that Formula 9 is executed. \ To turn off Formula 9 so it is not iterated at all, set 'Count 9' \ to zero" endparam param power9 caption = "Power 9" default = (6,0) hint = "This is the power used for the ninth formula series if parameter \ 'Formula 9' is set to 'z^power'" visible = (@formula9 == "z^power") && (@count9 != 0) endparam param formula10 caption = "Formula 10" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 9' iterations, if enabled. For \ 'z^power', set param 'Power 10'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count10 caption = "Count 10" default = 0 min = 0 hint = "This is the number of iterations that Formula 10 is executed. \ To turn off Formula 10 so it is not iterated at all, set 'Count 10' \ to zero" endparam param power10 caption = "Power 10" default = (6,0) hint = "This is the power used for the tenth formula series if parameter \ 'Formula 10' is set to 'z^power'" visible = (@formula10 == "z^power") && (@count10 != 0) endparam param finalformula caption = "Final Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "If 'Cycling' is enabled, then \ this sets the default formula, iterated after all the other iteration \ limits are exceeded. If none of Formulas 1-10 are set, then this is the \ only formula iterated. For 'z^power' set param 'Final Power'; for \ 3-term polynom' set 'Coefficient' & 'Exponent' A, B, and C" visible = @cycle == FALSE endparam param finalpower caption = "Final Power" default = (5,0) hint = "This is the power used for the 'Final Formula' series if parameter \ 'Final Formula' is set to 'z^power'" visible = @finalformula == "z^power" endparam param coeffa caption = "Coefficient A" default = (1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 1st term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponenta caption = "Exponent A" default = (6,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 1st term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param coeffb caption = "Coefficient B" default = (-1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 2nd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponentb caption = "Exponent B" default = (4,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 2nd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param coeffc caption = "Coefficient C" default = (1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 3rd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponentc caption = "Exponent C" default = (2,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 3rd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-Intervals-J" jconstant = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower finalformula = finalformula formula1 = formula1 count1 = count1 formula2 = formula2 count2 = count2 formula3 = formula3 count3 = count3 formula4 = formula4 count4 = count4 formula5 = formula5 count5 = count5 formula6 = formula6 count6 = count6 formula7 = formula7 count7 = count7 formula8 = formula8 count8 = count8 formula9 = formula9 count9 = count9 formula10 = formula10 count10 = count10 finalpower = finalpower cycle = cycle power1 = power1 power2 = power2 power3 = power3 power4 = power4 power5 = power5 power6 = power6 power7 = power7 power8 = power8 power9 = power9 power10 = power10 coeffa = coeffa exponenta = exponenta coeffb = coeffb exponentb = exponentb coeffc = coeffc exponentc = exponentc pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-Intervals-J { ; jam 020213 ; Up to 11 different Mandelbrot/Julia style formulas can be specified. ; Formula 1 is executed for N1 iterations, then Formula 2 is executed for ; N2 iterations, etc., up to the Final Formula, which is executed on all ; subsequent iterations. If any of Formulas 1 thru 10 counts (i.e., N1-N10) ; are set to 0, then execution of the Final Formula commences. ; The 3-term polynomial formula option is ; z = ( CoeffA * z^ExponentA ) + ( CoeffB * z^ExponentB ) + ; ( CoeffC * z^ExponentC ) + constant ; To reduce the number of variables needed, all formulas use the same ; set of coeffs and exponents for the polynomial option. ; In cycling mode, Final Formula is never executed, but Formulas 1-10 ; are continuously stepped through and executed for their respective ; iteration count. init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif int iterations = int formindex = 0 int limit1 = @count1+1 int limit2 = limit1 + @count2 int limit3 = limit2 + @count3 int limit4 = limit3 + @count4 int limit5 = limit4 + @count5 int limit6 = limit5 + @count6 int limit7 = limit6 + @count7 int limit8 = limit7 + @count8 int limit9 = limit8 + @count9 int limit10 = limit9 + @count10 complex zextra = complex ztemp = (0,0) ; temp/spare scratch variable complex fpower = (0,0) complex zblend = (0,0) ; Pixel/constant initialization section if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) else ; @pixelformula == 118 jc = cosh(jc)*log(jc) endif ; @pixelformula = 1 endif ; @pixelformula != 0 loop: if @pmode != 0 z = z + jc endif ; pmode iterations = iterations+1 zblend = z if @cycle if iterations >= limit10 iterations = 1 ; skip final formula & start the cycle over at form1 endif ; iterations endif ; @cycle if iterations >= limit10 ; execute @finalformula formindex = @finalformula elseif iterations < limit1 ; execute @formula1, etc. formindex = @formula1 elseif iterations < limit2 formindex = @formula2 elseif iterations < limit3 formindex = @formula3 elseif iterations < limit4 formindex = @formula4 elseif iterations < limit5 formindex = @formula5 elseif iterations < limit6 formindex = @formula6 elseif iterations < limit7 formindex = @formula7 elseif iterations < limit8 formindex = @formula8 elseif iterations < limit9 formindex = @formula9 elseif iterations < limit10 formindex = @formula10 endif ; iterations if formindex == 0 z = z * z elseif formindex == 1 z = z * z * z elseif formindex == 2 zextra = z * z z = zextra * zextra elseif formindex == 3 if iterations >= limit10 fpower = @finalpower elseif iterations < limit1 fpower = @power1 elseif iterations < limit2 fpower = @power2 elseif iterations < limit3 fpower = @power3 elseif iterations < limit4 fpower = @power4 elseif iterations < limit5 fpower = @power5 elseif iterations < limit6 fpower = @power6 elseif iterations < limit7 fpower = @power7 elseif iterations < limit8 fpower = @power8 elseif iterations < limit9 fpower = @power9 elseif iterations < limit10 fpower = @power10 endif ; iterations z = z ^ fpower elseif formindex == 4 z = 1/z elseif formindex == 5 z = sqrt(z) elseif formindex == 6 z = 1 / ( z * z ) elseif formindex == 7 z = log(z) elseif formindex == 8 z = exp( z) elseif formindex == 9 z = z^z elseif formindex == 10 z = sin( z ) elseif formindex == 11 z = cos( z ) elseif formindex == 12 z = tan( z ) elseif formindex == 13 z = asin( z ) elseif formindex == 14 z = acos( z ) elseif formindex == 15 z = atan( z ) elseif formindex == 16 z = sinh( z ) elseif formindex == 17 z = cosh( z ) elseif formindex == 18 z = tanh( z ) elseif formindex == 19 z = asinh( z ) elseif formindex == 20 z = acosh( z ) elseif formindex == 21 z = atanh( z ) elseif formindex == 22 z = log( 1/z ) elseif formindex == 23 z = log( log( z )) elseif formindex == 24 z = exp( -z ) elseif formindex == 25 z = exp( 1/z ) elseif formindex == 26 z = z^(-z) elseif formindex == 27 zextra = sin( z ) z = zextra * zextra elseif formindex == 28 zextra = cos( z ) z = zextra * zextra elseif formindex == 29 zextra = tan( z ) z = zextra * zextra elseif formindex == 30 z = cotan( z ) elseif formindex == 31 z = 1/cos( z ) elseif formindex == 32 z = 1/sin( z ) elseif formindex == 33 zextra = cotan( z ) z = zextra * zextra elseif formindex == 34 zextra = 1/cos( z ) z = zextra * zextra elseif formindex == 35 zextra = 1/sin( z ) z = zextra * zextra elseif formindex == 36 zextra = z^(z) z = z^zextra elseif formindex == 37 zextra = z^(z) z = 1/( z^zextra ) elseif formindex == 38 z = log(-z) elseif formindex == 39 z = 1/log( z ) elseif formindex == 40 z = z * log( z ) elseif formindex == 41 z = sin( z ) / z elseif formindex == 42 z = cos( z ) / z elseif formindex == 43 z = sin( z ) * cos( z ) elseif formindex == 44 z = sin( z^2 ) elseif formindex == 45 z = exp( -1/z ) elseif formindex == 46 z = z * exp( z ) elseif formindex == 47 z = z * exp( -z ) elseif formindex == 48 z = z * exp( 1/z ) elseif formindex == 49 z = z * exp( -1/z ) elseif formindex == 50 z = z * z * z elseif formindex == 51 z = 1 / ( z * z * z ) elseif formindex == 52 z = atan( 1 / z ) elseif formindex == 53 z = acos( 1 / z ) elseif formindex == 54 z = asin( 1 / z ) elseif formindex == 55 z = tan( z ) / z elseif formindex == 56 z = cotan( z ) / z elseif formindex == 57 z = 1 / ( z * cos( z )) elseif formindex == 58 z = 1 / ( z * sin( z )) elseif formindex == 59 z = z * sin( z ) elseif formindex == 60 z = z * cos( z ) elseif formindex == 61 z = z * tan( z ) elseif formindex == 62 z = z * cotan( z ) elseif formindex == 63 z = z/cos( z ) elseif formindex == 64 z = z/sin( z ) elseif formindex == 65 z = sin( 1/z ) elseif formindex == 66 z = cos( 1/z ) elseif formindex == 67 z = tan( 1/z ) elseif formindex == 68 z = cotan( 1/z ) elseif formindex == 69 z = 1/cos( 1/z ) elseif formindex == 70 z = 1/sin( 1/z ) elseif formindex == 71 z = cotanh( z ) elseif formindex == 72 z = 1/cosh( z ) elseif formindex == 73 z = 1/sinh( z ) elseif formindex == 74 z = atanh( 1/z ) elseif formindex == 75 z = acosh( 1/z ) elseif formindex == 76 z = asinh( 1/z ) elseif formindex == 77 z = @coeffa * z^@exponenta + @coeffb * z^@exponentb + \ @coeffc * z^@exponentc elseif formindex == 78 zextra = sinh(z) z = zextra * zextra elseif formindex == 79 zextra = cosh( z ) z = zextra * zextra elseif formindex == 80 zextra = tanh(z) z = zextra * zextra elseif formindex == 81 zextra = cotanh( z ) z = zextra * zextra elseif formindex == 82 zextra = (1,0)/cosh(z) z = zextra * zextra elseif formindex == 83 zextra = (1,0) / sinh( z ) z = zextra * zextra elseif formindex == 84 z = sinh(1/z) elseif formindex == 85 z = cosh(1/z) elseif formindex == 86 z = tanh(1/z) elseif formindex == 87 z = cotanh(1/z) elseif formindex == 88 z = (1,0)/cosh(1/z) elseif formindex == 89 z = (1,0)/sinh(1/z) elseif formindex == 90 z = sin( z ) * tan(z) elseif formindex == 91 z = sinh(z) * tanh(z) elseif formindex == 92 z = sinh(z) * cosh(z) elseif formindex == 93 ztemp = sinh(z), zextra = cosh(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 94 ztemp = sin(z), zextra = cos(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 95 zextra = 1/z z = sin(zextra)*cos(zextra) elseif formindex == 96 zextra = sin( 1/z ) z = zextra*zextra elseif formindex == 97 z = sin(z) * cos(1/z) elseif formindex == 98 z = sin(z) * sin(1/z) elseif formindex == 99 zextra = log(z) z = zextra*zextra elseif formindex == 100 z = sin(z) * sin(2*z) elseif formindex == 101 z = exp(2*z) elseif formindex == 102 z = exp(-2*z) elseif formindex == 103 zextra = 1/z z = sinh(zextra)*cosh(zextra) elseif formindex == 104 zextra = sinh( 1/z ) z = zextra*zextra elseif formindex == 105 z = sinh(z) * cosh(1/z) elseif formindex == 106 z = sinh(z) * sinh(1/z) elseif formindex == 107 z = sin(z) * sinh(z) elseif formindex == 108 z = sin(z) * cosh(z) elseif formindex == 109 zextra = sin(z), ztemp = sinh(z) z = ztemp*ztemp*zextra*zextra elseif formindex == 110 z = sin(z)*exp(z) elseif formindex == 111 z = cos(z)*exp(z) elseif formindex == 112 z = sinh(z)*exp(z) elseif formindex == 113 z = cosh(z)*exp(z) elseif formindex == 114 z = sin(z)*log(z) elseif formindex == 115 z = cos(z)*log(z) elseif formindex == 116 z = sinh(z)*log(z) elseif formindex == 117 z = cosh(z)*log(z) elseif formindex == 118 z = exp(z*z) elseif formindex == 119 z = exp(-(z*z)) elseif formindex == 120 z = exp(1/(z*z)) else ; formindex == 121 z = exp(-1/(z*z)) endif ; formindex if @blend z = @weightzfn * z + @weightzpwr * zblend^@zpower endif ; @blend if @pmode != 1 z = z + jc endif ; pmode if @biomorph if @biomorphtype == "real + imag" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) elseif @biomorphtype == "real + imag + cabs" bail = (abs(real(z)) < @biomorphtest) || (abs(imag(z)) < @biomorphtest) || (cabs(z) < sqr(@biomorphtest)) elseif @biomorphtype == "real" bail = abs(real(z)) < @biomorphtest elseif @biomorphtype == "imag" bail = abs(imag(z)) < @biomorphtest elseif @biomorphtype == "cabs" bail = cabs(z) < sqr(@biomorphtest) endif ; @biomorphtype else bail = |z| < @bail endif ; @biomorph bailout: bail default: title = "Intervals Julia" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param blend caption = "Blend Z^Power?" default = FALSE hint = "If enabled, the iterated function can be blended into a normal \ z^power Mandelbrot function; set parameter 'Z Power' to fix exponent, \ and 'Z Weight' and 'Function Weight' to fix blend proportions" endparam param weightzfn caption = "Function Weight" default = -0.1 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ function that is blended in with the normal z^power Mandelbrot" visible = @blend == TRUE endparam param weightzpwr caption = "Z^Power Weight" default = 1.0 hint = "If 'Blend Z^Power' is enabled, then this is the fraction of the \ normal z^power Mandelbrot that is blended in with the function" visible = @blend == TRUE endparam param zpower caption = "Z Power" default = (2,0) hint = "If 'Blend Z^Power' is enabled, then this is the exponent for the \ normal z^power Mandelbrot" visible = @blend == TRUE endparam param cycle caption = "Enable Cycling" default = TRUE hint = "If enabled, 'Final Formula' is never executed, rather any of formulas \ 1-10 that are enabled (i.e. their 'Count' parameter != 0) are repeatedly \ cycled through for their various iteration counts. If disabled, then \ any active Formulas 1-10 are executed for just 1 pass, then 'Final Formula' \ is executed for all remaining iterations" endparam param formula1 caption = "Formula 1" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 1 hint = "Formula executed from iterations 1 thru 'Count 1'. At \ iteration 'Count 1'+1, Formula 2 is executed. For 'z^power', set \ parameter 'Power 1'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count1 caption = "Count 1" default = 10 min = 0 hint = "This is the number of iterations that Formula 1 is executed. \ To turn off Formula 1 so it is not iterated at all, set 'Count 1' \ to zero" endparam param power1 caption = "Power 1" default = (5,0) hint = "This is the power used for the first formula series if parameter \ 'Formula 1' is set to 'z^power'" visible = (@formula1 == "z^power") && (@count1 != 0) endparam param formula2 caption = "Formula 2" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed from iterations 'Count 1' + 1 thru \ 'Count 1' + 'Count 2'; then, Form. 3 is executed if enabled. For \ 'z^power', set param 'Power 2'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count2 caption = "Count 2" default = 0 min = 0 hint = "This is the number of iterations that Formula 2 is executed. \ To turn off Formula 2 so it is not iterated at all, set 'Count 2' \ to zero" endparam param power2 caption = "Power 2" default = (6,0) hint = "This is the power used for the second formula series if parameter \ 'Formula 2' is set to 'z^power'" visible = (@formula2 == "z^power") && (@count2 != 0) endparam param formula3 caption = "Formula 3" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 2' iterations, if enabled. For \ 'z^power', set param 'Power 3'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count3 caption = "Count 3" default = 0 min = 0 hint = "This is the number of iterations that Formula 3 is executed. \ To turn off Formula 3 so it is not iterated at all, set 'Count 3' \ to zero" endparam param power3 caption = "Power 3" default = (6,0) hint = "This is the power used for the third formula series if parameter \ 'Formula 3' is set to 'z^power'" visible = (@formula3 == "z^power") && (@count3 != 0) endparam param formula4 caption = "Formula 4" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 3' iterations, if enabled. For \ 'z^power', set param 'Power 4'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count4 caption = "Count 4" default = 0 min = 0 hint = "This is the number of iterations that Formula 4 is executed. \ To turn off Formula 4 so it is not iterated at all, set 'Count 4' \ to zero" endparam param power4 caption = "Power 4" default = (6,0) hint = "This is the power used for the fourth formula series if parameter \ 'Formula 4' is set to 'z^power'" visible = (@formula4 == "z^power") && (@count4 != 0) endparam param formula5 caption = "Formula 5" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 4' iterations, if enabled. For \ 'z^power', set param 'Power 5'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count5 caption = "Count 5" default = 0 min = 0 hint = "This is the number of iterations that Formula 5 is executed. \ To turn off Formula 5 so it is not iterated at all, set 'Count 5' \ to zero" endparam param power5 caption = "Power 5" default = (6,0) hint = "This is the power used for the fifth formula series if parameter \ 'Formula 5' is set to 'z^power'" visible = (@formula5 == "z^power") && (@count5 != 0) endparam param formula6 caption = "Formula 6" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 5' iterations, if enabled. For \ 'z^power', set param 'Power 6'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count6 caption = "Count 6" default = 0 min = 0 hint = "This is the number of iterations that Formula 6 is executed. \ To turn off Formula 6 so it is not iterated at all, set 'Count 6' \ to zero" endparam param power6 caption = "Power 6" default = (6,0) hint = "This is the power used for the sixth formula series if parameter \ 'Formula 6' is set to 'z^power'" visible = (@formula6 == "z^power") && (@count6 != 0) endparam param formula7 caption = "Formula 7" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 6' iterations, if enabled. For \ 'z^power', set param 'Power 7'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count7 caption = "Count 7" default = 0 min = 0 hint = "This is the number of iterations that Formula 7 is executed. \ To turn off Formula 7 so it is not iterated at all, set 'Count 7' \ to zero" endparam param power7 caption = "Power 7" default = (6,0) hint = "This is the power used for the seventh formula series if parameter \ 'Formula 7' is set to 'z^power'" visible = (@formula7 == "z^power") && (@count7 != 0) endparam param formula8 caption = "Formula 8" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 7' iterations, if enabled. For \ 'z^power', set param 'Power 8'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count8 caption = "Count 8" default = 0 min = 0 hint = "This is the number of iterations that Formula 8 is executed. \ To turn off Formula 8 so it is not iterated at all, set 'Count 8' \ to zero" endparam param power8 caption = "Power 8" default = (6,0) hint = "This is the power used for the eighth formula series if parameter \ 'Formula 8' is set to 'z^power'" visible = (@formula8 == "z^power") && (@count8 != 0) endparam param formula9 caption = "Formula 9" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 8' iterations, if enabled. For \ 'z^power', set param 'Power 9'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count9 caption = "Count 9" default = 0 min = 0 hint = "This is the number of iterations that Formula 9 is executed. \ To turn off Formula 9 so it is not iterated at all, set 'Count 9' \ to zero" endparam param power9 caption = "Power 9" default = (6,0) hint = "This is the power used for the ninth formula series if parameter \ 'Formula 9' is set to 'z^power'" visible = (@formula9 == "z^power") && (@count9 != 0) endparam param formula10 caption = "Formula 10" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "Formula executed after 'Formula 9' iterations, if enabled. For \ 'z^power', set param 'Power 10'. For '3-term polynomial' set \ 6 params 'Coefficient' & 'Exponent' A, B, and C" endparam param count10 caption = "Count 10" default = 0 min = 0 hint = "This is the number of iterations that Formula 10 is executed. \ To turn off Formula 10 so it is not iterated at all, set 'Count 10' \ to zero" endparam param power10 caption = "Power 10" default = (6,0) hint = "This is the power used for the tenth formula series if parameter \ 'Formula 10' is set to 'z^power'" visible = (@formula10 == "z^power") && (@count10 != 0) endparam param finalformula caption = "Final Formula" enum = "z^2" "z^3" "z^4" "z^power" "1/z" "sqrt(z)" "1/z^2" "log(z)" "e^z" "z^z" \ "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" \ "3-term polynomial" "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" "e^(z^2)" "e^(-(z^2))" "e^(1/z^2)" "e^(-1/z^2)" default = 0 hint = "If 'Cycling' is enabled, then \ this sets the default formula, iterated after all the other iteration \ limits are exceeded. If none of Formulas 1-10 are set, then this is the \ only formula iterated. For 'z^power' set param 'Final Power'; for \ 3-term polynom' set 'Coefficient' & 'Exponent' A, B, and C" visible = @cycle == FALSE endparam param finalpower caption = "Final Power" default = (5,0) hint = "This is the power used for the 'Final Formula' series if parameter \ 'Final Formula' is set to 'z^power'" visible = @finalformula == "z^power" endparam param coeffa caption = "Coefficient A" default = (1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 1st term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponenta caption = "Exponent A" default = (6,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 1st term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param coeffb caption = "Coefficient B" default = (-1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 2nd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponentb caption = "Exponent B" default = (4,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 2nd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param coeffc caption = "Coefficient C" default = (1,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the coefficient of the 3rd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param exponentc caption = "Exponent C" default = (2,0) hint = "If any of the formula params (other than the pixel formula) \ are set to '3-term polynomial', this is the exponent of the 3rd term" visible = ((@formula1 == "3-term polynomial") || (@formula2 == "3-term polynomial") \ || (@formula3 == "3-term polynomial") || (@formula4 == "3-term polynomial") || \ (@formula5 == "3-term polynomial") || (@formula6 == "3-term polynomial") || \ (@formula7 == "3-term polynomial") || (@formula8 == "3-term polynomial") || \ (@formula9 == "3-term polynomial") || (@formula10 == "3-term polynomial") || \ (@finalformula == "3-term polynomial")) endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "Pixel value (Mand) or seed (Julia) can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pmode caption = "Pixel Mode" default = 0 enum = "Post-add" "Pre-add" "Both" hint = "'Post-add' -- formula is executed, then pixel/constant is added to result; \ 'Pre-add' -- pixel is added to z, then formula executed; 'Both' -- pixel added, \ formula executed, then pixel added again to result" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 64.0 hint = "Value needed to 'escape' to infinity" visible = !@biomorph endparam param biomorph caption = "Biomorph Bailout?" default = FALSE hint = "Enabling this setting changes the bailout condition to match \ Pickover's 'biomorph' definition. For coloring, consider using \ 'Biomorph' in the public folder 'jam2.ucl'." endparam param biomorphtest caption = "Biomorph Bailout Test" default = 10.0 hint = "The bailout value for the 'Biomorph' test." visible = @biomorph endparam param biomorphtype caption = "Biomorph Type" enum = "real" "imag" "real + imag" "real + imag + cabs" "cabs" default = 3 hint = "This determines the bailout condition for the Biomorph." visible = @biomorph endparam switch: type = "jam-Intervals" perturbation = #pixel bail = bail biomorph = biomorph biomorphtest = biomorphtest biomorphtype = biomorphtype blend = blend weightzfn = weightzfn weightzpwr = weightzpwr zpower = zpower finalformula = finalformula formula1 = formula1 count1 = count1 formula2 = formula2 count2 = count2 formula3 = formula3 count3 = count3 formula4 = formula4 count4 = count4 formula5 = formula5 count5 = count5 formula6 = formula6 count6 = count6 formula7 = formula7 count7 = count7 formula8 = formula8 count8 = count8 formula9 = formula9 count9 = count9 formula10 = formula10 count10 = count10 finalpower = finalpower cycle = cycle power1 = power1 power2 = power2 power3 = power3 power4 = power4 power5 = power5 power6 = power6 power7 = power7 power8 = power8 power9 = power9 power10 = power10 coeffa = coeffa exponenta = exponenta coeffb = coeffb exponentb = exponentb coeffc = coeffc exponentc = exponentc pixelformula = pixelformula ppower = ppower coeffpa = coeffpa exponentpa = exponentpa coeffpb = coeffpb exponentpb = exponentpb coeffpc = coeffpc exponentpc = exponentpc pmode = pmode } jam-quintonions { ; jam 011205 ; General Order-5 hypercomplex (HC) number systems, ; H = h1 + h2*i + h3*j + h4*k + h5*l ; The 5 HC units (1, i, j, k, l) are defined in a 5-dimensional space with ; axes x, y, z, u, and v. The formula plots a parametrically defined planar ; slice through this xyzuv space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, x = xa * real(#pixel) + xb * imag(#pixel) + xc, ; y = ya * real(#pixel) + yb * imag(#pixel) + yc, ; z = za * real(#pixel) + zb * imag(#pixel) + zc, ; u = ua * real(#pixel) + ub * imag(#pixel) + uc, ; v = va * real(#pixel) + vb * imag(#pixel) + vc, where ; xa, xb, xc, ya, yb, yc, za, zb, zc, etc. are 15 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = x + yi + zj + uk + vl, which are fed to the standard ; Mandelbrot/Julia equation H(n+1) = H(n) ^ @power + Hc, where @power is a ; user-specified exponent; in the Mandelbrot case, Hc represents the ; pixel-specified x + yi + zj + uk + vl (and H(n) normally starts as 0), ; whereas in the Julia case the initial H(n) is the pixel-specified ; x + yi + zj + uk + vl, and Hc is a user-defined seed constant. Various ; combinations of x, yi, zj, uk, and vl can be specified as the real and imag ; components of #z for bailout and coloring purposes. See the end of the formula ; for more details about the implementation. init: ; define parametric coefficients float xa = @xaa, float xb = @xbb, float xc = @xcc float ya = @yaa, float yb = @ybb, float yc = @ycc float za = @zaa, float zb = @zbb, float zc = @zcc float ua = @uaa, float ub = @ubb, float uc = @ucc float va = @vaa, float vb = @vbb, float vc = @vcc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float hxmr = float hxmc = float hxprod = float hxconst = 0.0 float hymr = float hymc = float hyprod = float hyconst = 0.0 float hzmr = float hzmc = float hzprod = float hzconst = 0.0 float humr = float humc = float huprod = float huconst = 0.0 float hvmr = float hvmc = float hvprod = float hvconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables bool done = TRUE ; for sorting the list of components from highest to lowest int exponent = @power float hxaccum = float hyaccum = float hzaccum = 0.0 float huaccum = float hvaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization hxconst = xa * repix + xb * impix + xc hyconst = ya * repix + yb * impix + yc hzconst = za * repix + zb * impix + zc huconst = ua * repix + ub * impix + uc hvconst = va * repix + vb * impix + vc hxmr = @xperturb, hymr = @yperturb, hzmr = @zperturb humr = @uperturb, hvmr = @vperturb else ; Julia initialization hxmr = xa * repix + xb * impix + xc hymr = ya * repix + yb * impix + yc hzmr = za * repix + zb * impix + zc humr = ua * repix + ub * impix + uc hvmr = va * repix + vb * impix + vc hxconst = @xseed, hyconst = @yseed, hzconst = @zseed huconst = @useed, hvconst = @vseed endif ; @plottype if @switchmode != 0 ; normally will be zero if @switchmode == 1 ; xy-switch hxmr = real(@switchconst), hymr = imag(@switchconst) elseif @switchmode == 2 ; xz-switch hxmr = real(@switchconst), hzmr = imag(@switchconst) elseif @switchmode == 3 ; xu-switch hxmr = real(@switchconst), humr = imag(@switchconst) elseif @switchmode == 4 ; xv-switch hxmr = real(@switchconst), hvmr = imag(@switchconst) elseif @switchmode == 5 ; yz-switch hymr = real(@switchconst), hzmr = imag(@switchconst) elseif @switchmode == 6 ; yu-switch hymr = real(@switchconst), humr = imag(@switchconst) elseif @switchmode == 7 ; yv-switch hymr = real(@switchconst), hvmr = imag(@switchconst) elseif @switchmode == 8 ; zu-switch hzmr = real(@switchconst), humr = imag(@switchconst) elseif @switchmode == 9 ; zv-switch hzmr = real(@switchconst), hvmr = imag(@switchconst) elseif @switchmode == 10 ; uv-switch humr = real(@switchconst), hvmr = imag(@switchconst) endif ; @switchmode2 endif ; @switchmode1 ; get ready for looping hxprod = hxmr, hyprod = hymr, hzprod = hzmr huprod = humr, hvprod = hvmr loop: count = 1 hxmr = hxprod, hymr = hyprod, hzmr = hzprod humr = huprod, hvmr = hvprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh hxaccum = hxprod, hyaccum = hyprod, hzaccum = hzprod ; store first series term huaccum = huprod, hvaccum = hvprod elseif (@formula == 2) || (@formula == 6) ; cos, cosh hxaccum = 1, hyaccum = 0, hzaccum = 0, huaccum = 0, hvaccum = 0 elseif @formula == 3 ; exp(h) hxaccum = 1 + hxprod, hyaccum = hyprod, hzaccum = hzprod huaccum = huprod, hvaccum = hvprod elseif @formula == 4 ; exp(-h) hxaccum = 1 - hxprod, hyaccum = -hyprod, hzaccum = -hzprod huaccum = -huprod, hvaccum = hvprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands hxmc = hxprod, hymc = hyprod, hzmc = hzprod humc = huprod, hvmc = hvprod if @multrules == 0 ; type "A" rules hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc - hymr*humc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc - hzmr*hvmc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc - humr*hymc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc - hvmr*hzmc elseif @multrules == 1 ; "B" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc + hzmr*hvmc +hvmr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc + hymr*humc +humr*hymc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc + hzmr*hvmc -hvmr*hzmc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc + hymr*humc -humr*hymc elseif @multrules == 2 ; "C" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc elseif @multrules == 3 ; "D" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc - humr*hzmc + humr*hvmc + \ hvmr*humc + hzmr*hvmc - hvmr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hvmc - hvmr*humc + hvmr*hymc + \ hymr*hvmc + hymr*humc + humr*hymc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc + hvmr*hymc - \ hymr*hvmc + hzmr*hvmc + hvmr*hzmc hvprod = hxmr*hvmc + hvmr*hxmc + hymr*hzmc - hzmr*hymc + hzmr*humc + \ humr*hzmc + hymr*humc - humr*hymc elseif @multrules == 4 ; "E" hxprod = hxmr*hxmc - hymr*humc - humr*hymc - hzmr*hvmc - hvmr*hzmc hyprod = hxmr*hymc + hymr*hxmc - hvmr*hvmc + humr*hvmc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc - hymr*hymc + hvmr*hymc - hvmr*humc huprod = hxmr*humc + humr*hxmc - hzmr*hzmc + hymr*hzmc - hymr*hvmc hvprod = hxmr*hvmc + hvmr*hxmc - humr*humc + hzmr*humc - hzmr*hymc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 elseif count == 5 hxaccum = hxaccum + hxprod/120 hyaccum = hyaccum + hyprod/120 hzaccum = hzaccum + hzprod/120 huaccum = huaccum + huprod/120 hvaccum = hvaccum + hvprod/120 elseif count == 7 hxaccum = hxaccum - hxprod/5040 hyaccum = hyaccum - hyprod/5040 hzaccum = hzaccum - hzprod/5040 huaccum = huaccum - huprod/5040 hvaccum = hvaccum - hvprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/362880 hyprod = hyaccum + hyprod/362880 hzprod = hzaccum + hzprod/362880 huprod = huaccum + huprod/362880 hvprod = hvaccum + hvprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 hxaccum = hxaccum - hxprod/2 hyaccum = hyaccum - hyprod/2 hzaccum = hzaccum - hzprod/2 huaccum = huaccum - huprod/2 hvaccum = hvaccum - hvprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 elseif count == 6 hxaccum = hxaccum - hxprod/720 hyaccum = hyaccum - hyprod/720 hzaccum = hzaccum - hzprod/720 huaccum = huaccum - huprod/720 hvaccum = hvaccum - hvprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/40320 hyprod = hyaccum + hyprod/40320 hzprod = hzaccum + hzprod/40320 huprod = huaccum + huprod/40320 hvprod = hvaccum + hvprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 elseif count == 5 hxprod = hxaccum + hxprod/120 hyprod = hyaccum + hyprod/120 hzprod = hzaccum + hzprod/120 huprod = huaccum + huprod/120 hvprod = hvaccum + hvprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 elseif count == 6 hxprod = hxaccum + hxprod/720 hyprod = hyaccum + hyprod/720 hzprod = hzaccum + hzprod/720 huprod = huaccum + huprod/720 hvprod = hvaccum + hvprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term hxprod = hxprod + hxconst, hyprod = hyprod + hyconst, hzprod = hzprod + hzconst huprod = huprod + huconst, hvprod = hvprod + hvconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; xy components of the HC z = hxprod + flip(hyprod) elseif @zreport == 2 ; xz components z = hxprod + flip(hzprod) elseif @zreport == 3 ; xu z = hxprod + flip(huprod) elseif @zreport == 4 ; xv components of the HC z = hxprod + flip(hvprod) elseif @zreport == 5 ; yz components of the HC z = hyprod + flip(hzprod) elseif @zreport == 6 ; yu components of the HC z = hyprod + flip(huprod) elseif @zreport == 7 ; yv components of the HC z = hyprod + flip(hvprod) elseif @zreport == 8 ; zu components of the HC z = hzprod + flip(huprod) elseif @zreport == 9 ; zv components of the HC z = hzprod + flip(hvprod) elseif @zreport == 10 ; uv components of the HC z = huprod + flip(hvprod) elseif @zreport == 11 ; min, max ; Use the now unneeded HC multiplier variables for storing the sorted ; components. hxmr will hold the max value, down to the min in hvmr. hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hvmr + flip(hxmr) elseif @zreport == 12 ; 2 mins hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hvmr + flip(humr) elseif @zreport == 13 ; 2 maxes hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hxmr + flip(hymr) elseif @zreport == 14 ; magnitude, min tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = tempx + flip(hvmr) elseif @zreport == 15 ; magnitude, max tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = tempx + flip(hxmr) endif ; @zreport bailout: |z| < @bail default: title = "Quintonions" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param xaa caption = "X-RealCoeff" default = 1.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xbb caption = "X-ImagCoeff" default = 0.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xcc caption = "X-Offset" default = 0.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param yaa caption = "Y-RealCoeff" default = 0.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ybb caption = "Y-ImagCoeff" default = 1.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ycc caption = "Y-Offset" default = 0.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param zaa caption = "Z-RealCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zbb caption = "Z-ImagCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zcc caption = "Z-Offset" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param uaa caption = "U-RealCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ubb caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param vaa caption = "V-RealCoeff" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vbb caption = "V-ImagCoeff" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vcc caption = "V-Offset" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if 'Formula' is \ set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "A" "B" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-5 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 5 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "xy-components" "xz-components" "xu-components" \ "xv-components" "yz-components" "yu-components" "yv-components" \ "zu-components" "zv-components" "uv-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "xy" "xz" "xu" "xv" "yz" "yu" "yv" "zu" "zv" "uv" default = 0 hint = "These are the Julia seed constant components that will be varied \ as the cursor is moved around the screen prior to the switch" endparam param xperturb caption = "X-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the X-component of \ the initial perturbation; unused for Julia plots" endparam param yperturb caption = "Y-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Y-component of \ the initial perturbation; unused for Julia plots" endparam param zperturb caption = "Z-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Z-component of \ the initial perturbation; unused for Julia plots" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param vperturb caption = "V-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the V-component of \ the initial perturbation; unused for Julia plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for Hz, Hconstant" endparam param xseed caption = "X-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the X-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param yseed caption = "Y-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Y-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param zseed caption = "Z-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Z-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param vseed caption = "V-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the V-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Quintonions Julia' \ formula; varies the HC initial Mandelbrot perturbation. Do not \ set manually; instead use the X, Y, Z, U, V-Perturbation params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-quintonions-J" xaa = xaa xbb = xbb xcc = xcc yaa = yaa ybb = ybb ycc = ycc zaa = zaa zbb = zbb zcc = zcc uaa = uaa ubb = ubb ucc = ucc vaa = vaa vbb = vbb vcc = vcc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode xperturb = xperturb yperturb = yperturb zperturb = zperturb uperturb = uperturb vperturb = vperturb xscale = xscale yscale = yscale bail = bail xseed = xseed yseed = yseed zseed = zseed useed = useed vseed = vseed switchconst = #pixel ; Param 'multrules' specifies a particular type of order-5 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 5 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik=-i, ki=-k, jl=-j, lj=-l. ; 'B' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik = j+l, ki = j-l, jl = i+k, lj = i-k. ; 'C' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik = ki = jl = lj = 0. ; 'D' --- i^2=j^2=k^2=l^2=-1; ij = k+l, ji = k-l, jk = l+i, kj = l-i, ; kl = i+j, lk = i-j, li = j+k, il = j-k, ik = j+l, ki = j-l, ; jl = k+i, lj = k-i. ; 'E' --- i^2=-j, j^2=-k, k^2=-l, l^2=-i; ij=k, jk=l, kl=i, li=j; ; ji=-l, kj=-i, lk=-j, il=-k; ik=ki=jl=lj=-1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-5 hypercomplexes have ; 5, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Quintonions) to the Julia (Quintonions Julia) varying any 2 of the 5 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 5 initial perturbation components, using the cursor in ; the usual manner. (In either case, the other 3 components can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining components can be set manually at this time if desired, using ; the appropriate 'Seed' parameters if switching to a Julia, or the corresponding ; 'Perturbation' params if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the other 3 ; components will appear in their usual spot. For example, assume we have ; switched to Quintonions Julia with 'Switch Mode' set to xu, and before the ; switch we manually set another component (v) = 0.27 using param 'V-Seed'. Then ; after the switch, 'Switch Constant' real would contain the Julia seed ; x-component, 'Switch Constant' imag would contain the u-component of the seed, ; and param 'V-Seed' would be set to 0.27, the v-component. Params 'X-Seed' and ; 'U-Seed' would be unusable unless 'Switch Mode' were again turned 'off'. ; Hope this is clear! } jam-quintonions-J { ; jam 011205 ; General Order-5 hypercomplex (HC) number systems, ; H = h1 + h2*i + h3*j + h4*k + h5*l ; The 5 HC units (1, i, j, k, l) are defined in a 5-dimensional space with ; axes x, y, z, u, and v. The formula plots a parametrically defined planar ; slice through this xyzuv space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, x = xa * real(#pixel) + xb * imag(#pixel) + xc, ; y = ya * real(#pixel) + yb * imag(#pixel) + yc, ; z = za * real(#pixel) + zb * imag(#pixel) + zc, ; u = ua * real(#pixel) + ub * imag(#pixel) + uc, ; v = va * real(#pixel) + vb * imag(#pixel) + vc, where ; xa, xb, xc, ya, yb, yc, za, zb, zc, etc. are 15 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = x + yi + zj + uk + vl, which are fed to the standard ; Mandelbrot/Julia equation H(n+1) = H(n) ^ @power + Hc, where @power is a ; user-specified exponent; in the Mandelbrot case, Hc represents the ; pixel-specified x + yi + zj + uk + vl (and H(n) normally starts as 0), ; whereas in the Julia case the initial H(n) is the pixel-specified ; x + yi + zj + uk + vl, and Hc is a user-defined seed constant. Various ; combinations of x, yi, zj, uk, and vl can be specified as the real and imag ; components of #z for bailout and coloring purposes. See the end of the formula ; for more details about the implementation. init: ; define parametric coefficients float xa = @xaa, float xb = @xbb, float xc = @xcc float ya = @yaa, float yb = @ybb, float yc = @ycc float za = @zaa, float zb = @zbb, float zc = @zcc float ua = @uaa, float ub = @ubb, float uc = @ucc float va = @vaa, float vb = @vbb, float vc = @vcc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float hxmr = float hxmc = float hxprod = float hxconst = 0.0 float hymr = float hymc = float hyprod = float hyconst = 0.0 float hzmr = float hzmc = float hzprod = float hzconst = 0.0 float humr = float humc = float huprod = float huconst = 0.0 float hvmr = float hvmc = float hvprod = float hvconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables bool done = TRUE ; for sorting the list of components from highest to lowest int exponent = @power float hxaccum = float hyaccum = float hzaccum = 0.0 float huaccum = float hvaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization hxconst = xa * repix + xb * impix + xc hyconst = ya * repix + yb * impix + yc hzconst = za * repix + zb * impix + zc huconst = ua * repix + ub * impix + uc hvconst = va * repix + vb * impix + vc hxmr = @xperturb, hymr = @yperturb, hzmr = @zperturb humr = @uperturb, hvmr = @vperturb else ; Julia initialization hxmr = xa * repix + xb * impix + xc hymr = ya * repix + yb * impix + yc hzmr = za * repix + zb * impix + zc humr = ua * repix + ub * impix + uc hvmr = va * repix + vb * impix + vc hxconst = @xseed, hyconst = @yseed, hzconst = @zseed huconst = @useed, hvconst = @vseed endif ; @plottype if @switchmode == 1 ; xy-switch hxconst = real(@switchconst), hyconst = imag(@switchconst) elseif @switchmode == 2 ; xz-switch hxconst = real(@switchconst), hzconst = imag(@switchconst) elseif @switchmode == 3 ; xu-switch hxconst = real(@switchconst), huconst = imag(@switchconst) elseif @switchmode == 4 ; xv-switch hxconst = real(@switchconst), hvconst = imag(@switchconst) elseif @switchmode == 5 ; yz-switch hyconst = real(@switchconst), hzconst = imag(@switchconst) elseif @switchmode == 6 ; yu-switch hyconst = real(@switchconst), huconst = imag(@switchconst) elseif @switchmode == 7 ; yv-switch hyconst = real(@switchconst), hvconst = imag(@switchconst) elseif @switchmode == 8 ; zu-switch hzconst = real(@switchconst), huconst = imag(@switchconst) elseif @switchmode == 9 ; zv-switch hzconst = real(@switchconst), hvconst = imag(@switchconst) elseif @switchmode == 10 ; uv-switch huconst = real(@switchconst), hvconst = imag(@switchconst) endif ; @switchmode ; get ready for looping hxprod = hxmr, hyprod = hymr, hzprod = hzmr huprod = humr, hvprod = hvmr loop: count = 1 hxmr = hxprod, hymr = hyprod, hzmr = hzprod humr = huprod, hvmr = hvprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh hxaccum = hxprod, hyaccum = hyprod, hzaccum = hzprod ; store first series term huaccum = huprod, hvaccum = hvprod elseif (@formula == 2) || (@formula == 6) ; cos, cosh hxaccum = 1, hyaccum = 0, hzaccum = 0, huaccum = 0, hvaccum = 0 elseif @formula == 3 ; exp(h) hxaccum = 1 + hxprod, hyaccum = hyprod, hzaccum = hzprod huaccum = huprod, hvaccum = hvprod elseif @formula == 4 ; exp(-h) hxaccum = 1 - hxprod, hyaccum = -hyprod, hzaccum = -hzprod huaccum = -huprod, hvaccum = hvprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands hxmc = hxprod, hymc = hyprod, hzmc = hzprod humc = huprod, hvmc = hvprod if @multrules == 0 ; type "A" rules hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc - hymr*humc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc - hzmr*hvmc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc - humr*hymc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc - hvmr*hzmc elseif @multrules == 1 ; "B" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc + hzmr*hvmc +hvmr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc + hymr*humc +humr*hymc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc + hzmr*hvmc -hvmr*hzmc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc + hymr*humc -humr*hymc elseif @multrules == 2 ; "C" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + humr*hvmc - hvmr*humc hzprod = hxmr*hzmc + hzmr*hxmc + hvmr*hymc - hymr*hvmc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc hvprod = hxmr*hvmc + hvmr*hxmc + hzmr*humc - humr*hzmc elseif @multrules == 3 ; "D" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc - hvmr*hvmc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc - humr*hzmc + humr*hvmc + \ hvmr*humc + hzmr*hvmc - hvmr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hvmc - hvmr*humc + hvmr*hymc + \ hymr*hvmc + hymr*humc + humr*hymc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc + hvmr*hymc - \ hymr*hvmc + hzmr*hvmc + hvmr*hzmc hvprod = hxmr*hvmc + hvmr*hxmc + hymr*hzmc - hzmr*hymc + hzmr*humc + \ humr*hzmc + hymr*humc - humr*hymc elseif @multrules == 4 ; "E" hxprod = hxmr*hxmc - hymr*humc - humr*hymc - hzmr*hvmc - hvmr*hzmc hyprod = hxmr*hymc + hymr*hxmc - hvmr*hvmc + humr*hvmc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc - hymr*hymc + hvmr*hymc - hvmr*humc huprod = hxmr*humc + humr*hxmc - hzmr*hzmc + hymr*hzmc - hymr*hvmc hvprod = hxmr*hvmc + hvmr*hxmc - humr*humc + hzmr*humc - hzmr*hymc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 elseif count == 5 hxaccum = hxaccum + hxprod/120 hyaccum = hyaccum + hyprod/120 hzaccum = hzaccum + hzprod/120 huaccum = huaccum + huprod/120 hvaccum = hvaccum + hvprod/120 elseif count == 7 hxaccum = hxaccum - hxprod/5040 hyaccum = hyaccum - hyprod/5040 hzaccum = hzaccum - hzprod/5040 huaccum = huaccum - huprod/5040 hvaccum = hvaccum - hvprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/362880 hyprod = hyaccum + hyprod/362880 hzprod = hzaccum + hzprod/362880 huprod = huaccum + huprod/362880 hvprod = hvaccum + hvprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 hxaccum = hxaccum - hxprod/2 hyaccum = hyaccum - hyprod/2 hzaccum = hzaccum - hzprod/2 huaccum = huaccum - huprod/2 hvaccum = hvaccum - hvprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 elseif count == 6 hxaccum = hxaccum - hxprod/720 hyaccum = hyaccum - hyprod/720 hzaccum = hzaccum - hzprod/720 huaccum = huaccum - huprod/720 hvaccum = hvaccum - hvprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/40320 hyprod = hyaccum + hyprod/40320 hzprod = hzaccum + hzprod/40320 huprod = huaccum + huprod/40320 hvprod = hvaccum + hvprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 elseif count == 5 hxprod = hxaccum + hxprod/120 hyprod = hyaccum + hyprod/120 hzprod = hzaccum + hzprod/120 huprod = huaccum + huprod/120 hvprod = hvaccum + hvprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 elseif count == 6 hxprod = hxaccum + hxprod/720 hyprod = hyaccum + hyprod/720 hzprod = hzaccum + hzprod/720 huprod = huaccum + huprod/720 hvprod = hvaccum + hvprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term hxprod = hxprod + hxconst, hyprod = hyprod + hyconst, hzprod = hzprod + hzconst huprod = huprod + huconst, hvprod = hvprod + hvconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; xy components of the HC z = hxprod + flip(hyprod) elseif @zreport == 2 ; xz components z = hxprod + flip(hzprod) elseif @zreport == 3 ; xu z = hxprod + flip(huprod) elseif @zreport == 4 ; xv components of the HC z = hxprod + flip(hvprod) elseif @zreport == 5 ; yz components of the HC z = hyprod + flip(hzprod) elseif @zreport == 6 ; yu components of the HC z = hyprod + flip(huprod) elseif @zreport == 7 ; yv components of the HC z = hyprod + flip(hvprod) elseif @zreport == 8 ; zu components of the HC z = hzprod + flip(huprod) elseif @zreport == 9 ; zv components of the HC z = hzprod + flip(hvprod) elseif @zreport == 10 ; uv components of the HC z = huprod + flip(hvprod) elseif @zreport == 11 ; min, max ; Use the now unneeded HC multiplier variables for storing the sorted ; components. hxmr will hold the max value, down to the min in hvmr. hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hvmr + flip(hxmr) elseif @zreport == 12 ; 2 mins hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hvmr + flip(humr) elseif @zreport == 13 ; 2 maxes hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = hxmr + flip(hymr) elseif @zreport == 14 ; magnitude, min tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = tempx + flip(hvmr) elseif @zreport == 15 ; magnitude, max tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod + \ hvprod*hvprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod, hvmr = hvprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr if humr < hvmr done = FALSE temp = humr, humr = hvmr, hvmr = temp endif ; humr until done z = tempx + flip(hxmr) endif ; @zreport bailout: |z| < @bail default: title = "Quintonions Julia" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param xaa caption = "X-RealCoeff" default = 1.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xbb caption = "X-ImagCoeff" default = 0.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xcc caption = "X-Offset" default = 0.0 hint = "The x-coordinate of the plane in xyzuv-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param yaa caption = "Y-RealCoeff" default = 0.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ybb caption = "Y-ImagCoeff" default = 1.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ycc caption = "Y-Offset" default = 0.0 hint = "The y-coordinate of the plane in xyzuv-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param zaa caption = "Z-RealCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zbb caption = "Z-ImagCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zcc caption = "Z-Offset" default = 0.0 hint = "The z-coordinate of the plane in xyzuv-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param uaa caption = "U-RealCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ubb caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in xyzuv-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param vaa caption = "V-RealCoeff" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vbb caption = "V-ImagCoeff" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vcc caption = "V-Offset" default = 0.0 hint = "The v-coordinate of the plane in xyzuv-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if 'Formula' is \ set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "A" "B" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-5 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 5 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "xy-components" "xz-components" "xu-components" \ "xv-components" "yz-components" "yu-components" "yv-components" \ "zu-components" "zv-components" "uv-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "xy" "xz" "xu" "xv" "yz" "yu" "yv" "zu" "zv" "uv" default = 0 hint = "These are the Julia seed constant components that will be varied \ as the cursor is moved around the screen prior to the switch" endparam param xseed caption = "X-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the X-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param yseed caption = "Y-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Y-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param zseed caption = "Z-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Z-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param vseed caption = "V-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the V-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for Hz, Hconstant" endparam param xperturb caption = "X-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the X-component of \ the initial perturbation; unused for Julia plots" endparam param yperturb caption = "Y-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Y-component of \ the initial perturbation; unused for Julia plots" endparam param zperturb caption = "Z-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Z-component of \ the initial perturbation; unused for Julia plots" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param vperturb caption = "V-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the V-component of \ the initial perturbation; unused for Julia plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Quintonions Julia' \ formula; varies the HC initial Mandelbrot perturbation. Do not \ set manually; instead use the X, Y, Z, U, V-Perturbation params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-quintonions" xaa = xaa xbb = xbb xcc = xcc yaa = yaa ybb = ybb ycc = ycc zaa = zaa zbb = zbb zcc = zcc uaa = uaa ubb = ubb ucc = ucc vaa = vaa vbb = vbb vcc = vcc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode xseed = xseed yseed = yseed zseed = zseed useed = useed vseed = vseed xscale = xscale yscale = yscale bail = bail xperturb = xperturb yperturb = yperturb zperturb = zperturb uperturb = uperturb vperturb = vperturb switchconst = #pixel ; Param 'multrules' specifies a particular type of order-5 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 5 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik=-i, ki=-k, jl=-j, lj=-l. ; 'B' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik = j+l, ki = j-l, jl = i+k, lj = i-k. ; 'C' --- i^2=j^2=k^2=l^2=-1; ij=-ji=k, jk=-kj=l, kl=-lk=i, li=-il=j; ; ik = ki = jl = lj = 0. ; 'D' --- i^2=j^2=k^2=l^2=-1; ij = k+l, ji = k-l, jk = l+i, kj = l-i, ; kl = i+j, lk = i-j, li = j+k, il = j-k, ik = j+l, ki = j-l, ; jl = k+i, lj = k-i. ; 'E' --- i^2=-j, j^2=-k, k^2=-l, l^2=-i; ij=k, jk=l, kl=i, li=j; ; ji=-l, kj=-i, lk=-j, il=-k; ik=ki=jl=lj=-1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-5 hypercomplexes have ; 5, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Quintonions) to the Julia (Quintonions Julia) varying any 2 of the 5 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 5 initial perturbation components, using the cursor in ; the usual manner. (In either case, the other 3 components can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining components can be set manually at this time if desired, using ; the appropriate 'Seed' parameters if switching to a Julia, or the corresponding ; 'Perturbation' params if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the other 3 ; components will appear in their usual spot. For example, assume we have ; switched to Quintonions Julia with 'Switch Mode' set to xu, and before the ; switch we manually set another component (v) = 0.27 using param 'V-Seed'. Then ; after the switch, 'Switch Constant' real would contain the Julia seed ; x-component, 'Switch Constant' imag would contain the u-component of the seed, ; and param 'V-Seed' would be set to 0.27, the v-component. Params 'X-Seed' and ; 'U-Seed' would be unusable unless 'Switch Mode' were again turned 'off'. ; Hope this is clear! } jam-quaternions { ; jam 011206 ; General Order-4 hypercomplex (HC) number systems, ; H = h1 + h2*i + h3*j + h4*k + h5*l, including standard quaternions. ; The 4 HC units (1, i, j, k) are defined in a 4-dimensional space with ; axes x, y, z, and u. The formula plots a parametrically defined planar ; slice through this xyzu space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, x = xa * real(#pixel) + xb * imag(#pixel) + xc, ; y = ya * real(#pixel) + yb * imag(#pixel) + yc, ; z = za * real(#pixel) + zb * imag(#pixel) + zc, ; u = ua * real(#pixel) + ub * imag(#pixel) + uc, ; xa, xb, xc, ya, yb, yc, za, zb, zc, etc. are 12 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = x + yi + zj + uk, which are fed to the standard ; Mandelbrot/Julia equation H(n+1) = H(n) ^ @power + Hc, where @power is a ; user-specified exponent; in the Mandelbrot case, Hc represents the ; pixel-specified x + yi + zj + uk (and H(n) normally starts as 0), ; whereas in the Julia case the initial H(n) is the pixel-specified ; x + yi + zj + uk, and Hc is a user-defined seed constant. Various ; combinations of x, yi, zj, and uk can be specified as the real and imag ; components of #z for bailout and coloring purposes. See the end of the formula ; for more details about the implementation. init: ; define parametric coefficients float xa = @xaa, float xb = @xbb, float xc = @xcc float ya = @yaa, float yb = @ybb, float yc = @ycc float za = @zaa, float zb = @zbb, float zc = @zcc float ua = @uaa, float ub = @ubb, float uc = @ucc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float hxmr = float hxmc = float hxprod = float hxconst = 0.0 float hymr = float hymc = float hyprod = float hyconst = 0.0 float hzmr = float hzmc = float hzprod = float hzconst = 0.0 float humr = float humc = float huprod = float huconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables bool done = TRUE ; for sorting the list of components from highest to lowest int exponent = @power float hxaccum = float hyaccum = float hzaccum = 0.0, float huaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization hxconst = xa * repix + xb * impix + xc hyconst = ya * repix + yb * impix + yc hzconst = za * repix + zb * impix + zc huconst = ua * repix + ub * impix + uc hxmr = @xperturb, hymr = @yperturb, hzmr = @zperturb humr = @uperturb else ; Julia initialization hxmr = xa * repix + xb * impix + xc hymr = ya * repix + yb * impix + yc hzmr = za * repix + zb * impix + zc humr = ua * repix + ub * impix + uc hxconst = @xseed, hyconst = @yseed, hzconst = @zseed huconst = @useed endif ; @plottype if @switchmode != 0 ; normally will be zero if @switchmode == 1 ; xy-switch hxmr = real(@switchconst), hymr = imag(@switchconst) elseif @switchmode == 2 ; xz-switch hxmr = real(@switchconst), hzmr = imag(@switchconst) elseif @switchmode == 3 ; xu-switch hxmr = real(@switchconst), humr = imag(@switchconst) elseif @switchmode == 4 ; yz-switch hymr = real(@switchconst), hzmr = imag(@switchconst) elseif @switchmode == 5 ; yu-switch hymr = real(@switchconst), humr = imag(@switchconst) elseif @switchmode == 6 ; zu-switch hzmr = real(@switchconst), humr = imag(@switchconst) endif ; @switchmode2 endif ; @switchmode1 ; get ready for looping hxprod = hxmr, hyprod = hymr, hzprod = hzmr huprod = humr loop: count = 1 hxmr = hxprod, hymr = hyprod, hzmr = hzprod humr = huprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh hxaccum = hxprod, hyaccum = hyprod, hzaccum = hzprod ; store first series term huaccum = huprod elseif (@formula == 2) || (@formula == 6) ; cos, cosh hxaccum = 1, hyaccum = 0, hzaccum = 0, huaccum = 0 elseif @formula == 3 ; exp(h) hxaccum = 1 + hxprod, hyaccum = hyprod, hzaccum = hzprod huaccum = huprod elseif @formula == 4 ; exp(-h) hxaccum = 1 - hxprod, hyaccum = -hyprod, hzaccum = -hzprod huaccum = -huprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands hxmc = hxprod, hymc = hyprod, hzmc = hzprod humc = huprod if @multrules == 0 ; type "A" rules (standard quaternions) hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hymc - hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc elseif @multrules == 1 ; "B" (Fractint hypercomplexes) hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc + humr*humc hyprod = hxmr*hymc + hymr*hxmc - hzmr*humc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc - humr*hymc - hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc elseif @multrules == 2 ; "C" hxprod = hxmr*hxmc - hymr*hzmc - hzmr*humc - humr*hymc + hzmr*hymc + \ humr*hzmc + hymr*humc hyprod = hxmr*hymc + hymr*hxmc - humr*humc hzprod = hxmr*hzmc + hzmr*hxmc - hymr*hymc huprod = hxmr*humc + humr*hxmc - hzmr*hzmc elseif @multrules == 3 ; "D" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc + humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hymc + hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc elseif @multrules == 4 ; "E" hxprod = hxmr*hxmc + hzmr*hymc + humr*hzmc + hymr*humc - \ hymr*hzmc - hzmr*humc - humr*hymc hyprod = hxmr*hymc + hymr*hxmc - hzmr*hzmc + humr*humc hzprod = hxmr*hzmc + hzmr*hxmc - humr*humc + hymr*hymc huprod = hxmr*humc + humr*hxmc - hymr*hymc + hzmr*hzmc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 elseif count == 5 hxaccum = hxaccum + hxprod/120 hyaccum = hyaccum + hyprod/120 hzaccum = hzaccum + hzprod/120 huaccum = huaccum + huprod/120 elseif count == 7 hxaccum = hxaccum - hxprod/5040 hyaccum = hyaccum - hyprod/5040 hzaccum = hzaccum - hzprod/5040 huaccum = huaccum - huprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/362880 hyprod = hyaccum + hyprod/362880 hzprod = hzaccum + hzprod/362880 huprod = huaccum + huprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 hxaccum = hxaccum - hxprod/2 hyaccum = hyaccum - hyprod/2 hzaccum = hzaccum - hzprod/2 huaccum = huaccum - huprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 elseif count == 6 hxaccum = hxaccum - hxprod/720 hyaccum = hyaccum - hyprod/720 hzaccum = hzaccum - hzprod/720 huaccum = huaccum - huprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/40320 hyprod = hyaccum + hyprod/40320 hzprod = hzaccum + hzprod/40320 huprod = huaccum + huprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 elseif count == 5 hxprod = hxaccum + hxprod/120 hyprod = hyaccum + hyprod/120 hzprod = hzaccum + hzprod/120 huprod = huaccum + huprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 elseif count == 6 hxprod = hxaccum + hxprod/720 hyprod = hyaccum + hyprod/720 hzprod = hzaccum + hzprod/720 huprod = huaccum + huprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term hxprod = hxprod + hxconst, hyprod = hyprod + hyconst, hzprod = hzprod + hzconst huprod = huprod + huconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; xy components of the HC z = hxprod + flip(hyprod) elseif @zreport == 2 ; xz components z = hxprod + flip(hzprod) elseif @zreport == 3 ; xu z = hxprod + flip(huprod) elseif @zreport == 4 ; yz components of the HC z = hyprod + flip(hzprod) elseif @zreport == 5 ; yu components of the HC z = hyprod + flip(huprod) elseif @zreport == 6 ; zu components of the HC z = hzprod + flip(huprod) elseif @zreport == 7 ; min, max ; Use the now unneeded HC multiplier variables for storing the sorted ; components. hxmr will hold the max value, down to the min in hvmr. hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = humr + flip(hxmr) elseif @zreport == 8 ; 2 mins hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = humr + flip(humr) elseif @zreport == 9 ; 2 maxes hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = hxmr + flip(hymr) elseif @zreport == 10 ; magnitude, min tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = tempx + flip(humr) elseif @zreport == 11 ; magnitude, max tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = tempx + flip(hxmr) endif ; @zreport bailout: |z| < @bail default: title = "Quaternions" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param xaa caption = "X-RealCoeff" default = 1.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xbb caption = "X-ImagCoeff" default = 0.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xcc caption = "X-Offset" default = 0.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param yaa caption = "Y-RealCoeff" default = 0.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ybb caption = "Y-ImagCoeff" default = 1.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ycc caption = "Y-Offset" default = 0.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param zaa caption = "Z-RealCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zbb caption = "Z-ImagCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zcc caption = "Z-Offset" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param uaa caption = "U-RealCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ubb caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if 'Formula' is \ set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "quaternions" "FI hypercomplex" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-4 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 4 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "xy-components" "xz-components" "xu-components" \ "yz-components" "yu-components" "zu-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "xy" "xz" "xu" "yz" "yu" "zu" default = 0 hint = "These are the Julia seed constant components that will be varied \ as the cursor is moved around the screen prior to the switch" endparam param xperturb caption = "X-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the X-component of \ the initial perturbation; unused for Julia plots" endparam param yperturb caption = "Y-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Y-component of \ the initial perturbation; unused for Julia plots" endparam param zperturb caption = "Z-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Z-component of \ the initial perturbation; unused for Julia plots" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for Hz, Hconstant" endparam param xseed caption = "X-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the X-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param yseed caption = "Y-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Y-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param zseed caption = "Z-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Z-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Quaternions Julia' \ formula; varies the HC initial Mandelbrot perturbation. Do not \ set manually; instead use the X, Y, Z, U-Perturbation params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-quaternions-J" xaa = xaa xbb = xbb xcc = xcc yaa = yaa ybb = ybb ycc = ycc zaa = zaa zbb = zbb zcc = zcc uaa = uaa ubb = ubb ucc = ucc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode xperturb = xperturb yperturb = yperturb zperturb = zperturb uperturb = uperturb xscale = xscale yscale = yscale bail = bail xseed = xseed yseed = yseed zseed = zseed useed = useed switchconst = #pixel ; Param 'multrules' specifies a particular type of order-4 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 4 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=k^2=-1; ij=-ji=k, jk=-kj=i, ki=-ik=j ; (standard quaternions). ; 'B' --- i^2=j^2=-1, k^2=1; ij=ji=k, jk=kj=-i, ki=ik=-j ; (in Fractint, these are called 'hypercomplex numbers'). ; 'C' --- i^2=-j, j^2=-k, k^2=-i; ij=-ji=jk=-kj=ki=-ik=-1. ; 'D' --- i^2=j^2=k^2=-1; ij=ji=k, jk=kj=i, ki=ik=j. ; 'E' --- i^2=j-k, j^2=k-i, k^2=i-j; ij=jk=ki=-1, ji=kj=ik=1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-4 hypercomplexes have ; 4, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Quaternions) to the Julia (Quaternions Julia) varying any 2 of the 4 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 4 initial perturbation components, using the cursor in ; the usual manner. (In either case, the other 2 components can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining components can be set manually at this time if desired, using ; the appropriate 'Seed' parameters if switching to a Julia, or the corresponding ; 'Perturbation' params if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the other 2 ; components will appear in their usual spot. For example, assume we have ; switched to Quaternions Julia with 'Switch Mode' set to xu, and before the ; switch we manually set another component (y) = 0.27 using param 'Y-Seed'. Then ; after the switch, 'Switch Constant' real would contain the Julia seed ; x-component, 'Switch Constant' imag would contain the u-component of the seed, ; and param 'Y-Seed' would be set to 0.27, the y-component. Params 'X-Seed' and ; 'U-Seed' would be unusable unless 'Switch Mode' were again turned 'off'. ; Hope this is clear! } jam-quaternions-J { ; jam 011206 ; General Order-4 hypercomplex (HC) number systems, ; H = h1 + h2*i + h3*j + h4*k + h5*l, including standard quaternions. ; The 4 HC units (1, i, j, k) are defined in a 4-dimensional space with ; axes x, y, z, and u. The formula plots a parametrically defined planar ; slice through this xyzu space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, x = xa * real(#pixel) + xb * imag(#pixel) + xc, ; y = ya * real(#pixel) + yb * imag(#pixel) + yc, ; z = za * real(#pixel) + zb * imag(#pixel) + zc, ; u = ua * real(#pixel) + ub * imag(#pixel) + uc, ; xa, xb, xc, ya, yb, yc, za, zb, zc, etc. are 12 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = x + yi + zj + uk, which are fed to the standard ; Mandelbrot/Julia equation H(n+1) = H(n) ^ @power + Hc, where @power is a ; user-specified exponent; in the Mandelbrot case, Hc represents the ; pixel-specified x + yi + zj + uk (and H(n) normally starts as 0), ; whereas in the Julia case the initial H(n) is the pixel-specified ; x + yi + zj + uk, and Hc is a user-defined seed constant. Various ; combinations of x, yi, zj, and uk can be specified as the real and imag ; components of #z for bailout and coloring purposes. See the end of the formula ; for more details about the implementation. init: ; define parametric coefficients float xa = @xaa, float xb = @xbb, float xc = @xcc float ya = @yaa, float yb = @ybb, float yc = @ycc float za = @zaa, float zb = @zbb, float zc = @zcc float ua = @uaa, float ub = @ubb, float uc = @ucc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float hxmr = float hxmc = float hxprod = float hxconst = 0.0 float hymr = float hymc = float hyprod = float hyconst = 0.0 float hzmr = float hzmc = float hzprod = float hzconst = 0.0 float humr = float humc = float huprod = float huconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables bool done = TRUE ; for sorting the list of components from highest to lowest int exponent = @power float hxaccum = float hyaccum = float hzaccum = 0.0, float huaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization hxconst = xa * repix + xb * impix + xc hyconst = ya * repix + yb * impix + yc hzconst = za * repix + zb * impix + zc huconst = ua * repix + ub * impix + uc hxmr = @xperturb, hymr = @yperturb, hzmr = @zperturb humr = @uperturb else ; Julia initialization hxmr = xa * repix + xb * impix + xc hymr = ya * repix + yb * impix + yc hzmr = za * repix + zb * impix + zc humr = ua * repix + ub * impix + uc hxconst = @xseed, hyconst = @yseed, hzconst = @zseed huconst = @useed endif ; @plottype if @switchmode == 1 ; xy-switch hxconst = real(@switchconst), hyconst = imag(@switchconst) elseif @switchmode == 2 ; xz-switch hxconst = real(@switchconst), hzconst = imag(@switchconst) elseif @switchmode == 3 ; xu-switch hxconst = real(@switchconst), huconst = imag(@switchconst) elseif @switchmode == 4 ; yz-switch hyconst = real(@switchconst), hzconst = imag(@switchconst) elseif @switchmode == 5 ; yu-switch hyconst = real(@switchconst), huconst = imag(@switchconst) elseif @switchmode == 6 ; zu-switch hzconst = real(@switchconst), huconst = imag(@switchconst) endif ; @switchmode2 ; get ready for looping hxprod = hxmr, hyprod = hymr, hzprod = hzmr huprod = humr loop: count = 1 hxmr = hxprod, hymr = hyprod, hzmr = hzprod humr = huprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh hxaccum = hxprod, hyaccum = hyprod, hzaccum = hzprod ; store first series term huaccum = huprod elseif (@formula == 2) || (@formula == 6) ; cos, cosh hxaccum = 1, hyaccum = 0, hzaccum = 0, huaccum = 0 elseif @formula == 3 ; exp(h) hxaccum = 1 + hxprod, hyaccum = hyprod, hzaccum = hzprod huaccum = huprod elseif @formula == 4 ; exp(-h) hxaccum = 1 - hxprod, hyaccum = -hyprod, hzaccum = -hzprod huaccum = -huprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands hxmc = hxprod, hymc = hyprod, hzmc = hzprod humc = huprod if @multrules == 0 ; type "A" rules (standard quaternions) hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hymc - hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc - hzmr*hymc elseif @multrules == 1 ; "B" (Fractint hypercomplexes) hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc + humr*humc hyprod = hxmr*hymc + hymr*hxmc - hzmr*humc - humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc - humr*hymc - hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc elseif @multrules == 2 ; "C" hxprod = hxmr*hxmc - hymr*hzmc - hzmr*humc - humr*hymc + hzmr*hymc + \ humr*hzmc + hymr*humc hyprod = hxmr*hymc + hymr*hxmc - humr*humc hzprod = hxmr*hzmc + hzmr*hxmc - hymr*hymc huprod = hxmr*humc + humr*hxmc - hzmr*hzmc elseif @multrules == 3 ; "D" hxprod = hxmr*hxmc - hymr*hymc - hzmr*hzmc - humr*humc hyprod = hxmr*hymc + hymr*hxmc + hzmr*humc + humr*hzmc hzprod = hxmr*hzmc + hzmr*hxmc + humr*hymc + hymr*humc huprod = hxmr*humc + humr*hxmc + hymr*hzmc + hzmr*hymc elseif @multrules == 4 ; "E" hxprod = hxmr*hxmc + hzmr*hymc + humr*hzmc + hymr*humc - \ hymr*hzmc - hzmr*humc - humr*hymc hyprod = hxmr*hymc + hymr*hxmc - hzmr*hzmc + humr*humc hzprod = hxmr*hzmc + hzmr*hxmc - humr*humc + hymr*hymc huprod = hxmr*humc + humr*hxmc - hymr*hymc + hzmr*hzmc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 elseif count == 5 hxaccum = hxaccum + hxprod/120 hyaccum = hyaccum + hyprod/120 hzaccum = hzaccum + hzprod/120 huaccum = huaccum + huprod/120 elseif count == 7 hxaccum = hxaccum - hxprod/5040 hyaccum = hyaccum - hyprod/5040 hzaccum = hzaccum - hzprod/5040 huaccum = huaccum - huprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/362880 hyprod = hyaccum + hyprod/362880 hzprod = hzaccum + hzprod/362880 huprod = huaccum + huprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 hxaccum = hxaccum - hxprod/2 hyaccum = hyaccum - hyprod/2 hzaccum = hzaccum - hzprod/2 huaccum = huaccum - huprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 elseif count == 6 hxaccum = hxaccum - hxprod/720 hyaccum = hyaccum - hyprod/720 hzaccum = hzaccum - hzprod/720 huaccum = huaccum - huprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst hxprod = hxaccum + hxprod/40320 hyprod = hyaccum + hyprod/40320 hzprod = hzaccum + hzprod/40320 huprod = huaccum + huprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 3 hxaccum = hxaccum - hxprod/6 hyaccum = hyaccum - hyprod/6 hzaccum = hzaccum - hzprod/6 huaccum = huaccum - huprod/6 elseif count == 4 hxprod = hxaccum + hxprod/24 hyprod = hyaccum + hyprod/24 hzprod = hzaccum + hzprod/24 huprod = huaccum + huprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 hxaccum = hxaccum + hxprod/6 hyaccum = hyaccum + hyprod/6 hzaccum = hzaccum + hzprod/6 huaccum = huaccum + huprod/6 elseif count == 5 hxprod = hxaccum + hxprod/120 hyprod = hyaccum + hyprod/120 hzprod = hzaccum + hzprod/120 huprod = huaccum + huprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 hxaccum = hxaccum + hxprod/2 hyaccum = hyaccum + hyprod/2 hzaccum = hzaccum + hzprod/2 huaccum = huaccum + huprod/2 elseif count == 4 hxaccum = hxaccum + hxprod/24 hyaccum = hyaccum + hyprod/24 hzaccum = hzaccum + hzprod/24 huaccum = huaccum + huprod/24 elseif count == 6 hxprod = hxaccum + hxprod/720 hyprod = hyaccum + hyprod/720 hzprod = hzaccum + hzprod/720 huprod = huaccum + huprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term hxprod = hxprod + hxconst, hyprod = hyprod + hyconst, hzprod = hzprod + hzconst huprod = huprod + huconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; xy components of the HC z = hxprod + flip(hyprod) elseif @zreport == 2 ; xz components z = hxprod + flip(hzprod) elseif @zreport == 3 ; xu z = hxprod + flip(huprod) elseif @zreport == 4 ; yz components of the HC z = hyprod + flip(hzprod) elseif @zreport == 5 ; yu components of the HC z = hyprod + flip(huprod) elseif @zreport == 6 ; zu components of the HC z = hzprod + flip(huprod) elseif @zreport == 7 ; min, max ; Use the now unneeded HC multiplier variables for storing the sorted ; components. hxmr will hold the max value, down to the min in hvmr. hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = humr + flip(hxmr) elseif @zreport == 8 ; 2 mins hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = humr + flip(humr) elseif @zreport == 9 ; 2 maxes hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = hxmr + flip(hymr) elseif @zreport == 10 ; magnitude, min tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = tempx + flip(humr) elseif @zreport == 11 ; magnitude, max tempx = hxprod*hxprod + hyprod*hyprod + hzprod*hzprod + huprod*huprod hxmr = hxprod, hymr = hyprod, hzmr = hzprod, humr = huprod repeat done = TRUE ; if unchanged at loop end, then values are sorted if hxmr < hymr done = FALSE ; yes, so swap them and set flag to repeat the loop temp = hxmr, hxmr = hymr, hymr = temp endif ; hxmr if hymr < hzmr done = FALSE temp = hymr, hymr = hzmr, hzmr = temp endif ; hymr if hzmr < humr done = FALSE temp = hzmr, hzmr = humr, humr = temp endif ; hzmr until done z = tempx + flip(hxmr) endif ; @zreport bailout: |z| < @bail default: title = "Quaternions Julia" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param xaa caption = "X-RealCoeff" default = 1.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xbb caption = "X-ImagCoeff" default = 0.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param xcc caption = "X-Offset" default = 0.0 hint = "The x-coordinate of the plane in xyzu-space is specified by \ X-RealCoeff * real(#pixel) + X-ImagCoeff * imag(#pixel) + \ X-Offset" endparam param yaa caption = "Y-RealCoeff" default = 0.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ybb caption = "Y-ImagCoeff" default = 1.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param ycc caption = "Y-Offset" default = 0.0 hint = "The y-coordinate of the plane in xyzu-space is specified by \ Y-RealCoeff * real(#pixel) + Y-ImagCoeff * imag(#pixel) + \ Y-Offset" endparam param zaa caption = "Z-RealCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zbb caption = "Z-ImagCoeff" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param zcc caption = "Z-Offset" default = 0.0 hint = "The z-coordinate of the plane in xyzu-space is specified by \ Z-RealCoeff * real(#pixel) + Z-ImagCoeff * imag(#pixel) + \ Z-Offset" endparam param uaa caption = "U-RealCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ubb caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in xyzu-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if 'Formula' is \ set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "quaternions" "FI hypercomplex" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-4 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 4 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "xy-components" "xz-components" "xu-components" \ "yz-components" "yu-components" "zu-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "xy" "xz" "xu" "yz" "yu" "zu" default = 0 hint = "These are the Julia seed constant components that will be varied \ as the cursor is moved around the screen prior to the switch" endparam param xseed caption = "X-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the X-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param yseed caption = "Y-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Y-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param zseed caption = "Z-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the Z-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for Hz, Hconstant" endparam param xperturb caption = "X-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the X-component of \ the initial perturbation; unused for Julia plots" endparam param yperturb caption = "Y-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Y-component of \ the initial perturbation; unused for Julia plots" endparam param zperturb caption = "Z-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the Z-component of \ the initial perturbation; unused for Julia plots" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Quaternions Julia' \ formula; varies the HC initial Mandelbrot perturbation. Do not \ set manually; instead use the X, Y, Z, U-Perturbation params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-quaternions" xaa = xaa xbb = xbb xcc = xcc yaa = yaa ybb = ybb ycc = ycc zaa = zaa zbb = zbb zcc = zcc uaa = uaa ubb = ubb ucc = ucc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode xseed = xseed yseed = yseed zseed = zseed useed = useed xscale = xscale yscale = yscale bail = bail switchconst = #pixel xperturb = xperturb yperturb = yperturb zperturb = zperturb uperturb = uperturb ; Param 'multrules' specifies a particular type of order-4 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 4 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=k^2=-1; ij=-ji=k, jk=-kj=i, ki=-ik=j ; (standard quaternions). ; 'B' --- i^2=j^2=-1, k^2=1; ij=ji=k, jk=kj=-i, ki=ik=-j ; (in Fractint, these are called 'hypercomplex numbers'). ; 'C' --- i^2=-j, j^2=-k, k^2=-i; ij=-ji=jk=-kj=ki=-ik=-1. ; 'D' --- i^2=j^2=k^2=-1; ij=ji=k, jk=kj=i, ki=ik=j. ; 'E' --- i^2=j-k, j^2=k-i, k^2=i-j; ij=jk=ki=-1, ji=kj=ik=1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-4 hypercomplexes have ; 4, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Quaternions) to the Julia (Quaternions Julia) varying any 2 of the 4 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 4 initial perturbation components, using the cursor in ; the usual manner. (In either case, the other 2 components can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining components can be set manually at this time if desired, using ; the appropriate 'Seed' parameters if switching to a Julia, or the corresponding ; 'Perturbation' params if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the other 2 ; components will appear in their usual spot. For example, assume we have ; switched to Quaternions Julia with 'Switch Mode' set to xu, and before the ; switch we manually set another component (y) = 0.27 using param 'Y-Seed'. Then ; after the switch, 'Switch Constant' real would contain the Julia seed ; x-component, 'Switch Constant' imag would contain the u-component of the seed, ; and param 'Y-Seed' would be set to 0.27, the y-component. Params 'X-Seed' and ; 'U-Seed' would be unusable unless 'Switch Mode' were again turned 'off'. ; Hope this is clear! } jam-teronions { ; jam 011204 ; General Order-3 hypercomplex (HC) number systems, H = h1 + h2*i + h3*j. ; The 3 HC units (1, i, j) are defined in a 3-dimensional space with ; axes u, v, and w. The formula plots a parametrically defined planar ; slice through this uvw space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, u = ux * real(#pixel) + uy * imag(#pixel) + uc, ; v = vx * real(#pixel) + vy * imag(#pixel) + vc, ; w = wx * real(#pixel) + wy * imag(#pixel) + wc, where ; ux, uy, uc, vx, vy, vc, wx, wy, and wc are 9 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = u + vi + wj, which are fed to the standard Mandelbrot/Julia ; equation H(n+1) = H(n) ^ @power + Hc, where @power is a user-specified ; exponent; in the Mandelbrot case, Hc represents the pixel-specified ; u + vi + wj (and H(n) normally starts as 0), whereas in the Julia case ; the initial H(n) is the pixel-specified u + vi + wj, and Hc is a user- ; defined seed constant. Various combinations of u, vi, and wj can be ; specified as the real and imag components of #z for bailout and coloring ; purposes. See the end of the formula for more details about the ; implementation. init: ; define parametric coefficients float ux = @uxx, float uy = @uyy, float uc = @ucc float vx = @vxx, float vy = @vyy, float vc = @vcc float wx = @wxx, float wy = @wyy, float wc = @wcc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float humr = float humc = float huprod = float huconst = 0.0 float hvmr = float hvmc = float hvprod = float hvconst = 0.0 float hwmr = float hwmc = float hwprod = float hwconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables int exponent = @power float huaccum = float hvaccum = float hwaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization huconst = ux * repix + uy * impix + uc hvconst = vx * repix + vy * impix + vc hwconst = wx * repix + wy * impix + wc humr = @uperturb, hvmr = @vperturb, hwmr = @wperturb else ; Julia initialization humr = ux * repix + uy * impix + uc hvmr = vx * repix + vy * impix + vc hwmr = wx * repix + wy * impix + wc huconst = @useed, hvconst = @vseed, hwconst = @wseed endif ; @plottype if @switchmode == 1 ; uv-switch humr = real(@switchconst), hvmr = imag(@switchconst) elseif @switchmode == 2 ; vw-switch hvmr = real(@switchconst), hwmr = imag(@switchconst) elseif @switchmode == 3 ; uw-switch humr = real(@switchconst), hwmr = imag(@switchconst) endif ; @switchmode ; get ready for looping huprod = humr, hvprod = hvmr, hwprod = hwmr loop: count = 1 humr = huprod, hvmr = hvprod, hwmr = hwprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh huaccum = huprod, hvaccum = hvprod, hwaccum = hwprod ; store first series term elseif (@formula == 2) || (@formula == 6) ; cos, cosh huaccum = 1, hvaccum = 0, hwaccum = 0 elseif @formula == 3 ; exp(h) huaccum = 1 + huprod, hvaccum = hvprod, hwaccum = hwprod elseif @formula == 4 ; exp(-h) huaccum = 1 - huprod, hvaccum = -hvprod, hwaccum = -hwprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands, start multiplication engine humc = huprod, hvmc = hvprod, hwmc = hwprod if @multrules == 0 ; type "A" rules huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hwmr*hvmc hwprod = humr*hwmc + hvmr*hwmc + hwmr*humc elseif @multrules == 1 ; "B" huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc hwprod = humr*hwmc + hwmr*humc elseif @multrules == 2 ; "C" huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hvmr*hwmc + hwmr*hvmc hwprod = humr*hwmc + hwmr*humc + hvmr*hwmc - hwmr*hvmc elseif @multrules == 3 ; "D" huprod = humr*humc - hvmr*hvmc + hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hwmr*hvmc hwprod = humr*hwmc + hwmr*humc - hvmr*hwmc elseif @multrules == 4 ; "E" huprod = humr*humc - hvmr*hwmc - hwmr*hvmc hvprod = humr*hvmc + hvmr*humc + hwmr*hwmc hwprod = humr*hwmc + hwmr*humc + hvmr*hvmc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 hwaccum = hwaccum - hwprod/6 elseif count == 5 huaccum = huaccum + huprod/120 hvaccum = hvaccum + hvprod/120 hwaccum = hwaccum + hwprod/120 elseif count == 7 huaccum = huaccum - huprod/5040 hvaccum = hvaccum - hvprod/5040 hwaccum = hwaccum - hwprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst huprod = huaccum + huprod/362880 hvprod = hvaccum + hvprod/362880 hwprod = hwaccum + hwprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 huaccum = huaccum - huprod/2 hvaccum = hvaccum - hvprod/2 hwaccum = hwaccum - hwprod/2 elseif count == 4 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 hwaccum = hwaccum + hwprod/24 elseif count == 6 huaccum = huaccum - huprod/720 hvaccum = hvaccum - hvprod/720 hwaccum = hwaccum - hwprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst huprod = huaccum + huprod/40320 hvprod = hvaccum + hvprod/40320 hwprod = hwaccum + hwprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 3 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 hwaccum = hwaccum + hwprod/6 elseif count == 4 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 hwprod = hwaccum + hwprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 3 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 hwaccum = hwaccum - hwprod/6 elseif count == 4 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 hwprod = hwaccum + hwprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 hwaccum = hwaccum + hwprod/6 elseif count == 5 huprod = huaccum + huprod/120 hvprod = hvaccum + hvprod/120 hwprod = hwaccum + hwprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 4 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 hwaccum = hwaccum + hwprod/24 elseif count == 6 huprod = huaccum + huprod/720 hvprod = hvaccum + hvprod/720 hwprod = hwaccum + hwprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term huprod = huprod + huconst, hvprod = hvprod + hvconst, hwprod = hwprod + hwconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = huprod*huprod + hvprod*hvprod + hwprod*hwprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; uv components of the HC z = huprod + flip(hvprod) elseif @zreport == 2 ; vw components z = hvprod + flip(hwprod) elseif @zreport == 3 ; uw z = huprod + flip(hwprod) elseif @zreport == 4 ; min, max if huprod < hvprod if huprod < hwprod ; huprod is the min value tempx = huprod else ; hwprod is the min tempx = hwprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempx = hvprod else tempx = hwprod endif ; huprod1 if huprod > hvprod if huprod > hwprod ; huprod is the max value tempy = huprod else ; hwprod is the max tempy = hwprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 5 ; 2 mins if huprod < hvprod if huprod < hwprod ; huprod is the min value tempx = huprod if hvprod < hwprod ; the second lowest value (2nd min) tempy = hvprod else tempy = hwprod endif ; hvprod else ; hwprod is the min tempx = hwprod, tempy = huprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempx = hvprod if huprod < hwprod ; the second lowest value (2nd min) tempy = huprod else tempy = hwprod endif ; huprod2 else tempx = hwprod, tempy = hvprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 6 ; 2 maxes if huprod > hvprod if huprod > hwprod ; huprod is the max value tempx = huprod if hvprod > hwprod ; the second highest value (2nd max) tempy = hvprod else tempy = hwprod endif ; hvprod else ; hwprod is the max tempx = hwprod, tempy = huprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempx = hvprod if huprod > hwprod ; the second highest value (2nd maxn) tempy = huprod else tempy = hwprod endif ; huprod2 else tempx = hwprod, tempy = hvprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 7 ; magnitude, min tempx = huprod*huprod + hvprod*hvprod + hwprod*hwprod ; HC magnitude if huprod < hvprod if huprod < hwprod ; huprod is the min value tempy = huprod else ; hwprod is the min tempy = hwprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 8 ; magnitude, max tempx = huprod*huprod + hvprod*hvprod + hwprod*hwprod ; HC magnitude if huprod > hvprod if huprod > hwprod ; huprod is the max value tempy = huprod else ; hwprod is the max tempy = hwprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) endif ; @zreport bailout: |z| < @bail default: title = "Teronions" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param uxx caption = "U-RealCoeff" default = 1.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param uyy caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param vxx caption = "V-RealCoeff" default = 0.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vyy caption = "V-ImagCoeff" default = 1.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vcc caption = "V-Offset" default = 0.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param wxx caption = "W-RealCoeff" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param wyy caption = "W-ImagCoeff" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param wcc caption = "W-Offset" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if 'Formula' is \ set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "A" "B" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-3 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 3 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "uv-components" "vw-components" "uw-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "uv" "vw" "uw" default = 0 hint = "These are the Julia seed constant components that will be varied \ as the cursor is moved around the screen prior to the switch" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param vperturb caption = "V-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the V-component of \ the initial perturbation; unused for Julia plots" endparam param wperturb caption = "W-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the W-component of \ the initial perturbation; unused for Julia plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for Hz, Hconstant" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param vseed caption = "V-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the V-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param wseed caption = "W-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the W-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Teronions Julia' \ formula; varies the HC initial Mandelbrot perturbation. Do not \ set manually; instead use the U, V, W-Perturbation params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-teronions-J" uxx = uxx uyy = uyy ucc = ucc vxx = vxx vyy = vyy vcc = vcc wxx = wxx wyy = wyy wcc = wcc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode uperturb = uperturb vperturb = vperturb wperturb = wperturb xscale = xscale yscale = yscale bail = bail useed = useed vseed = vseed wseed = wseed switchconst = #pixel ; Param 'multrules' specifies a particular type of order-3 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 3 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=-1; ij=j, ji=i. ; 'B' --- i^2=j^2=-1; ij=ji=0. ; 'C' --- i^2=j^2=-1; ij=i+j, ji=i-j. ; 'D' --- i^2=-1, j^2=1; ij=-j, ji=i. ; 'E' --- i^2=j, j^2=i; ij=ji=-1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-3 hypercomplexes have ; 3, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Teronions) to the Julia (Teronions Julia) varying any 2 of the 3 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 3 initial perturbation components, using the cursor in ; the usual manner. (In either case, the 3rd component can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining component can be set manually at this time if desired, using ; the appropriate 'Seed' parameter if switching to a Julia, or the corresponding ; 'Perturbation' param if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the 3rd component ; will appear in its usual spot. For example, assume we have switched to ; Teronions Julia with 'Switch Mode' set to uw, and before the switch we manually ; set the 3rd component (v) = 0.27 using param 'V-Seed'. Then after the switch, ; 'Switch Constant' real would contain the Julia seed u-component, 'Switch ; Constant' imag would contain the w-component of the seed, and param 'V-Seed' ; would be set to 0.27, the v-component. Params 'U-Seed' and 'W-Seed' would be ; unusable unless 'Switch Mode' were again turned 'off'. Hope this is clear! } jam-teronions-J { ; jam 011204 ; General Order-3 hypercomplex (HC) number systems, H = h1 + h2*i + h3*j. ; The 3 HC units (1, i, j) are defined in a 3-dimensional space with ; axes u, v, and w. The formula plots a parametrically defined planar ; slice through this uvw space, using the real and imaginary pixel ; coordinates as the parameters. The plane is defined by the parametric ; equations, u = ux * real(#pixel) + uy * imag(#pixel) + uc, ; v = vx * real(#pixel) + vy * imag(#pixel) + vc, ; w = wx * real(#pixel) + wy * imag(#pixel) + wc, where ; ux, uy, uc, vx, vy, vc, wx, wy, and wc are 9 user-specified real ; params. The points on this plane thus specified define a set of HC ; numbers H = u + vi + wj, which are fed to the standard Mandelbrot/Julia ; equation H(n+1) = H(n) ^ @power + Hc, where @power is a user-specified ; exponent; in the Mandelbrot case, Hc represents the pixel-specified ; u + vi + wj (and H(n) normally starts as 0), whereas in the Julia case ; the initial H(n) is the pixel-specified u + vi + wj, and Hc is a user- ; defined seed constant. Various combinations of u, vi, and wj can be ; specified as the real and imag components of #z for bailout and coloring ; purposes. See the end of the formula for more details about the ; implementation. init: ; define parametric coefficients float ux = @uxx, float uy = @uyy, float uc = @ucc float vx = @vxx, float vy = @vyy, float vc = @vcc float wx = @wxx, float wy = @wyy, float wc = @wcc ; define HC multiplier, multiplicand, product, and Julia constant coeffs float humr = float humc = float huprod = float huconst = 0.0 float hvmr = float hvmc = float hvprod = float hvconst = 0.0 float hwmr = float hwmc = float hwprod = float hwconst = 0.0 int count = 1 ; loop counter/index float temp = float tempx = float tempy = 0.0 ; scratch variables int exponent = @power float huaccum = float hvaccum = float hwaccum = 0.0 if @formula != 0 if @formula == 1 ; sin exponent = 9 elseif @formula == 2 ; cos exponent = 8 elseif (@formula == 3) || (@formula == 4) ; exp exponent = 4 elseif @formula == 5 ; sinh exponent = 5 elseif @formula == 6 ; cosh exponent = 6 endif ; @formula2 endif ; @formula1 ; to help control image warping/stretching float repix = @xscale * real(#pixel), float impix = @yscale * imag(#pixel) if @plottype == 0 ; Mandelbrot initialization huconst = ux * repix + uy * impix + uc hvconst = vx * repix + vy * impix + vc hwconst = wx * repix + wy * impix + wc humr = @uperturb, hvmr = @vperturb, hwmr = @wperturb else ; Julia initialization humr = ux * repix + uy * impix + uc hvmr = vx * repix + vy * impix + vc hwmr = wx * repix + wy * impix + wc huconst = @useed, hvconst = @vseed, hwconst = @wseed endif ; @plottype if @switchmode == 1 ; uv-switch huconst = real(@switchconst), hvconst = imag(@switchconst) elseif @switchmode == 2 ; vw-switch hvconst = real(@switchconst), hwconst = imag(@switchconst) elseif @switchmode == 3 ; uw-switch huconst = real(@switchconst), hwconst = imag(@switchconst) endif ; @switchmode ; get ready for looping huprod = humr, hvprod = hvmr, hwprod = hwmr loop: count = 1 humr = huprod, hvmr = hvprod, hwmr = hwprod if @formula != 0 if (@formula == 1) || (@formula == 5) ; sin, sinh huaccum = huprod, hvaccum = hvprod, hwaccum = hwprod ; store first series term elseif (@formula == 2) || (@formula == 6) ; cos, cosh huaccum = 1, hvaccum = 0, hwaccum = 0 elseif @formula == 3 ; exp(h) huaccum = 1 + huprod, hvaccum = hvprod, hwaccum = hwprod elseif @formula == 4 ; exp(-h) huaccum = 1 - huprod, hvaccum = -hvprod, hwaccum = -hwprod endif ; @formula2 endif ; @formula1 while count < exponent ; first calculate the power (multiplication from the left) count = count + 1 ; count now equals the power currently being calculated ; reinitialize/update multiplicands, start multiplication engine humc = huprod, hvmc = hvprod, hwmc = hwprod if @multrules == 0 ; type "A" rules huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hwmr*hvmc hwprod = humr*hwmc + hvmr*hwmc + hwmr*humc elseif @multrules == 1 ; "B" huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc hwprod = humr*hwmc + hwmr*humc elseif @multrules == 2 ; "C" huprod = humr*humc - hvmr*hvmc - hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hvmr*hwmc + hwmr*hvmc hwprod = humr*hwmc + hwmr*humc + hvmr*hwmc - hwmr*hvmc elseif @multrules == 3 ; "D" huprod = humr*humc - hvmr*hvmc + hwmr*hwmc hvprod = humr*hvmc + hvmr*humc + hwmr*hvmc hwprod = humr*hwmc + hwmr*humc - hvmr*hwmc elseif @multrules == 4 ; "E" huprod = humr*humc - hvmr*hwmc - hwmr*hvmc hvprod = humr*hvmc + hvmr*humc + hwmr*hwmc hwprod = humr*hwmc + hwmr*humc + hvmr*hvmc endif ; @multrules ; update accumulator if necessary for current formula if @formula != 0 if @formula == 1 ; sin series to five terms if count == 3 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 hwaccum = hwaccum - hwprod/6 elseif count == 5 huaccum = huaccum + huprod/120 hvaccum = hvaccum + hvprod/120 hwaccum = hwaccum + hwprod/120 elseif count == 7 huaccum = huaccum - huprod/5040 hvaccum = hvaccum - hvprod/5040 hwaccum = hwaccum - hwprod/5040 elseif count == 9 ; last time thru loop, so get ready to add hconst huprod = huaccum + huprod/362880 hvprod = hvaccum + hvprod/362880 hwprod = hwaccum + hwprod/362880 endif ; count elseif @formula == 2 ; cos series to five terms if count == 2 huaccum = huaccum - huprod/2 hvaccum = hvaccum - hvprod/2 hwaccum = hwaccum - hwprod/2 elseif count == 4 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 hwaccum = hwaccum + hwprod/24 elseif count == 6 huaccum = huaccum - huprod/720 hvaccum = hvaccum - hvprod/720 hwaccum = hwaccum - hwprod/720 elseif count == 8 ; last time thru loop, so get ready to add hconst huprod = huaccum + huprod/40320 hvprod = hvaccum + hvprod/40320 hwprod = hwaccum + hwprod/40320 endif ; count elseif @formula == 3 ; exp(h) if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 3 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 hwaccum = hwaccum + hwprod/6 elseif count == 4 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 hwprod = hwaccum + hwprod/24 endif ; count elseif @formula == 4 ; exp(-h) if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 3 huaccum = huaccum - huprod/6 hvaccum = hvaccum - hvprod/6 hwaccum = hwaccum - hwprod/6 elseif count == 4 huprod = huaccum + huprod/24 hvprod = hvaccum + hvprod/24 hwprod = hwaccum + hwprod/24 endif ; count elseif @formula == 5 ; sinh if count == 3 huaccum = huaccum + huprod/6 hvaccum = hvaccum + hvprod/6 hwaccum = hwaccum + hwprod/6 elseif count == 5 huprod = huaccum + huprod/120 hvprod = hvaccum + hvprod/120 hwprod = hwaccum + hwprod/120 endif ; count elseif @formula == 6 ; cosh if count == 2 huaccum = huaccum + huprod/2 hvaccum = hvaccum + hvprod/2 hwaccum = hwaccum + hwprod/2 elseif count == 4 huaccum = huaccum + huprod/24 hvaccum = hvaccum + hvprod/24 hwaccum = hwaccum + hwprod/24 elseif count == 6 huprod = huaccum + huprod/720 hvprod = hvaccum + hvprod/720 hwprod = hwaccum + hwprod/720 endif ; count endif ; @formula2 endif ; @formula1 endwhile ; count ; now add the constant term huprod = huprod + huconst, hvprod = hvprod + hvconst, hwprod = hwprod + hwconst ; now begin to figure out if it's bail time, based on user-specified criterion if @zreport == 0 ; Hprod magnitude ; actual HC magnitude is encoded equally in the real, imag parts of #z temp = huprod*huprod + hvprod*hvprod + hwprod*hwprod tempx = sqrt(temp/2.0) tempy = tempx z = tempx + flip(tempy) elseif @zreport == 1 ; uv components of the HC z = huprod + flip(hvprod) elseif @zreport == 2 ; vw components z = hvprod + flip(hwprod) elseif @zreport == 3 ; uw z = huprod + flip(hwprod) elseif @zreport == 4 ; min, max if huprod < hvprod if huprod < hwprod ; huprod is the min value tempx = huprod else ; hwprod is the min tempx = hwprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempx = hvprod else tempx = hwprod endif ; huprod1 if huprod > hvprod if huprod > hwprod ; huprod is the max value tempy = huprod else ; hwprod is the max tempy = hwprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 5 ; 2 mins if huprod < hvprod if huprod < hwprod ; huprod is the min value tempx = huprod if hvprod < hwprod ; the second lowest value (2nd min) tempy = hvprod else tempy = hwprod endif ; hvprod else ; hwprod is the min tempx = hwprod, tempy = huprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempx = hvprod if huprod < hwprod ; the second lowest value (2nd min) tempy = huprod else tempy = hwprod endif ; huprod2 else tempx = hwprod, tempy = hvprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 6 ; 2 maxes if huprod > hvprod if huprod > hwprod ; huprod is the max value tempx = huprod if hvprod > hwprod ; the second highest value (2nd max) tempy = hvprod else tempy = hwprod endif ; hvprod else ; hwprod is the max tempx = hwprod, tempy = huprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempx = hvprod if huprod > hwprod ; the second highest value (2nd maxn) tempy = huprod else tempy = hwprod endif ; huprod2 else tempx = hwprod, tempy = hvprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 7 ; magnitude, min tempx = huprod*huprod + hvprod*hvprod + hwprod*hwprod ; HC magnitude if huprod < hvprod if huprod < hwprod ; huprod is the min value tempy = huprod else ; hwprod is the min tempy = hwprod endif ; huprod2 elseif hvprod < hwprod ; hvprod must be the min tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) elseif @zreport == 8 ; magnitude, max tempx = huprod*huprod + hvprod*hvprod + hwprod*hwprod ; HC magnitude if huprod > hvprod if huprod > hwprod ; huprod is the max value tempy = huprod else ; hwprod is the max tempy = hwprod endif ; huprod2 elseif hvprod > hwprod ; hvprod must be the max tempy = hvprod else tempy = hwprod endif ; huprod1 z = tempx + flip(tempy) endif ; @zreport bailout: |z| < @bail default: title = "Teronions Julia" center = (0,0) maxiter = 100 periodicity = 0 method = multipass param uxx caption = "U-RealCoeff" default = 1.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param uyy caption = "U-ImagCoeff" default = 0.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param ucc caption = "U-Offset" default = 0.0 hint = "The u-coordinate of the plane in uvw-space is specified by \ U-RealCoeff * real(#pixel) + U-ImagCoeff * imag(#pixel) + \ U-Offset" endparam param vxx caption = "V-RealCoeff" default = 0.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vyy caption = "V-ImagCoeff" default = 1.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param vcc caption = "V-Offset" default = 0.0 hint = "The v-coordinate of the plane in uvw-space is specified by \ V-RealCoeff * real(#pixel) + V-ImagCoeff * imag(#pixel) + \ V-Offset" endparam param wxx caption = "W-RealCoeff" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param wyy caption = "W-ImagCoeff" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param wcc caption = "W-Offset" default = 0.0 hint = "The w-coordinate of the plane in uvw-space is specified by \ W-RealCoeff * real(#pixel) + W-ImagCoeff * imag(#pixel) + \ W-Offset" endparam param power caption = "Power" default = 2 hint = "This is the exponent for the Mandelbrot/Julia equation if param \ 'Formula' is set to 'h^power'" endparam param formula caption = "Formula" enum = "h^power" "sin" "cos" "exp(h)" "exp(-h)" "sinh" "cosh" default = 0 hint = "This param selects the main Mandelbrot/Julia equation to be executed. \ 'h^power' param 'Power' sets the exponent" endparam param multrules caption = "HC Type" enum = "A" "B" "C" "D" "E" default = 0 hint = "This param determines the specific type of order-3 hypercomplex \ number system that is implemented, by specifying multiplication \ rules for the 3 units. See formula comments for details" endparam param zreport caption = "Z Value" enum = "HC magnitude" "uv-components" "vw-components" "uw-components" \ "min/max" "min/min2" "max/max2" "magn/min" "magn/max" default = 0 hint = "This param determines which properties of the HC number are \ encoded into the real & imag parts of #z for bailout and \ coloring formula purposes. Min2 = 2nd lowest value; magn = HC \ magnitude" endparam param switchmode caption = "Switch Mode" enum = "off" "uv" "vw" "uw" default = 0 hint = "These are the Mandelbrot initial perturbation components that \ will be varied as the cursor is moved around the screen prior \ to the switch" endparam param useed caption = "U-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the U-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param vseed caption = "V-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the V-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param wseed caption = "W-Seed" default = 0.0 hint = "For 'Plotting Method' Julia, this is the W-component of \ the Julia seed constant; unused for Mandelbrot plots" endparam param xscale caption = "X-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen x-axis (horizontally)" endparam param yscale caption = "Y-Stretch" default = 1.0 hint = "This param can be used to stretch or compress the image \ along the screen y-axis (vertically)" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for Hz, Hconstant" endparam param uperturb caption = "U-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the U-component of \ the initial perturbation; unused for Julia plots" endparam param vperturb caption = "V-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the V-component of \ the initial perturbation; unused for Julia plots" endparam param wperturb caption = "W-Perturbation" default = 0.0 hint = "For 'Plotting Method' Mandelbrot, this is the W-component of \ the initial perturbation; unused for Julia plots" endparam param switchconst caption = "Switch Constant" default = (0,0) hint = "Dummy constant used only in the switch from the 'Teronions' \ formula; varies the HC Julia seed constant. Do not \ set manually; instead use the U, V, W-Seed params & set \ 'Switch Mode' to 'off'" endparam switch: type = "jam-teronions" uxx = uxx uyy = uyy ucc = ucc vxx = vxx vyy = vyy vcc = vcc wxx = wxx wyy = wyy wcc = wcc power = power formula = formula multrules = multrules zreport = zreport switchmode = switchmode useed = useed vseed = vseed wseed = wseed xscale = xscale yscale = yscale bail = bail uperturb = uperturb vperturb = vperturb wperturb = wperturb switchconst = #pixel ; Param 'multrules' specifies a particular type of order-3 hypercomplex from ; the many possible varieties, by specifying a rule set that determines the ; binary product of any of the 3 HC units. The multiplication rules ; implemented are: ; 'A' --- i^2=j^2=-1; ij=j, ji=i. ; 'B' --- i^2=j^2=-1; ij=ji=0. ; 'C' --- i^2=j^2=-1; ij=i+j, ji=i-j. ; 'D' --- i^2=-1, j^2=1; ij=-j, ji=i. ; 'E' --- i^2=j, j^2=i; ij=ji=-1. ; Some comments about 'Switch' mode: The UF 'Switch' implementation is ; optimized for complex numbers, i.e., it allows only 2 values to be varied ; by moving the cursor around the screen (corresponding to the real and ; imaginary components of some parameter in the formula being switched to, ; usually the Julia seed constant). Since the order-3 hypercomplexes have ; 3, rather than 2, components to vary, there are a few idiosyncrasies to ; my 'Switch' implementation in order to provide a completely general switching ; capability. 'Switch' can be used to change from the Mandelbrot formula ; (Teronions) to the Julia (Teronions Julia) varying any 2 of the 3 seed ; components at a time, or from the Julia version back to the Mandelbrot ; varying 2 of the 3 initial perturbation components, using the cursor in ; the usual manner. (In either case, the 3rd component can be set manually ; before or after the switch occurs.) In order to accomplish this, first set ; 'Switch Mode' to the two components that you wish to vary using the cursor ; (the remaining component can be set manually at this time if desired, using ; the appropriate 'Seed' parameter if switching to a Julia, or the corresponding ; 'Perturbation' param if switching to a Mandelbrot). After the switch, in the ; switched-to formula, the selected values of the two components that were varied ; by cursor control will appear as the real and imaginary components of an ; otherwise unused dummy parameter 'Switch Constant', while the 3rd component ; will appear in its usual spot. For example, assume we have switched to ; Teronions Julia with 'Switch Mode' set to uw, and before the switch we manually ; set the 3rd component (v) = 0.27 using param 'V-Seed'. Then after the switch, ; 'Switch Constant' real would contain the Julia seed u-component, 'Switch ; Constant' imag would contain the w-component of the seed, and param 'V-Seed' ; would be set to 0.27, the v-component. Params 'U-Seed' and 'W-Seed' would be ; unusable unless 'Switch Mode' were again turned 'off'. Hope this is clear! } tricos { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; tricos(z) = 1-(1/3!)z^3+(1/6!)z^6-... init: float factorial3 = 6.0 float factorial6 = 720.0 float factorial9 = 362880.0 float factorial12 = 4.79001600e08 float factorial15 = 1.307674368000e12 float factorial18 = 6.402373705728e15 complex c3 = -1/factorial3, complex c6 = 1/factorial6, complex c9 = -1/factorial9 complex c12 = 1/factorial12, complex c15 = -1/factorial15, complex c18 = 1/factorial18 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z3 = z*z*z, complex z6 = z3*z3, complex z9 = z6*z3, complex z12 = z9*z3, complex z15 = z12*z3, complex z18 = z15*z3 z = 1 + c3*z3 + c6*z6 + c9*z9 + c12*z12 + c15*z15 + c18*z18 + jc bailout: |z| < @bail default: title = "Tricos" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tricos-J" jconstant = #pixel bail = bail } tricos-J { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; tricos(z) = 1-(1/3!)z^3+(1/6!)z^6-... init: float factorial3 = 6.0 float factorial6 = 720.0 float factorial9 = 362880.0 float factorial12 = 4.79001600e08 float factorial15 = 1.307674368000e12 float factorial18 = 6.402373705728e15 complex c3 = -1/factorial3, complex c6 = 1/factorial6, complex c9 = -1/factorial9 complex c12 = 1/factorial12, complex c15 = -1/factorial15, complex c18 = 1/factorial18 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z3 = z*z*z, complex z6 = z3*z3, complex z9 = z6*z3, complex z12 = z9*z3, complex z15 = z12*z3, complex z18 = z15*z3 z = 1 + c3*z3 + c6*z6 + c9*z9 + c12*z12 + c15*z15 + c18*z18 + jc bailout: |z| < @bail default: title = "Tricos Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tricos" perturbation = #pixel bail = bail } trisin1 { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; trisin1(z) = z-(1/4!)z^4+(1/7!)z^7-... init: float factorial4 = 24.0 float factorial7 = 5040.0 float factorial10 = 3628800.0 float factorial13 = 6.227020800e09 float factorial16 = 2.0922789888e13 float factorial19 = 1.21645100408832000e17 complex c4 = -1/factorial4, complex c7 = 1/factorial7, complex c10 = -1/factorial10 complex c13 = 1/factorial13, complex c16 = -1/factorial16, complex c19 = 1/factorial19 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z3 = z*z*z, complex z4 = z3*z, complex z7 = z4*z3, complex z10 = z7*z3 complex z13 = z10*z3, complex z16 = z13*z3, complex z19 = z16*z3 z = z + c4*z4 + c7*z7 + c10*z10 + c13*z13 + c16*z16 + c19*z19 + jc bailout: |z| < @bail default: title = "Trisin1" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "trisin1-J" jconstant = #pixel bail = bail } trisin1-J { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; trisin1(z) = z-(1/4!)z^4+(1/7!)z^7-... init: float factorial4 = 24.0 float factorial7 = 5040.0 float factorial10 = 3628800.0 float factorial13 = 6.227020800e09 float factorial16 = 2.0922789888e13 float factorial19 = 1.21645100408832000e17 complex c4 = -1/factorial4, complex c7 = 1/factorial7, complex c10 = -1/factorial10 complex c13 = 1/factorial13, complex c16 = -1/factorial16, complex c19 = 1/factorial19 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z3 = z*z*z, complex z4 = z3*z, complex z7 = z4*z3, complex z10 = z7*z3 complex z13 = z10*z3, complex z16 = z13*z3, complex z19 = z16*z3 z = z + c4*z4 + c7*z7 + c10*z10 + c13*z13 + c16*z16 + c19*z19 + jc bailout: |z| < @bail default: title = "Trisin1 Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "trisin1" perturbation = #pixel bail = bail } trisin2 { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; trisin2(z) = (1/2!)z^2-(1/5!)z^5+(1/8!)z^8-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial5 = 120.0 float factorial8 = 40320.0 float factorial11 = 39916800.0 float factorial14 = 8.7178291200e10 float factorial17 = 3.55687428096000e14 float factorial20 = 2.43290200817664e18 complex c2 = 0.5 complex c5 = -1/factorial5, complex c8 = 1/factorial8, complex c11 = -1/factorial11 complex c14 = 1/factorial14, complex c17 = -1/factorial17, complex c20 = 1/factorial20 loop: complex z2 = z*z, complex z3 = z2*z, complex z5 = z3*z2, complex z8 = z5*z3 complex z11 = z8*z3, complex z14 = z11*z3, complex z17 = z14*z3, complex z20 = z17*z3 z = c2*z2 + c5*z5 + c8*z8 + c11*z11 + c14*z14 + c17*z17 + c20*z20 + jc bailout: |z| < @bail default: title = "Trisin2" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "trisin2-J" jconstant = #pixel bail = bail } trisin2-J { ; jam 010508 ; generalization of exp/sin/cos functions defined by Taylor series. ; trisin2(z) = (1/2!)z^2-(1/5!)z^5+(1/8!)z^8-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial5 = 120.0 float factorial8 = 40320.0 float factorial11 = 39916800.0 float factorial14 = 8.7178291200e10 float factorial17 = 3.55687428096000e14 float factorial20 = 2.43290200817664e18 complex c2 = 0.5 complex c5 = -1/factorial5, complex c8 = 1/factorial8, complex c11 = -1/factorial11 complex c14 = 1/factorial14, complex c17 = -1/factorial17, complex c20 = 1/factorial20 loop: complex z2 = z*z, complex z3 = z2*z, complex z5 = z3*z2, complex z8 = z5*z3 complex z11 = z8*z3, complex z14 = z11*z3, complex z17 = z14*z3, complex z20 = z17*z3 z = c2*z2 + c5*z5 + c8*z8 + c11*z11 + c14*z14 + c17*z17 + c20*z20 + jc bailout: |z| < @bail default: title = "Trisin2 Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "trisin2" perturbation = #pixel bail = bail } tetracos { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetracos(z) = 1-(1/4!)z^4+(1/8!)z^8-... init: float factorial4 = 24.0 float factorial8 = 40320.0 float factorial12 = 4.79001600e08 float factorial16 = 2.0922789888e13 float factorial20 = 2.43290200817664e18 complex c4 = -1/factorial4, complex c8 = 1/factorial8, complex c12 = -1/factorial12 complex c16 = 1/factorial16, complex c20 = -1/factorial20 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z4 = z*z*z*z, complex z8 = z4*z4, complex z12 = z8*z4, complex z16 = z12*z4, complex z20 = z16*z4 z = 1 + c4*z4 + c8*z8 + c12*z12 + c16*z16 + c20*z20 + jc bailout: |z| < @bail default: title = "Tetracos" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetracos-J" jconstant = #pixel bail = bail } tetracos-J { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetracos(z) = 1-(1/4!)z^4+(1/8!)z^8-... init: float factorial4 = 24.0 float factorial8 = 40320.0 float factorial12 = 4.79001600e08 float factorial16 = 2.0922789888e13 float factorial20 = 2.43290200817664e18 complex c4 = -1/factorial4, complex c8 = 1/factorial8, complex c12 = -1/factorial12 complex c16 = 1/factorial16, complex c20 = -1/factorial20 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z4 = z*z*z*z, complex z8 = z4*z4, complex z12 = z8*z4, complex z16 = z12*z4, complex z20 = z16*z4 z = 1 + c4*z4 + c8*z8 + c12*z12 + c16*z16 + c20*z20 + jc bailout: |z| < @bail default: title = "Tetracos Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetracos" perturbation = #pixel bail = bail } tetrasin1 { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin1(z) = z-(1/5!)z^5+(1/9!)z^9-... init: float factorial5 = 120.0 float factorial9 = 362880.0 float factorial13 = 6.227020800e09 float factorial17 = 3.55687428096000e14 float factorial21 = 5.109094217170944e19 complex c5 = -1/factorial5, complex c9 = 1/factorial9, complex c13 = -1/factorial13 complex c17 = 1/factorial17, complex c21 = -1/factorial21 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z4 = z*z*z*z, complex z5 = z4*z, complex z9 = z5*z4, complex z13 = z9*z4 complex z17 = z13*z4, complex z21 = z17*z4 z = z + c5*z5 + c9*z9 + c13*z13 + c17*z17 + c21*z21 + jc bailout: |z| < @bail default: title = "Tetrasin1" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin1-J" jconstant = #pixel bail = bail } tetrasin1-J { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin1(z) = z-(1/5!)z^5+(1/9!)z^9-... init: float factorial5 = 120.0 float factorial9 = 362880.0 float factorial13 = 6.227020800e09 float factorial17 = 3.55687428096000e14 float factorial21 = 5.109094217170944e19 complex c5 = -1/factorial5, complex c9 = 1/factorial9, complex c13 = -1/factorial13 complex c17 = 1/factorial17, complex c21 = -1/factorial21 if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif loop: complex z4 = z*z*z*z, complex z5 = z4*z, complex z9 = z5*z4, complex z13 = z9*z4 complex z17 = z13*z4, complex z21 = z17*z4 z = z + c5*z5 + c9*z9 + c13*z13 + c17*z17 + c21*z21 + jc bailout: |z| < @bail default: title = "Tetrasin1 Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin1" perturbation = #pixel bail = bail } tetrasin2 { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin2(z) = (1/2!)z^2-(1/6!)z^6+(1/10!)z^10-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial6 = 720.0 float factorial10 = 3628800.0 float factorial14 = 8.7178291200e10 float factorial18 = 6.402373705728e15 complex c2 = 0.5, complex c6 = -1/factorial6, complex c10 = 1/factorial10 complex c14 = -1/factorial14, complex c18 = 1/factorial18 loop: complex z2 = z*z, complex z4 = z2*z2, complex z6 = z2*z4, complex z10 = z6*z4 complex z14 = z10*z4, complex z18 = z14*z4 z = c2*z2 + c6*z6 + c10*z10 + c14*z14 + c18*z18 + jc bailout: |z| < @bail default: title = "Tetrasin2" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin2-J" jconstant = #pixel bail = bail } tetrasin2-J { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin2(z) = (1/2!)z^2-(1/6!)z^6+(1/10!)z^10-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial6 = 720.0 float factorial10 = 3628800.0 float factorial14 = 8.7178291200e10 float factorial18 = 6.402373705728e15 complex c2 = 0.5, complex c6 = -1/factorial6, complex c10 = 1/factorial10 complex c14 = -1/factorial14, complex c18 = 1/factorial18 loop: complex z2 = z*z, complex z4 = z2*z2, complex z6 = z2*z4, complex z10 = z6*z4 complex z14 = z10*z4, complex z18 = z14*z4 z = c2*z2 + c6*z6 + c10*z10 + c14*z14 + c18*z18 + jc bailout: |z| < @bail default: title = "Tetrasin2 Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin2" perturbation = #pixel bail = bail } tetrasin3 { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin3(z) = (1/3!)z^3-(1/7!)z^7+(1/11!)z^11-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial3 = 6.0 float factorial7 = 5040.0 float factorial11 = 39916800.0 float factorial15 = 1.307674368000e12 float factorial19 = 1.21645100408832000e17 complex c3 = 1/factorial3, complex c7 = -1/factorial7, complex c11 = 1/factorial11 complex c15 = -1/factorial15, complex c19 = 1/factorial19 loop: complex z3 = z*z*z, complex z4 = z3*z, complex z7 = z3*z4, complex z11 = z7*z4 complex z15 = z11*z4, complex z19 = z15*z4 z = c3*z3 + c7*z7 + c11*z11 + c15*z15 + c19*z19 + jc bailout: |z| < @bail default: title = "Tetrasin3" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 0 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin3-J" jconstant = #pixel bail = bail } tetrasin3-J { ; jam 010509 ; generalization of exp/sin/cos functions defined by Taylor series. ; tetrasin3(z) = (1/3!)z^3-(1/7!)z^7+(1/11!)z^11-... init: if ( @plottype == 0 ) z = @perturbation, jc = #pixel else z = #pixel, jc = @jconstant endif float factorial3 = 6.0 float factorial7 = 5040.0 float factorial11 = 39916800.0 float factorial15 = 1.307674368000e12 float factorial19 = 1.21645100408832000e17 complex c3 = 1/factorial3, complex c7 = -1/factorial7, complex c11 = 1/factorial11 complex c15 = -1/factorial15, complex c19 = 1/factorial19 loop: complex z3 = z*z*z, complex z4 = z3*z, complex z7 = z3*z4, complex z11 = z7*z4 complex z15 = z11*z4, complex z19 = z15*z4 z = c3*z3 + c7*z7 + c11*z11 + c15*z15 + c19*z19 + jc bailout: |z| < @bail default: title = "Tetrasin3 Julia" center = (0,0) maxiter = 200 periodicity = 0 method = multipass param plottype caption = "Plotting Method" enum = "Mandelbrot" "Julia" default = 1 hint = "Select type of initialization for z, c" endparam param perturbation caption = "Initial Perturbation" default = (0,0) hint = "Iteration starting value" endparam param jconstant caption = "Julia Constant" default = (0,0) hint = "Iteration constant" endparam param bail caption = "Bailout Value" default = 16.0 hint = "Value needed to 'escape' to infinity" endparam switch: type = "tetrasin3" perturbation = #pixel bail = bail } jam-pixel { ; jam 020815 ; Simple pixel formula init: int iter = 0 complex jc = #pixel complex ztemp = complex zextra = (0,0) complex z = #pixel if @pixelformula != 0 if @pixelformula == 1 jc = jc * jc elseif @pixelformula == 2 jc = jc * jc * jc elseif @pixelformula == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula == 4 jc = jc ^ @ppower elseif @pixelformula == 5 jc = 1/jc elseif @pixelformula == 6 jc = sqrt(jc) elseif @pixelformula == 7 jc = 1 / ( jc * jc ) elseif @pixelformula == 8 jc = log(jc) elseif @pixelformula == 9 jc = exp( jc) elseif @pixelformula == 10 jc = jc^jc elseif @pixelformula == 11 jc = sin( jc ) elseif @pixelformula == 12 jc = cos( jc ) elseif @pixelformula == 13 jc = tan( jc ) elseif @pixelformula == 14 jc = asin( jc ) elseif @pixelformula == 15 jc = acos( jc ) elseif @pixelformula == 16 jc = atan( jc ) elseif @pixelformula == 17 jc = sinh( jc ) elseif @pixelformula == 18 jc = cosh( jc ) elseif @pixelformula == 19 jc = tanh( jc ) elseif @pixelformula == 20 jc = asinh( jc ) elseif @pixelformula == 21 jc = acosh( jc ) elseif @pixelformula == 22 jc = atanh( jc ) elseif @pixelformula == 23 jc = log( 1/jc ) elseif @pixelformula == 24 jc = log( log( jc )) elseif @pixelformula == 25 jc = exp( -jc ) elseif @pixelformula == 26 jc = exp( 1/jc ) elseif @pixelformula == 27 jc = jc^(-jc) elseif @pixelformula == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula == 31 jc = cotan( jc ) elseif @pixelformula == 32 jc = 1/cos( jc ) elseif @pixelformula == 33 jc = 1/sin( jc ) elseif @pixelformula == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula == 39 jc = log(-jc) elseif @pixelformula == 40 jc = 1/log( jc ) elseif @pixelformula == 41 jc = jc * log( jc ) elseif @pixelformula == 42 jc = sin( jc ) / jc elseif @pixelformula == 43 jc = cos( jc ) / jc elseif @pixelformula == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula == 45 jc = sin( jc^2 ) elseif @pixelformula == 46 jc = exp( -1/jc ) elseif @pixelformula == 47 jc = jc * exp( jc ) elseif @pixelformula == 48 jc = jc * exp( -jc ) elseif @pixelformula == 49 jc = jc * exp( 1/jc ) elseif @pixelformula == 50 jc = jc * exp( -1/jc ) elseif @pixelformula == 51 jc = jc * jc * jc elseif @pixelformula == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula == 53 jc = atan( 1 / jc ) elseif @pixelformula == 54 jc = acos( 1 / jc ) elseif @pixelformula == 55 jc = asin( 1 / jc ) elseif @pixelformula == 56 jc = tan( jc ) / jc elseif @pixelformula == 57 jc = cotan( jc ) / jc elseif @pixelformula == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula == 60 jc = jc * sin( jc ) elseif @pixelformula == 61 jc = jc * cos( jc ) elseif @pixelformula == 62 jc = jc * tan( jc ) elseif @pixelformula == 63 jc = jc * cotan( jc ) elseif @pixelformula == 64 jc = jc/cos( jc ) elseif @pixelformula == 65 jc = jc/sin( jc ) elseif @pixelformula == 66 jc = sin( 1/jc ) elseif @pixelformula == 67 jc = cos( 1/jc ) elseif @pixelformula == 68 jc = tan( 1/jc ) elseif @pixelformula == 69 jc = cotan( 1/jc ) elseif @pixelformula == 70 jc = 1/cos( 1/jc ) elseif @pixelformula == 71 jc = 1/sin( 1/jc ) elseif @pixelformula == 72 jc = cotanh( jc ) elseif @pixelformula == 73 jc = 1/cosh( jc ) elseif @pixelformula == 74 jc = 1/sinh( jc ) elseif @pixelformula == 75 jc = atanh( 1/jc ) elseif @pixelformula == 76 jc = acosh( 1/jc ) elseif @pixelformula == 77 jc = asinh( 1/jc ) elseif @pixelformula == 78 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + \ @coeffpc * jc^@exponentpc elseif @pixelformula == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula == 85 jc = sinh(1/jc) elseif @pixelformula == 86 jc = cosh(1/jc) elseif @pixelformula == 87 jc = tanh(1/jc) elseif @pixelformula == 88 jc = cotanh(1/jc) elseif @pixelformula == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula == 102 jc = exp(2*jc) elseif @pixelformula == 103 jc = exp(-2*jc) elseif @pixelformula == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula == 111 jc = sin(jc)*exp(jc) elseif @pixelformula == 112 jc = cos(jc)*exp(jc) elseif @pixelformula == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula == 115 jc = sin(jc)*log(jc) elseif @pixelformula == 116 jc = cos(jc)*log(jc) elseif @pixelformula == 117 jc = sinh(jc)*log(jc) elseif @pixelformula == 118 jc = cosh(jc)*log(jc) elseif @pixelformula == 119 jc = exp(jc*jc) elseif @pixelformula == 120 jc = exp(-(jc*jc)) elseif @pixelformula == 121 jc = exp(1/(jc*jc)) elseif @pixelformula == 122 jc = exp(-1/(jc*jc)) elseif @pixelformula == 123 jc = abs(jc) elseif @pixelformula == 124 jc = round(jc) elseif @pixelformula == 125 jc = trunc(jc) elseif @pixelformula == 126 jc = ceil(jc) elseif @pixelformula == 127 jc = floor(jc) elseif @pixelformula == 128 jc = jc/log(jc) elseif @pixelformula == 129 jc = log(jc)/jc elseif @pixelformula == 130 jc = exp(jc)/jc elseif @pixelformula == 131 jc = exp(1/jc)/jc elseif @pixelformula == 132 jc = exp(jc*jc)/jc elseif @pixelformula == 133 jc = exp(1/(jc*jc))/jc elseif @pixelformula == 134 jc = jc * exp(jc*jc) elseif @pixelformula == 135 jc = jc * exp(1/(jc*jc)) elseif @pixelformula == 136 jc = exp(-(jc*jc))/jc elseif @pixelformula == 137 jc = exp(-1/(jc*jc))/jc elseif @pixelformula == 138 jc = jc * exp(-(jc*jc)) else ; @pixelformula == 139 jc = jc * exp(-1/(jc*jc)) endif ; @pixelformula = 1 endif ; @pixelformula != 0 if @pixelformula2 != 0 if @pixelformula2 == 1 jc = jc * jc elseif @pixelformula2 == 2 jc = jc * jc * jc elseif @pixelformula2 == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula2 == 4 jc = jc ^ @ppower2 elseif @pixelformula2 == 5 jc = 1/jc elseif @pixelformula2 == 6 jc = sqrt(jc) elseif @pixelformula2 == 7 jc = 1 / ( jc * jc ) elseif @pixelformula2 == 8 jc = log(jc) elseif @pixelformula2 == 9 jc = exp( jc) elseif @pixelformula2 == 10 jc = jc^jc elseif @pixelformula2 == 11 jc = sin( jc ) elseif @pixelformula2 == 12 jc = cos( jc ) elseif @pixelformula2 == 13 jc = tan( jc ) elseif @pixelformula2 == 14 jc = asin( jc ) elseif @pixelformula2 == 15 jc = acos( jc ) elseif @pixelformula2 == 16 jc = atan( jc ) elseif @pixelformula2 == 17 jc = sinh( jc ) elseif @pixelformula2 == 18 jc = cosh( jc ) elseif @pixelformula2 == 19 jc = tanh( jc ) elseif @pixelformula2 == 20 jc = asinh( jc ) elseif @pixelformula2 == 21 jc = acosh( jc ) elseif @pixelformula2 == 22 jc = atanh( jc ) elseif @pixelformula2 == 23 jc = log( 1/jc ) elseif @pixelformula2 == 24 jc = log( log( jc )) elseif @pixelformula2 == 25 jc = exp( -jc ) elseif @pixelformula2 == 26 jc = exp( 1/jc ) elseif @pixelformula2 == 27 jc = jc^(-jc) elseif @pixelformula2 == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula2 == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula2 == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula2 == 31 jc = cotan( jc ) elseif @pixelformula2 == 32 jc = 1/cos( jc ) elseif @pixelformula2 == 33 jc = 1/sin( jc ) elseif @pixelformula2 == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula2 == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula2 == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula2 == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula2 == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula2 == 39 jc = log(-jc) elseif @pixelformula2 == 40 jc = 1/log( jc ) elseif @pixelformula2 == 41 jc = jc * log( jc ) elseif @pixelformula2 == 42 jc = sin( jc ) / jc elseif @pixelformula2 == 43 jc = cos( jc ) / jc elseif @pixelformula2 == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula2 == 45 jc = sin( jc^2 ) elseif @pixelformula2 == 46 jc = exp( -1/jc ) elseif @pixelformula2 == 47 jc = jc * exp( jc ) elseif @pixelformula2 == 48 jc = jc * exp( -jc ) elseif @pixelformula2 == 49 jc = jc * exp( 1/jc ) elseif @pixelformula2 == 50 jc = jc * exp( -1/jc ) elseif @pixelformula2 == 51 jc = jc * jc * jc elseif @pixelformula2 == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula2 == 53 jc = atan( 1 / jc ) elseif @pixelformula2 == 54 jc = acos( 1 / jc ) elseif @pixelformula2 == 55 jc = asin( 1 / jc ) elseif @pixelformula2 == 56 jc = tan( jc ) / jc elseif @pixelformula2 == 57 jc = cotan( jc ) / jc elseif @pixelformula2 == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula2 == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula2 == 60 jc = jc * sin( jc ) elseif @pixelformula2 == 61 jc = jc * cos( jc ) elseif @pixelformula2 == 62 jc = jc * tan( jc ) elseif @pixelformula2 == 63 jc = jc * cotan( jc ) elseif @pixelformula2 == 64 jc = jc/cos( jc ) elseif @pixelformula2 == 65 jc = jc/sin( jc ) elseif @pixelformula2 == 66 jc = sin( 1/jc ) elseif @pixelformula2 == 67 jc = cos( 1/jc ) elseif @pixelformula2 == 68 jc = tan( 1/jc ) elseif @pixelformula2 == 69 jc = cotan( 1/jc ) elseif @pixelformula2 == 70 jc = 1/cos( 1/jc ) elseif @pixelformula2 == 71 jc = 1/sin( 1/jc ) elseif @pixelformula2 == 72 jc = cotanh( jc ) elseif @pixelformula2 == 73 jc = 1/cosh( jc ) elseif @pixelformula2 == 74 jc = 1/sinh( jc ) elseif @pixelformula2 == 75 jc = atanh( 1/jc ) elseif @pixelformula2 == 76 jc = acosh( 1/jc ) elseif @pixelformula2 == 77 jc = asinh( 1/jc ) elseif @pixelformula2 == 78 jc = @coeffpa2 * jc^@exponentpa2 + @coeffpb2 * jc^@exponentpb2 + \ @coeffpc2 * jc^@exponentpc2 elseif @pixelformula2 == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula2 == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula2 == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula2 == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula2 == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula2 == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula2 == 85 jc = sinh(1/jc) elseif @pixelformula2 == 86 jc = cosh(1/jc) elseif @pixelformula2 == 87 jc = tanh(1/jc) elseif @pixelformula2 == 88 jc = cotanh(1/jc) elseif @pixelformula2 == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula2 == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula2 == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula2 == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula2 == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula2 == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula2 == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula2 == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula2 == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula2 == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula2 == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula2 == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula2 == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula2 == 102 jc = exp(2*jc) elseif @pixelformula2 == 103 jc = exp(-2*jc) elseif @pixelformula2 == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula2 == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula2 == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula2 == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula2 == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula2 == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula2 == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula2 == 111 jc = sin(jc)*exp(jc) elseif @pixelformula2 == 112 jc = cos(jc)*exp(jc) elseif @pixelformula2 == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula2 == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula2 == 115 jc = sin(jc)*log(jc) elseif @pixelformula2 == 116 jc = cos(jc)*log(jc) elseif @pixelformula2 == 117 jc = sinh(jc)*log(jc) elseif @pixelformula2 == 118 jc = cosh(jc)*log(jc) elseif @pixelformula2 == 119 jc = exp(jc*jc) elseif @pixelformula2 == 120 jc = exp(-(jc*jc)) elseif @pixelformula2 == 121 jc = exp(1/(jc*jc)) elseif @pixelformula2 == 122 jc = exp(-1/(jc*jc)) elseif @pixelformula2 == 123 jc = abs(jc) elseif @pixelformula2 == 124 jc = round(jc) elseif @pixelformula2 == 125 jc = trunc(jc) elseif @pixelformula2 == 126 jc = ceil(jc) elseif @pixelformula2 == 127 jc = floor(jc) elseif @pixelformula2 == 128 jc = jc/log(jc) elseif @pixelformula2 == 129 jc = log(jc)/jc elseif @pixelformula2 == 130 jc = exp(jc)/jc elseif @pixelformula2 == 131 jc = exp(1/jc)/jc elseif @pixelformula2 == 132 jc = exp(jc*jc)/jc elseif @pixelformula2 == 133 jc = exp(1/(jc*jc))/jc elseif @pixelformula2 == 134 jc = jc * exp(jc*jc) elseif @pixelformula2 == 135 jc = jc * exp(1/(jc*jc)) elseif @pixelformula2 == 136 jc = exp(-(jc*jc))/jc elseif @pixelformula2 == 137 jc = exp(-1/(jc*jc))/jc elseif @pixelformula2 == 138 jc = jc * exp(-(jc*jc)) else ; @pixelformula2 == 139 jc = jc * exp(-1/(jc*jc)) endif ; @pixelformula2 = 1 endif ; @pixelformula2 != 0 if @pixelformula3 != 0 if @pixelformula3 == 1 jc = jc * jc elseif @pixelformula3 == 2 jc = jc * jc * jc elseif @pixelformula3 == 3 zextra = jc * jc jc = zextra * zextra elseif @pixelformula3 == 4 jc = jc ^ @ppower3 elseif @pixelformula3 == 5 jc = 1/jc elseif @pixelformula3 == 6 jc = sqrt(jc) elseif @pixelformula3 == 7 jc = 1 / ( jc * jc ) elseif @pixelformula3 == 8 jc = log(jc) elseif @pixelformula3 == 9 jc = exp( jc) elseif @pixelformula3 == 10 jc = jc^jc elseif @pixelformula3 == 11 jc = sin( jc ) elseif @pixelformula3 == 12 jc = cos( jc ) elseif @pixelformula3 == 13 jc = tan( jc ) elseif @pixelformula3 == 14 jc = asin( jc ) elseif @pixelformula3 == 15 jc = acos( jc ) elseif @pixelformula3 == 16 jc = atan( jc ) elseif @pixelformula3 == 17 jc = sinh( jc ) elseif @pixelformula3 == 18 jc = cosh( jc ) elseif @pixelformula3 == 19 jc = tanh( jc ) elseif @pixelformula3 == 20 jc = asinh( jc ) elseif @pixelformula3 == 21 jc = acosh( jc ) elseif @pixelformula3 == 22 jc = atanh( jc ) elseif @pixelformula3 == 23 jc = log( 1/jc ) elseif @pixelformula3 == 24 jc = log( log( jc )) elseif @pixelformula3 == 25 jc = exp( -jc ) elseif @pixelformula3 == 26 jc = exp( 1/jc ) elseif @pixelformula3 == 27 jc = jc^(-jc) elseif @pixelformula3 == 28 zextra = sin( jc ) jc = zextra * zextra elseif @pixelformula3 == 29 zextra = cos( jc ) jc = zextra * zextra elseif @pixelformula3 == 30 zextra = tan( jc ) jc = zextra * zextra elseif @pixelformula3 == 31 jc = cotan( jc ) elseif @pixelformula3 == 32 jc = 1/cos( jc ) elseif @pixelformula3 == 33 jc = 1/sin( jc ) elseif @pixelformula3 == 34 zextra = cotan( jc ) jc = zextra * zextra elseif @pixelformula3 == 35 zextra = 1/cos( jc ) jc = zextra * zextra elseif @pixelformula3 == 36 zextra = 1/sin( jc ) jc = zextra * zextra elseif @pixelformula3 == 37 zextra = jc^(jc) jc = jc^zextra elseif @pixelformula3 == 38 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif @pixelformula3 == 39 jc = log(-jc) elseif @pixelformula3 == 40 jc = 1/log( jc ) elseif @pixelformula3 == 41 jc = jc * log( jc ) elseif @pixelformula3 == 42 jc = sin( jc ) / jc elseif @pixelformula3 == 43 jc = cos( jc ) / jc elseif @pixelformula3 == 44 jc = sin( jc ) * cos( jc ) elseif @pixelformula3 == 45 jc = sin( jc^2 ) elseif @pixelformula3 == 46 jc = exp( -1/jc ) elseif @pixelformula3 == 47 jc = jc * exp( jc ) elseif @pixelformula3 == 48 jc = jc * exp( -jc ) elseif @pixelformula3 == 49 jc = jc * exp( 1/jc ) elseif @pixelformula3 == 50 jc = jc * exp( -1/jc ) elseif @pixelformula3 == 51 jc = jc * jc * jc elseif @pixelformula3 == 52 jc = 1 / ( jc * jc * jc ) elseif @pixelformula3 == 53 jc = atan( 1 / jc ) elseif @pixelformula3 == 54 jc = acos( 1 / jc ) elseif @pixelformula3 == 55 jc = asin( 1 / jc ) elseif @pixelformula3 == 56 jc = tan( jc ) / jc elseif @pixelformula3 == 57 jc = cotan( jc ) / jc elseif @pixelformula3 == 58 jc = 1 / ( jc * cos( jc )) elseif @pixelformula3 == 59 jc = 1 / ( jc * sin( jc )) elseif @pixelformula3 == 60 jc = jc * sin( jc ) elseif @pixelformula3 == 61 jc = jc * cos( jc ) elseif @pixelformula3 == 62 jc = jc * tan( jc ) elseif @pixelformula3 == 63 jc = jc * cotan( jc ) elseif @pixelformula3 == 64 jc = jc/cos( jc ) elseif @pixelformula3 == 65 jc = jc/sin( jc ) elseif @pixelformula3 == 66 jc = sin( 1/jc ) elseif @pixelformula3 == 67 jc = cos( 1/jc ) elseif @pixelformula3 == 68 jc = tan( 1/jc ) elseif @pixelformula3 == 69 jc = cotan( 1/jc ) elseif @pixelformula3 == 70 jc = 1/cos( 1/jc ) elseif @pixelformula3 == 71 jc = 1/sin( 1/jc ) elseif @pixelformula3 == 72 jc = cotanh( jc ) elseif @pixelformula3 == 73 jc = 1/cosh( jc ) elseif @pixelformula3 == 74 jc = 1/sinh( jc ) elseif @pixelformula3 == 75 jc = atanh( 1/jc ) elseif @pixelformula3 == 76 jc = acosh( 1/jc ) elseif @pixelformula3 == 77 jc = asinh( 1/jc ) elseif @pixelformula3 == 78 jc = @coeffpa3 * jc^@exponentpa3 + @coeffpb3 * jc^@exponentpb3 + \ @coeffpc3 * jc^@exponentpc3 elseif @pixelformula3 == 79 zextra = sinh(#z) jc = zextra * zextra elseif @pixelformula3 == 80 zextra = cosh( jc ) jc = zextra * zextra elseif @pixelformula3 == 81 zextra = tanh(jc) jc = zextra * zextra elseif @pixelformula3 == 82 zextra = cotanh( jc ) jc = zextra * zextra elseif @pixelformula3 == 83 zextra = (1,0)/cosh(jc) jc = zextra * zextra elseif @pixelformula3 == 84 zextra = (1,0) / sinh( jc ) jc = zextra * zextra elseif @pixelformula3 == 85 jc = sinh(1/jc) elseif @pixelformula3 == 86 jc = cosh(1/jc) elseif @pixelformula3 == 87 jc = tanh(1/jc) elseif @pixelformula3 == 88 jc = cotanh(1/jc) elseif @pixelformula3 == 89 jc = (1,0)/cosh(1/jc) elseif @pixelformula3 == 90 jc = (1,0)/sinh(1/jc) elseif @pixelformula3 == 91 jc = sin( jc ) * tan(jc) elseif @pixelformula3 == 92 jc = sinh(jc) * tanh(jc) elseif @pixelformula3 == 93 jc = sinh(jc) * cosh(jc) elseif @pixelformula3 == 94 ztemp = sinh(jc), zextra = cosh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula3 == 95 ztemp = sin(jc), zextra = cos(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula3 == 96 zextra = 1/jc jc = sin(zextra)*cos(zextra) elseif @pixelformula3 == 97 zextra = sin( 1/jc ) jc = zextra*zextra elseif @pixelformula3 == 98 jc = sin(jc) * cos(1/jc) elseif @pixelformula3 == 99 jc = sin(jc) * sin(1/jc) elseif @pixelformula3 == 100 zextra = log(jc) jc = zextra*zextra elseif @pixelformula3 == 101 jc = sin(jc) * sin(2*jc) elseif @pixelformula3 == 102 jc = exp(2*jc) elseif @pixelformula3 == 103 jc = exp(-2*jc) elseif @pixelformula3 == 104 zextra = 1/jc jc = sinh(zextra)*cosh(zextra) elseif @pixelformula3 == 105 zextra = sinh( 1/jc ) jc = zextra*zextra elseif @pixelformula3 == 106 jc = sinh(jc) * cosh(1/jc) elseif @pixelformula3 == 107 jc = sinh(jc) * sinh(1/jc) elseif @pixelformula3 == 108 jc = sin(jc) * sinh(jc) elseif @pixelformula3 == 109 jc = sin(jc) * cosh(jc) elseif @pixelformula3 == 110 zextra = sin(jc), ztemp = sinh(jc) jc = ztemp*ztemp*zextra*zextra elseif @pixelformula3 == 111 jc = sin(jc)*exp(jc) elseif @pixelformula3 == 112 jc = cos(jc)*exp(jc) elseif @pixelformula3 == 113 jc = sinh(jc)*exp(jc) elseif @pixelformula3 == 114 jc = cosh(jc)*exp(jc) elseif @pixelformula3 == 115 jc = sin(jc)*log(jc) elseif @pixelformula3 == 116 jc = cos(jc)*log(jc) elseif @pixelformula3 == 117 jc = sinh(jc)*log(jc) elseif @pixelformula3 == 118 jc = cosh(jc)*log(jc) elseif @pixelformula3 == 119 jc = exp(jc*jc) elseif @pixelformula3 == 120 jc = exp(-(jc*jc)) elseif @pixelformula3 == 121 jc = exp(1/(jc*jc)) elseif @pixelformula3 == 122 jc = exp(-1/(jc*jc)) elseif @pixelformula3 == 123 jc = abs(jc) elseif @pixelformula3 == 124 jc = round(jc) elseif @pixelformula3 == 125 jc = trunc(jc) elseif @pixelformula3 == 126 jc = ceil(jc) elseif @pixelformula3 == 127 jc = floor(jc) elseif @pixelformula3 == 128 jc = jc/log(jc) elseif @pixelformula3 == 129 jc = log(jc)/jc elseif @pixelformula3 == 130 jc = exp(jc)/jc elseif @pixelformula3 == 131 jc = exp(1/jc)/jc elseif @pixelformula3 == 132 jc = exp(jc*jc)/jc elseif @pixelformula3 == 133 jc = exp(1/(jc*jc))/jc elseif @pixelformula3 == 134 jc = jc * exp(jc*jc) elseif @pixelformula3 == 135 jc = jc * exp(1/(jc*jc)) elseif @pixelformula3 == 136 jc = exp(-(jc*jc))/jc elseif @pixelformula3 == 137 jc = exp(-1/(jc*jc))/jc elseif @pixelformula3 == 138 jc = jc * exp(-(jc*jc)) else ; @pixelformula3 == 139 jc = jc * exp(-1/(jc*jc)) endif ; @pixelformula3 = 1 endif ; @pixelformula3 != 0 loop: iter = iter + 1 ztemp = z if @mode == 0 z = jc * iter elseif @mode == 1 z = jc * iter z = z + ztemp elseif @mode == 2 z = jc * iter z = (z + ztemp)/iter elseif @mode == 3 z = (jc * iter) + (ztemp/iter) else z = jc endif ; @mode if @flavor == 1 z = z + #pixel elseif @flavor == 2 z = z * #pixel elseif @flavor == 3 z = z + #pixel*ztemp elseif @flavor == 4 z = z + (#pixel*ztemp)/iter elseif @flavor == 5 z = #pixel*z - #pixel endif ; @flavor if @grid z = (real(z) % @modulus) + (flip(imag(z) % @modulus)) endif ; grid bailout: iter < @bailiter default: title = "Pixel" center = (0,0) maxiter = 100 method = multipass periodicity = 0 param bailiter caption = "Bailout Iteration" default = 2 min = 2 hint = "This is the number of iterations that the formula executes" endparam param mode caption = "Pixel Mode" enum = "A" "B" "C" "D" "raw pixel" default = 0 endparam param flavor caption = "Pixel Flavor" enum = "1" "2" "3" "4" "5" "6" default = 0 endparam param grid caption = "Enable Grid?" default = FALSE hint = "If enabled, then the pixel coordinates are repeated periodically \ according to the scale factor set by parameter 'Grid Modulus'" endparam param modulus caption = "Grid Modulus" default = 0.5 hint = "If parameter 'Enable Grid' is turned on, then this param sets the size \ of the grid" visible = @grid endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" "e^(p^2)" "e^(-(p^2))" "e^(1/p^2)" "e^(-1/p^2)" \ "abs(p)" "round(p)" "trunc(p)" \ "ceil(p)" "floor(p)" "p/log(p)" "log(p)/p" "(e^p)/p" "(e^(1/p))/p" \ "(e^(p^2))/p" "(e^(1/(p^2))/p" "p*e^(p^2)" "p*e^(1/(p^2))" \ "(e^(-p^2))/p" "(e^(-1/(p^2))/p" \ "p*e^(-p^2)" "p*e^(-1/(p^2))" default = 0 hint = "Pixel value can be initialized with this function. \ For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" visible = @pixelformula == "p^power" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula == "3-term polynomial" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula == "3-term polynomial" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula == "3-term polynomial" endparam param pixelformula2 caption = "Pix Formula 2" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" "e^(p^2)" "e^(-(p^2))" "e^(1/p^2)" "e^(-1/p^2)" \ "abs(p)" "round(p)" "trunc(p)" \ "ceil(p)" "floor(p)" "p/log(p)" "log(p)/p" "(e^p)/p" "(e^(1/p))/p" \ "(e^(p^2))/p" "(e^(1/(p^2))/p" "p*e^(p^2)" "p*e^(1/(p^2))" \ "(e^(-p^2))/p" "(e^(-1/(p^2))/p" \ "p*e^(-p^2)" "p*e^(-1/(p^2))" default = 0 hint = "This function is the second formula for pixel initialization. \ For 'p^power', set parameter 'Pix Power 2'; \ for '3-term polynomial', set 'Coeff Pa2', 'Exponent Pa2', 'Coeff Pb2', \ 'Exponent Pb2', 'Coeff Pc2', 'Exponent Pc2'. 'p' results in no 2nd function" endparam param ppower2 caption = "Pix Power 2" default = (5,0) hint = "This is the power used if parameter \ 'Pix Formula 2' is set to 'p^power'" visible = @pixelformula2 == "p^power" endparam param coeffpa2 caption = "Coeff Pa2" default = (1,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula2 == "3-term polynomial" endparam param exponentpa2 caption = "Exponent Pa2" default = (6,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula2 == "3-term polynomial" endparam param coeffpb2 caption = "Coeff Pb2" default = (-1,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula2 == "3-term polynomial" endparam param exponentpb2 caption = "Exponent Pb2" default = (4,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula2 == "3-term polynomial" endparam param coeffpc2 caption = "Coeff Pc2" default = (1,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula2 == "3-term polynomial" endparam param exponentpc2 caption = "Exponent Pc2" default = (2,0) hint = "If 'Pix Formula 2' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula2 == "3-term polynomial" endparam param pixelformula3 caption = "Pix Formula 3" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" \ "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" "e^(p^2)" "e^(-(p^2))" "e^(1/p^2)" "e^(-1/p^2)" \ "abs(p)" "round(p)" "trunc(p)" \ "ceil(p)" "floor(p)" "p/log(p)" "log(p)/p" "(e^p)/p" "(e^(1/p))/p" \ "(e^(p^2))/p" "(e^(1/(p^2))/p" "p*e^(p^2)" "p*e^(1/(p^2))" \ "(e^(-p^2))/p" "(e^(-1/(p^2))/p" \ "p*e^(-p^2)" "p*e^(-1/(p^2))" default = 0 hint = "This function is the third formula for pixel initialization. \ For 'p^power', set parameter 'Pix Power 3'; \ for '3-term polynomial', set 'Coeff Pa3', 'Exponent Pa3', 'Coeff Pb3', \ 'Exponent Pb3', 'Coeff Pc3', 'Exponent Pc3'. 'p' results in no 3rd function" endparam param ppower3 caption = "Pix Power 3" default = (5,0) hint = "This is the power used if parameter \ 'Pix Formula 3' is set to 'p^power'" visible = @pixelformula3 == "p^power" endparam param coeffpa3 caption = "Coeff Pa3" default = (1,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 1st term" visible = @pixelformula3 == "3-term polynomial" endparam param exponentpa3 caption = "Exponent Pa3" default = (6,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the power \ of the 1st term" visible = @pixelformula3 == "3-term polynomial" endparam param coeffpb3 caption = "Coeff Pb3" default = (-1,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" visible = @pixelformula3 == "3-term polynomial" endparam param exponentpb3 caption = "Exponent Pb3" default = (4,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the power \ of the 2nd term" visible = @pixelformula3 == "3-term polynomial" endparam param coeffpc3 caption = "Coeff Pc3" default = (1,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" visible = @pixelformula3 == "3-term polynomial" endparam param exponentpc3 caption = "Exponent Pc3" default = (2,0) hint = "If 'Pix Formula 3' is set to '3-term polynomial', this is the power \ of the 3rd term" visible = @pixelformula3 == "3-term polynomial" endparam }