class OM_MunsterJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return exp(@mp1*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz)+@c endfunc default: title="Munster J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1.25,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MunsterM(common.ulb:DivergentFormula) { complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) return @mp1*pz^2*(pz-@pf(fPixel))/(1-@pf(fPixel)*pz)+@mp2 endfunc default: title="Munster M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=(-2.75,0) endparam param @mp2 caption="Munster Parameter 2" default=(0.5,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_WhittakerErratum1(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) return @fn2(pz-0.5*@p1*(pz^@p3-@p4)*(2-@p2*(pz^@p3-@p4))) endfunc default: title="Whittaker Erratum 1" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Whittaker Parameter 1" default=(-0.11,0) endparam param p2 caption="Whittaker Parameter 1" default=(1,0) endparam param p3 caption="Exponent" default=(4,0) endparam param p4 caption="Constant" default=(1,0) endparam func sf caption="Start function" default=ident() endfunc func fn2 caption="Whittaker Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_WhittakerErratum2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return fn2(pz-0.5*@p1*((pz-@p3)*(pz-@p4))*(2-@p2*((pz-@p3)*(pz-@p4)))) endfunc default: title="Whittaker Erratum 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="WE Parameter 1" default=(1,0) endparam param p2 caption="WE Parameter 2" default=(1.6,0) endparam param p3 caption="WE Parameter 3" default=(1,0) endparam param p4 caption="WE Parameter 4" default=(1,0) endparam func sf caption="Start function" default=ident() endfunc func fn2 caption="WE Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_IFB3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) if real(fn3(pz))<@p4 pz=pz*conj(@p1)+@p2 elseif @p5<=real(fn3(pz)) pz=pz*flip(@p1)+@p3 endif return pz endfunc default: title="IFB 3" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(0.9,-0.9) endparam param p2 caption="IFB Parameter a2" default=(1,0.5) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB11(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(4*pz+(1.5,-2.5)) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) float b=imag(fn3(pz)) if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sin(@p1)+@p2 endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*acosh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*tanh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*cos(@p1)+@p11 endif return pz endfunc default: title="IFB 11" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(1,-0.75) endparam param p2 caption="IFB Parameter a2" default=(-0.37,2.68) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p9 caption="IFB Parameter a4" default=(1,0) endparam param p11 caption="IFB Parameter a5" default=(1,0) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB17(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) if a<@p4 pz=pz*@p1+@p2 endif if @p5<=a pz=pz*@p1+@p3 endif if a<@p8 pz=pz*flip(@p1)+@p9 endif if @p10<=a pz=pz*acos(@p1)+@p11 endif return pz endfunc default: title="IFB 17" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(1.3,0) endparam param p2 caption="IFB Parameter a2" default=(1,0.5) endparam param p3 caption="IFB Parameter a3" default=(0,-0.5) endparam param p9 caption="IFB Parameter a4" default=(1,0) endparam param p11 caption="IFB Parameter a5" default=(1,0) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(2*pz+(1,1)) endfunc complex func Iterate(complex pz) float a=real(fn3(pz)) if a<@p4 pz=pz*flip(@p1)+@p2 endif if @p5<=a pz=pz*conj(@p1)+@p3 endif if a<@p8 pz=pz*exp(@p1)+@p9 endif if @p10<=a pz=pz*recip(@p1)+@p11 endif return pz endfunc default: title="IFB 7" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="IFB Parameter a1" default=(0.16,-1.41) endparam param p2 caption="IFB Parameter a2" default=(-1.9,0.96) endparam param p3 caption="IFB Parameter a3" default=(-1.96,0.31) endparam param p9 caption="IFB Parameter a4" default=(1.58,1.37) endparam param p11 caption="IFB Parameter a5" default=(2.41,2.83) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam func sf caption="Start function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Metabrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(0.375*pz) endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @pow==0 return ((((pz^2+@c)*(pz^2+@c)+(@c^2+pz))*((pz^2+@c)*(pz^2+@c)+(@c^2+pz))+((@c^2+pz)*(@c^2+pz)+(pz^2+@c)))\ *(((pz^2+@c)*(pz^2+@c)+(@c^2+pz))*((pz^2+@c)*(pz^2+@c)+(@c^2+pz))+((@c^2+pz)*(@c^2+pz)+(pz^2+@c)))\ +(((@c^2+pz)*(@c^2+pz)+(pz^2+@c))*((@c^2+pz)*(@c^2+pz)+(pz^2+@c))+((pz^2+@c)*(pz^2+@c)+(@c^2+pz)))) elseif @pow==1 return ((((pz^3+@c)*(pz^3+@c)+(@c^3+pz))*((pz^3+@c)*(pz^3+@c)+(@c^3+pz))+((@c^3+pz)*(@c^3+pz)+(pz^3+@c)))\ *(((pz^3+@c)*(pz^3+@c)+(@c^3+pz))*((pz^3+@c)*(pz^3+@c)+(@c^3+pz))+((@c^3+pz)*(@c^3+pz)+(pz^3+@c)))\ +(((@c^3+pz)*(@c^3+pz)+(pz^3+@c))*((@c^3+pz)*(@c^3+pz)+(pz^3+@c))+((pz^3+@c)*(pz^3+@c)+(@c^3+pz)))) else return ((((pz^4+@c)*(pz^4+@c)+(@c^4+pz))*((pz^4+@c)*(pz^4+@c)+(@c^4+pz))+((@c^4+pz)*(@c^4+pz)+(pz^4+@c)))\ *(((pz^4+@c)*(pz^4+@c)+(@c^4+pz))*((pz^4+@c)*(pz^4+@c)+(@c^4+pz))+((@c^4+pz)*(@c^4+pz)+(pz^4+@c)))\ +(((@c^4+pz)*(@c^4+pz)+(pz^4+@c))*((@c^4+pz)*(@c^4+pz)+(pz^4+@c))+((pz^4+@c)*(pz^4+@c)+(@c^4+pz)))) endif endfunc default: title="Metabrot" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param c caption="Seed" default=(-0.1,0) endparam param pow caption="Exponent" enum="2""3""4" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Schröder(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@sp1*(pz^@pow-@sp2)*(@pow*pz^(@pow-1))/((@pow*pz^(@pow-1))^2-(pz^@pow-@sp2)*((@pow-1)*@pow*pz^(@pow-2)))+@c endfunc default: title="Schröder" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Whittaker1(common.ulb:ConvergentFormula) { ;Whittaker's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@wp1*(((pz^@pow-@wp2)/(@pow*pz^(@pow-1)))/2)*(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1))))+@c endfunc default: title="Whittaker 1" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Whittaker Parameter 1" default=(1,0) endparam param wp2 caption="Whittaker Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Whittaker2(common.ulb:ConvergentFormula) { ;2nd Whittaker's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@wp1*(((pz^@pow-@wp2)/(@pow*pz^(@pow-1)))/4)*(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))\ /sqr(@pow*pz^(@pow-1)))+((4+2*((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1))))\ /(2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1)))*\ (2-((pz^@pow-@wp2)*((@pow-1)*@pow*pz^(@pow-2))/sqr(@pow*pz^(@pow-1)))))))+@c endfunc default: title="Whittaker 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Whittaker Parameter 1" default=(1,0) endparam param wp2 caption="Whittaker Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Munster6J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 if @v==0 return exp(1i*@mp1)*pz^2*(@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2)+@c else return exp(2/(1i*(@mp1+0.318)))*pz^2*((@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2))^0.5+@c endif endfunc default: title="Munster 6 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster6M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 if @v==0 return exp(1i*@mp1)*pz^2*(@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2)+@pf(fPixel) else return exp(2/(1i*(@mp1+0.318)))*pz^2*((@mp2*3/2-pz^2)/(1-@mp2*3*pz^2/2))^0.5+@pf(fPixel) endif endfunc default: title="Munster 6 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster7J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz-0.9) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^3*((1-conj(@mp2)*pz)/(pz-@mp2))*((1-conj(@mp3)*pz)/(pz-@mp3))+@c endfunc default: title="Munster 7 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(-0.67,0) endparam param mp3 caption="Munster Parameter 3" default=(-0.5,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster7M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^3*((1-conj(@mp2)*pz)/(pz-@mp2))*((1-conj(@mp3)*pz)/(pz-@mp3))+@pf(fPixel) endfunc default: title="Munster 7 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(0.75,0) endparam param mp3 caption="Munster Parameter 3" default=(-0.5,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Schröder2(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for various expressions of z public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 f=(pz^2+pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==1 f=tan(pz)^@pow-@sp2 f1=@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==2 f=pz^@pow+tan(pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*pz^(@pow-2)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==3 f=sin(pz)^@pow-@sp2 f1=@pow*cos(pz)*sin(pz)^(@pow-1) f2=@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1) elseif @v==4 f=(pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1)\ +@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==5 f=pz^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)\ +2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==7 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==8 f=(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)\ +@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==9 f=pz^@pow+(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*\ (pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==10 f=(pz^3-pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)\ *(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==11 f=pz^@pow+(pz^3-pz^2+pz)^@pow+tan(pz)^@pow+sin(pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))\ *tan(pz)^@pow+@pow*cos(pz)*sin(pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)\ *(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))\ ^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1)+@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==12 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==13 f=-pz^@pow+pz^(@pow-1)-pz^(@pow-2)+pz^(@pow-3)-@sp2 f1=-@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3)+(@pow-3)*pz^(@pow-4) f2=-(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-4)*(@pow-3)*pz^(@pow-5) elseif @v==14 f=(pz+1/pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2) else f=(pz+1/pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) endif return pz-@sp1*f*f1/(f1^2-f*f2)+@c endfunc default: title="Schröder 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="(z^2+z)^p=c""tan(z)^p=c""z^p+tan(z)^p=c""sin(z)^p=c""(z^2+z)^p+tan(z)^p=c""z^p+(z^2+z)^p=c"\ "z^p+z^(p-1)+z^(p-2)=c""z^p+z^(p-1)+z^(p-2)+(z^2+z)^p=c""(z^3-z^2+z)^p=c""z^p+(z^3-z^2+z)^p=c"\ "(z^3-z^2+z)^p+tan(z)^p=c""z^p+(z^3-z^2+z)^p+tan(z)^p+sin(z)^p+(z^2+z)^p=c""z^p-z^(p-1)-z^(p-2)=c"\ "-z^p+z^(p-1)-z^(p-2)+z^(p-3)=c""(z+1/z)^p=c""(z+1/z)^p+(z^2+z)^p=c" endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Schrödernova2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 f=(pz^2+pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==1 f=tan(pz)^@pow-@sp2 f1=@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==2 f=pz^@pow+tan(pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*pz^(@pow-2)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==3 f=sin(pz)^@pow-@sp2 f1=@pow*cos(pz)*sin(pz)^(@pow-1) f2=@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1) elseif @v==4 f=(pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1)\ +@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==5 f=pz^@pow+(pz^2+pz)^@pow-(@sp2-1.85) f1=@pow*pz^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)\ +2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==7 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==8 f=(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)\ +@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==9 f=pz^@pow+(pz^3-pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*\ (pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1) elseif @v==10 f=(pz^3-pz^2+pz)^@pow+tan(pz)^@pow-@sp2 f1=@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))*tan(pz)^@pow f2=(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)*(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)\ *(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1) elseif @v==11 f=pz^@pow+(pz^3-pz^2+pz)^@pow+tan(pz)^@pow+sin(pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*pz^(@pow-1)+@pow*(3*pz^2-2*pz+1)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))*(1/cos(pz))\ *tan(pz)^@pow+@pow*cos(pz)*sin(pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-1)*@pow*(3*pz^2-2*pz+1)*(pz^2+pz*(2*pz-1)-pz+1)\ *(pz*(pz^2-pz+1))^(@pow-2)+@pow*(6*pz-2)*(pz*(pz^2-pz+1))^(@pow-1)+@pow*(1/sin(pz))\ ^2*tan(pz)^@pow*(@pow*(1/cos(pz))^2+tan(pz)^2-1)+@pow*sin(pz)^@pow*((@pow-1)*cotan(pz)^2-1)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) elseif @v==12 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@sp2 f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4) elseif @v==13 f=-pz^@pow+pz^(@pow-1)-pz^(@pow-2)+pz^(@pow-3)-(@sp2-0.35) f1=-@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3)+(@pow-3)*pz^(@pow-4) f2=-(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*Pz^(@pow-4)\ +(@pow-4)*(@pow-3)*pz^(@pow-5) elseif @v==14 f=(pz+1/pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2) else f=(pz+1/pz)^@pow+(pz^2+pz)^@pow-@sp2 f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1)+@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) f2=2*@pow*(pz+1/pz)^(@pow-1)/pz^3+(@pow-1)*@pow*(1-1/pz^2)^2*(pz+1/pz)^(@pow-2)\ +(@pow-1)*@pow*(2*pz+1)^2*(pz*(pz+1))^(@pow-2)+2*@pow*(pz*(pz+1))^(@pow-1) endif return pz-@sp1*f*f1/(f1^2-f*f2)+@pf(fPixel) endfunc default: title="Schrödernova 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="(z^2+z)^p=c""tan(z)^p=c""z^p+tan(z)^p=c""sin(z)^p=c""(z^2+z)^p+tan(z)^p=c""z^p+(z^2+z)^p=c"\ "z^p+z^(p-1)+z^(p-2)=c""z^p+z^(p-1)+z^(p-2)+(z^2+z)^p=c""(z^3-z^2+z)^p=c""z^p+(z^3-z^2+z)^p=c"\ "(z^3-z^2+z)^p+tan(z)^p=c""z^p+(z^3-z^2+z)^p+tan(z)^p+sin(z)^p+(z^2+z)^p=c""z^p-z^(p-1)-z^(p-2)=c"\ "-z^p+z^(p-1)-z^(p-2)+z^(p-3)=c""(z+1/z)^p=c""(z+1/z)^p+(z^2+z)^p=c" endparam param sp1 caption="Schrödernova Parameter 1" default=(0.7,0) endparam param sp2 caption="Schrödernova Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Munster15J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz-0.35i) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(-@mp2-1i*pz-1i*pz^3)/(@mp2+pz^2+1i*pz^3)+@c endfunc default: title="Munster 15 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=3.185 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster15M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(-@mp2-1i*pz-1i*pz^3)/(@mp2+pz^2+1i*pz^3)+@pf(fPixel) endfunc default: title="Munster 15 M" int param version caption="Version" default=100 visible=@version<100 endparam param mp1 caption="Munster Parameter 1" default=1.57 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB61(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return fn4(2*pz) endfunc complex func Iterate(complex pz) pz=@p3*conj(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="2" if real(fn3(log(pz)))>@p6+0.74737 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="3" if real(fn3(sinh(pz)))>@p6-0.33 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="4" if real(fn3(pz))+imag(fn3(pz))>@p6-0.763 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="5" if real(fn3(conj(pz)))+imag(fn3(conj(pz)))>@p6-2.09 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="6" if real(fn3(cabs(pz)))+imag(fn3(cabs(pz)))>@p6+5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="7" if real(fn3(abs(pz)))+imag(fn3(abs(pz)))>@p6+5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="8" if real(fn3(sqrt(pz)))+imag(fn3(sqrt(pz)))>@p6+0.24 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="9" if real(fn3(cotanh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.24 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="10" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6-0.95 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="11" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.91 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="12" if real(fn3(acosh(pz)))+imag(fn3(acosh(pz)))>@p6+3.446 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="13" if real(fn3(asinh(pz)))+imag(fn3(asinh(pz)))>@p6-1 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="14" if real(fn3(sin(pz)))+imag(fn3(sin(pz)))>@p6-0.27 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="15" if real(fn3(trunc(pz)))+imag(fn3(trunc(pz)))>@p6-0.5 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="16" if real(fn3(pz))+imag(fn3(recip(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="17" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="18" if real(fn3(pz))+imag(fn3(log(pz)))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="19" if real(fn3(log(pz)))+imag(fn3(flip(pz)))>@p6 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="20" if real(fn3(log(pz)))+imag(fn3(atanh(pz)))>@p6+1 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="21" if real(fn3(log(pz)))+imag(fn3(atan(pz)))>@p6+2 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif elseif @V=="22" if real(fn3(log(pz)))+imag(fn3(tan(pz)))>@p6+1.23 pz=(pz-@p1)*fn1(cotanh(@p5)) else pz=(pz+@p2)*fn2(cabs(@p5)) endif endif return pz endfunc default: title="IFB 61" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param p5 caption="IFB Parameter 1" default=(0.982098,0.798412) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(0.87501,-0.559167) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MandelbrotExpPixtet(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz return @sf1(sqr(@sf2(pz))) endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*flip(conj(pz))+@pzp2 pz=pz^2+@pf2(@pf1(exp(fPixel))^@pf1(exp(fPixel)))+@mp pz=pz+@arp/@arf(pz) return pz endfunc default: title="Mandelbrot Exp Pixtet" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp caption="Mandelbrot Parameter" default=(0,0) endparam func sf1 caption="Start Function 1" default=ident() endfunc func sf2 caption="Start Function 2" default=ident() endfunc func pf1 caption="Pixel Function 1" default=ident() endfunc func pf2 caption="Pixel Function 2" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam func arf caption="Add Recip Function" default=ident() visible=@arp!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IFB66(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return fn4(2*pz) endfunc complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6+2.824 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="2" if real(fn3(abs(pz)))>@p6+1 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="3" if real(fn3(exp(pz)))>@p6+4.197 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="4" if real(fn3(sqrt(pz)))>@p6 +1.55 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="5" if real(fn3(cotanh(pz)))>@p6-0.02 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="6" if real(fn3(atan(pz)))>@p6+0.955 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="7" if real(fn3(tanh(pz)))>@p6+0.925 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="8" if real(fn3(asinh(pz)))>@p6+1.672 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="9" if real(fn3(asin(pz)))>@p6+1.153 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="10" if real(fn3(sinh(pz)))>@p6+1.85 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="11" if real(fn3(sin(pz)))>@p6+0.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="12" if real(fn3(recip(pz)))>@p6+0.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="13" if real(fn3(pz))+imag(fn3(trunc(pz)))>@p6+0.126 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="14" if real(fn3(pz))+imag(fn3(recip(pz)))>@p6+0.367 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="15" if real(fn3(pz))+imag(fn3(conj(pz)))>@p6+2.402 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="16" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+3.405 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="17" if real(fn3(pz))+imag(fn3(log(pz)))>@p6+2.5 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="18" if real(fn3(pz))+imag(fn3(sqrt(pz)))>@p6+1 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="19" if real(fn3(pz))+imag(fn3(cotanh(pz)))>@p6-0.827 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="20" if real(fn3(pz))+imag(fn3(cotan(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="21" if real(fn3(pz))+imag(fn3(atanh(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="22" if real(fn3(pz))+imag(fn3(tan(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="23" if real(fn3(pz))+imag(fn3(acosh(pz)))>@p6+2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="24" if real(fn3(pz))+imag(fn3(acos(pz)))>@p6+1.19 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="25" if real(fn3(pz))+imag(fn3(cos(pz)))>@p6+0.3 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="26" if real(fn3(pz))+imag(fn3(asinh(pz)))>@p6+2.729 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="27" if real(fn3(exp(pz)))+imag(fn3(exp(pz)))>@p6+5.595 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="28" if real(fn3(exp(pz)))+imag(fn3(log(pz)))>@p6+3 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="29" if real(fn3(exp(pz)))+imag(fn3(cotan(pz)))>@p6+0.9 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="30" if real(fn3(exp(pz)))+imag(fn3(atan(pz)))>@p6+3.537 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="31" if real(fn3(exp(pz)))+imag(fn3(cos(pz)))>@p6+4 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="32" if real(fn3(exp(pz)))+imag(fn3(trunc(pz)))>@p6+0.595 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="33" if real(fn3(log(pz)))+imag(fn3(flip(pz)))>@p6 -0.118 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="34" if real(fn3(sqrt(pz)))+imag(fn3(flip(pz)))>@p6+1.283 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="35" if real(fn3(sqrt(pz)))+imag(fn3(cotanh(pz)))>@p6+1.325 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="36" if real(fn3(sqrt(pz)))+imag(fn3(tanh(pz)))>@p6+1.283 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="37" if real(fn3(sqrt(pz)))+imag(fn3(recip(pz)))>@p6+1.657 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="38" if real(fn3(sqr(pz)))+imag(fn3(flip(pz)))>@p6+0.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="39" if real(fn3(cotanh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="40" if real(fn3(cotanh(pz)))+imag(fn3(atan(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="41" if real(fn3(cotanh(pz)))+imag(fn3(cos(pz)))>@p6+0.733 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="42" if real(fn3(cotanh(pz)))+imag(fn3(recip(pz)))>@p6+0.546 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="43" if real(fn3(cotan(pz)))+imag(fn3(flip(pz)))>@p6+1.376 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="44" if real(fn3(atanh(pz)))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="45" if real(fn3(atanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.244 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="46" if real(fn3(atanh(pz)))+imag(fn3(trunc(pz)))>@p6+0.182 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="47" if real(fn3(atanh(pz)))+imag(fn3(recip(pz)))>@p6-0.13 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="48" if real(fn3(atan(pz)))+imag(fn3(flip(pz)))>@p6+1.645 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="49" if real(fn3(atan(pz)))+imag(fn3(conj(pz)))>@p6+0.16 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="50" if real(fn3(atan(pz)))+imag(fn3(cabs(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="51" if real(fn3(atan(pz)))+imag(fn3(abs(pz)))>@p6+1.167 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="52" if real(fn3(atan(pz)))+imag(fn3(sqrt(pz)))>@p6+0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="53" if real(fn3(atan(pz)))+imag(fn3(cotanh(pz)))>@p6+0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="54" if real(fn3(atan(pz)))+imag(fn3(cotan(pz)))>@p6+0.171 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="55" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6+0.171 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="56" if real(fn3(atan(pz)))+imag(fn3(tanh(pz)))>@p6+0.358 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="57" if real(fn3(atan(pz)))+imag(fn3(cos(pz)))>@p6+0.176 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="58" if real(fn3(atan(pz)))+imag(fn3(asinh(pz)))>@p6+0.176 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="59" if real(fn3(atan(pz)))+imag(fn3(sin(pz)))>@p6+0.726 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="60" if real(fn3(atan(pz)))+imag(fn3(trunc(pz)))>@p6-0.021 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="61" if real(fn3(atan(pz)))+imag(fn3(recip(pz)))>@p6+0.747 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="62" if real(fn3(tanh(pz)))+imag(fn3(conj(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="63" if real(fn3(tanh(pz)))+imag(fn3(abs(pz)))>@p6+0.872 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="64" if real(fn3(tanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.675 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="65" if real(fn3(tanh(pz)))+imag(fn3(atan(pz)))>@p6+0.29 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="66" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6+0.992 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="67" if real(fn3(tanh(pz)))+imag(fn3(cos(pz)))>@p6+0.348 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="68" if real(fn3(tanh(pz)))+imag(fn3(trunc(pz)))>@p6-0.233 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="69" if real(fn3(tanh(pz)))+imag(fn3(recip(pz)))>@p6-0.565 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="70" if real(fn3(tan(pz)))+imag(fn3(flip(pz)))>@p6+1.179 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="71" if real(fn3(tan(pz)))+imag(fn3(floor(pz)))>@p6+0.141 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="72" if real(fn3(acosh(pz)))+imag(fn3(conj(pz)))>@p6+0.245 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="73" if real(fn3(acosh(pz)))+imag(fn3(abs(pz)))>@p6+1.2 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="74" if real(fn3(acosh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="75" if real(fn3(acosh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="76" if real(fn3(acosh(pz)))+imag(fn3(cotan(pz)))>@p6+0.764 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="77" if real(fn3(acosh(pz)))+imag(fn3(atanh(pz)))>@p6+0.224 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="78" if real(fn3(acosh(pz)))+imag(fn3(atan(pz)))>@p6+0.681 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="79" if real(fn3(acosh(pz)))+imag(fn3(tanh(pz)))>@p6+0.224 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="80" if real(fn3(acosh(pz)))+imag(fn3(tan(pz)))>@p6+0.868 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="81" if real(fn3(acosh(pz)))+imag(fn3(acosh(pz)))>@p6+0.868 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="82" if real(fn3(acosh(pz)))+imag(fn3(cos(pz)))>@p6+0.432 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="83" if real(fn3(acosh(pz)))+imag(fn3(asinh(pz)))>@p6+0.432 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="84" if real(fn3(acos(pz)))+imag(fn3(flip(pz)))>@p6+2.01 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="85" if real(fn3(cosh(pz)))+imag(fn3(flip(pz)))>@p6+2.01 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="86" if real(fn3(asinh(pz)))+imag(fn3(conj(pz)))>@p6+0.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="87" if real(fn3(asinh(pz)))+imag(fn3(cabs(pz)))>@p6+1.491 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="88" if real(fn3(asinh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.972 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="89" if real(fn3(asinh(pz)))+imag(fn3(atanh(pz)))>@p6+0.038 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="90" if real(fn3(asinh(pz)))+imag(fn3(acos(pz)))>@p6-0.004 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="91" if real(fn3(asinh(pz)))+imag(fn3(cos(pz)))>@p6+0.453 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="92" if real(fn3(asin(pz)))+imag(fn3(cabs(pz)))>@p6+1.18 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="93" if real(fn3(asin(pz)))+imag(fn3(tanh(pz)))>@p6-0.689 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="94" if real(fn3(asin(pz)))+imag(fn3(cos(pz)))>@p6+0.494 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="95" if real(fn3(asin(pz)))+imag(fn3(recip(pz)))>@p6+0.494 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="96" if real(fn3(sinh(pz)))+imag(fn3(ident(pz)))>@p6+1.407 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="97" if real(fn3(sinh(pz)))+imag(fn3(flip(pz)))>@p6+4.106 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="98" if real(fn3(sinh(pz)))+imag(fn3(abs(pz)))>@p6+2.445 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="99" if real(fn3(sinh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.618 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="100" if real(fn3(sinh(pz)))+imag(fn3(atanh(pz)))>@p6+0.66 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="101" if real(fn3(sinh(pz)))+imag(fn3(tanh(pz)))>@p6+0.369 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="102" if real(fn3(sinh(pz)))+imag(fn3(tan(pz)))>@p6+1.656 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="103" if real(fn3(sinh(pz)))+imag(fn3(acosh(pz)))>@p6+1.366 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="104" if real(fn3(sinh(pz)))+imag(fn3(asin(pz)))>@p6+0.556 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="105" if real(fn3(sinh(pz)))+imag(fn3(sinh(pz)))>@p6+0.556 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="106" if real(fn3(sinh(pz)))+imag(fn3(trunc(pz)))>@p6+2.113 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="107" if real(fn3(sin(pz)))+imag(fn3(flip(pz)))>@p6+3.151 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="108" if real(fn3(sin(pz)))+imag(fn3(sqrt(pz)))>@p6+0.743 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="109" if real(fn3(sin(pz)))+imag(fn3(cotanh(pz)))>@p6+0.971 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="110" if real(fn3(sin(pz)))+imag(fn3(cotan(pz)))>@p6+0.327 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="111" if real(fn3(sin(pz)))+imag(fn3(atan(pz)))>@p6+0.327 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="112" if real(fn3(sin(pz)))+imag(fn3(tanh(pz)))>@p6+0.659 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="113" if real(fn3(sin(pz)))+imag(fn3(acos(pz)))>@p6+0.119 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="114" if real(fn3(sin(pz)))+imag(fn3(cos(pz)))>@p6+0.306 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="115" if real(fn3(sin(pz)))+imag(fn3(trunc(pz)))>@p6-0.525 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="116" if real(fn3(sin(pz)))+imag(fn3(recip(pz)))>@p6+1.116 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="117" if real(fn3(round(pz)))+imag(fn3(flip(pz)))>@p6-0.421 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="118" if real(fn3(round(pz)))+imag(fn3(conj(pz)))>@p6+0.285 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="119" if real(fn3(round(pz)))+imag(fn3(abs(pz)))>@p6+2.361 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="120" if real(fn3(round(pz)))+imag(fn3(log(pz)))>@p6+3.462 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="121" if real(fn3(round(pz)))+imag(fn3(sqrt(pz)))>@p6+3.109 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="122" if real(fn3(round(pz)))+imag(fn3(cotan(pz)))>@p6+2.444 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="123" if real(fn3(round(pz)))+imag(fn3(atanh(pz)))>@p6+2.444 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="124" if real(fn3(round(pz)))+imag(fn3(atan(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="125" if real(fn3(round(pz)))+imag(fn3(tanh(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="126" if real(fn3(round(pz)))+imag(fn3(tan(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="127" if real(fn3(round(pz)))+imag(fn3(acosh(pz)))>@p6+2.03 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="128" if real(fn3(round(pz)))+imag(fn3(acos(pz)))>@p6+1.572 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="129" if real(fn3(round(pz)))+imag(fn3(cos(pz)))>@p6+1.033 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="130" if real(fn3(round(pz)))+imag(fn3(asinh(pz)))>@p6+3.047 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="131" if real(fn3(trunc(pz)))+imag(fn3(recip(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="132" if real(fn3(trunc(pz)))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="133" if real(fn3(trunc(pz)))+imag(fn3(atan(pz)))>@p6+0.332 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="134" if real(fn3(trunc(pz)))+imag(fn3(acos(pz)))>@p6+0.789 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="135" if real(fn3(trunc(pz)))+imag(fn3(cos(pz)))>@p6+0.789 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="136" if real(fn3(floor(pz)))+imag(fn3(log(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="137" if real(fn3(floor(pz)))+imag(fn3(sqrt(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="138" if real(fn3(floor(pz)))+imag(fn3(cotan(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="139" if real(fn3(floor(pz)))+imag(fn3(atanh(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="140" if real(fn3(floor(pz)))+imag(fn3(cos(pz)))>@p6+1.495 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="141" if real(fn3(ceil(pz)))+imag(fn3(recip(pz)))>@p6+2.865 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="142" if real(fn3(ceil(pz)))+imag(fn3(conj(pz)))>@p6+2.159 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="143" if real(fn3(ceil(pz)))+imag(fn3(sqrt(pz)))>@p6+3.364 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="144" if real(fn3(ceil(pz)))+imag(fn3(cotan(pz)))>@p6+1.267 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="145" if real(fn3(ceil(pz)))+imag(fn3(atanh(pz)))>@p6+1.267 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="146" if real(fn3(ceil(pz)))+imag(fn3(cos(pz)))>@p6+1.142 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif elseif @V=="147" if real(fn3(recip(pz)))+imag(fn3(cotan(pz)))>@p6+1.121 pz=(pz-@p1)*fn1(conj(abs(@p5))) else pz=(pz+@p2)*fn2(sqrt(flip(@p5))) endif endif return pz endfunc default: title="IFB 66" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96""97""98""99""100"\ "101""102""103""104""105""106""107""108""109""110"\ "111""112""113""114""115""116""117""118""119""120"\ "121""122""123""124""125""126""127""128""129""130"\ "131""132""133""134""135""136""137""138""139""140"\ "141""142""143""144""145""146""147" endparam param p5 caption="IFB Parameter 1" default=(0.45642,-0.84655) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.01,0.55) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster17M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @v==0 return @sp else return @sf(pz) endif endfunc private: complex fPixel complex func Iterate(complex pz) if @v==0 pz=(@pzp1+0.25)*pz+@pzp2+0.3 else pz=@pzp1*pz+@pzp2 endif if @v==0 || @v==1 return exp(1i*@mp1)*pz^2*(pz^3-pz+@pf(fPixel))/(pz^3-pz^2+@pf(fPixel))+@mp2 else return exp(1i*@mp1)*pz^2*(pz^3-pz+@mp2+1)/(pz^3-pz^2+@mp2+1)+@pf(fPixel) endif endfunc default: title="Munster 17 M" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2""3" endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(0,0) endparam param sp caption="Start Parameter" default=(0,0) visible=@v==0 endparam func sf caption="Start Function" default=ident() visible=@v==1 || @v==2 endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster17J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 return exp(1i*@mp1)*pz^2*(pz^3-pz+@mp2)/(pz^3-pz^2+@mp2)+@c endfunc default: title="Munster 17 J" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster12(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@p3*fn2(pz)+@p4 pz=pz+@p5/pz pz=pz+@p6*sqr(pz) if @Va=="None" pz=pz elseif @Va=="1" if |pz|<1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif pz=-conj(pz) elseif @Va=="3" if |pz|<1 pz=pz/|pz| endif pz=0.75*abs(pz) elseif @Va=="4" if |pz|>1 pz=pz/|pz| endif pz=cotanh(pz) elseif @Va=="5" if |pz|>1 pz=pz/|pz| endif pz=2*cosh(pz) elseif @Va=="6" pz=pz+sqr(pz^2/(pz+7)) elseif @Va=="7" if |pz|>1 pz=pz/|pz| endif pz=2*cos(pz) elseif @Va=="8" if |pz|>1 pz=pz/|pz| endif pz=0.75*recip(pz) elseif @Va=="9" pz=pz^2*(pz-4)/(-2.3+4*pz) elseif @Va=="10" pz=pz^2*tan((pz-4)/(-1+4*pz)) elseif @Va=="11" pz=pz^2*sinh((pz-4)/(-1+4*pz)) elseif @Va=="12" pz=pz^2*sin((pz-4)/(-1+4*pz)) elseif @Va=="13" pz=pz+0.855*cotan(pz) elseif @Va=="14" pz=flip((pz^2+1)/(2*pz))^2 elseif @Va=="15" pz=pz+0.3i/cosh(pz) elseif @Va=="16" pz=pz-0.337i/exp(pz) elseif @Va=="17" pz=pz+0.69i/cotanh(pz) elseif @Va=="18" pz=pz+0.35i/cotan(pz) elseif @Va=="19" pz=pz+0.25i/tan(pz) endif pz=exp(@p2*1i)*(cabs(@p1)/@p1)*pz^3*(fn3(pz)-@p1)/(1-conj(@p1)*pz) return pz endfunc default: title="Munster 12" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam func fn1 caption="Start Function" default=ident() endfunc param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19" endparam param p2 caption="Munster Parameter 1" default=0.0 endparam param p1 caption="Munster Parameter 2" default=(2,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="Munster Function" default=ident() endfunc param p5 caption="Add Recip Parameter" default=(0,0) endparam param p6 caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Grau/Diaz-Barrero(common.ulb:ConvergentFormula) { ;Rootfinding method developed by Grau and Diaz-Barrero ;https://file.scirp.org/pdf/AM20100300002_25669189.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) b=a-@p2*(a^@pow-@p4)*(pz^@pow-@p4)/((@pow*pz^(@pow-1))*((pz^@pow-@p4)-2*(a^@pow-@p4))) pz=b-@p3*(b^@pow-@p4)*(pz^@pow-@p4)/((@pow*pz^(@pow-1))*((@pow*pz^(@pow-1))-2*(a^@pow-@p4))) return pz endfunc default: title="Grau/Diaz-Barrero" int param v_SFormula caption="Version (SFormula)" default=100 visible=@v_SFormula<100 endparam func fn1 caption="Start Function" default=ident() endfunc param p1 caption="G/D-B Parameter 1" default=(1,0) endparam param p2 caption="G/D-B Parameter 2" default=(1,0) endparam param p3 caption="G/D-B Parameter 3" default=(1,0) endparam param p4 caption="G/D-B Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Schrödernova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) return pz-@sp1*(pz^@pow-@sp2)*(@pow*pz^(@pow-1))/((@pow*pz^(@pow-1))^2-(pz^@pow-@sp2)*((@pow-1)*@pow*pz^(@pow-2)))+@pf(fPixel) endfunc default: title="Schrödernova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp1 caption="Schrödernova Parameter 1" default=(1,0) endparam param sp2 caption="Schrödernova Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Traub-Ostrowski(common.ulb:ConvergentFormula) { ; Traub-Ostrowski root finding method public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel = pz return fn1(pz) endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@p4*fn2(pz)+@p5 if @JM=="J" if @Va=="none" pz=pz elseif @Va=="1" pz=pz+1.21/sin(pz) elseif @Va=="2" pz=pz+0.3/pz elseif @Va=="3" pz=pz-0.67/cosh(pz) elseif @Va=="4" pz=pz+0.91968*sqr(pz)/tan(pz) elseif @Va=="5" pz=pz+1/cotanh(pz) elseif @Va=="6" pz=pz+0.9/cotan(pz) elseif @Va=="7" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="8" pz=pz+0.57*sqr(pz) elseif @Va=="9" pz=pz+1/sqr(pz) elseif @Va=="10" pz=pz-2.81439*sqr(pz)/tan(pz) elseif @Va=="11" pz=pz+0.55/pz elseif @Va=="12" pz=pz-1.45/cos(pz) elseif @Va=="13" if real(pz)>imag(pz) pz=flip(pz) endif elseif @Va=="14" pz=pz-0.4/sqr(pz) elseif @Va=="15" pz=pz+3.63214*pz*cotan(pz) elseif @Va=="16" pz=pz-0.648*sqr(pz) elseif @Va=="17" pz=pz-0.32959*sqr(pz)/cotanh(pz) elseif @Va=="18" pz=pz-1/pz elseif @Va=="19" pz=pz+0.46316*sqr(abs(pz)) elseif @Va=="20" pz=pz+1.133*sqr(pz)/cotanh(pz) elseif @Va=="21" pz=pz-1.3518*sqr(pz)/tanh(pz) elseif @Va=="22" pz=pz+pz^3 elseif @Va=="23" pz=pz+1.32965*sqr(pz)/tan(pz) elseif @Va=="24" pz=pz+0.5236*sqr(pz)/cotanh(pz) elseif @Va=="25" pz=pz+0.73407*tan(pz)/sqr(pz) elseif @Va=="26" pz=pz-1.06059/sinh(pz) elseif @Va=="27" if |pz|>1 pz=pz/|pz| endif elseif @Va=="28" pz=pz+0.75347*sqr(pz)/tanh(pz) elseif @Va=="29" pz=pz+2.684*pz/cotan(pz) elseif @Va=="30" pz=pz+0.92854*pz*abs(pz) elseif @Va=="31" pz=pz-1.37673*sqr(pz)/cotan(pz) elseif @Va=="32" pz=pz-3.25*pz/tan(pz) elseif @Va=="33" pz=pz+0.65*pz^4 elseif @Va=="34" pz=pz+3.51248*sqr(pz)/tan(pz) elseif @Va=="35" pz=pz+2.51525*sqr(pz)/tan(pz) elseif @Va=="36" pz=pz+0.72909*pz*cabs(pz) elseif @Va=="37" pz=pz-0.65374*sqr(pz)/tanh(pz) elseif @Va=="38" pz=pz-0.35/tanh(pz) elseif @Va=="39" pz=pz+2.556*pz/cosh(pz) elseif @Va=="40" pz=pz-0.8*pz^3 elseif @Va=="41" pz=pz+0.54*pz/cos(pz) elseif @Va=="42" pz=pz-0.5/cotan(pz) elseif @Va=="43" pz=pz+0.46814*sqr(pz)/cotan(pz) elseif @Va=="44" pz=pz+0.679*cotanh(pz) elseif @Va=="45" pz=pz+1.643/sinh(pz) elseif @Va=="46" pz=pz-0.5409/cos(pz) elseif @Va=="47" pz=pz-0.42*pz^4 elseif @Va=="48" pz=pz+1.82*sqr(pz)/cotanh(pz) elseif @Va=="49" pz=pz-1.8/cotanh(pz) elseif @Va=="50" pz=pz+sqr(pz) elseif @Va=="51" pz=pz+0.46*sqr(pz) elseif @Va=="52" pz=pz+0.6/cosh(pz) elseif @Va=="53" pz=pz+1.532/pz elseif @Va=="54" pz=pz-2.534/sin(pz) elseif @Va=="55" pz=pz-1.9*sqr(pz) elseif @Va=="56" pz=pz+0.4685/sinh(pz) elseif @Va=="57" pz=pz+1/tanh(pz) elseif @Va=="58" pz=pz-0.41*tan(pz) elseif @Va=="59" pz=pz+1/tan(pz) elseif @Va=="60" pz=pz-1/tan(pz) elseif @Va=="61" pz=pz+0.4/tan(pz) elseif @Va=="62" pz=pz+2*sqr(pz) elseif @Va=="63" pz=pz-sqr(pz)/cotan(pz) elseif @Va=="64" pz=pz+0.412/cos(pz) elseif @Va=="65" pz=pz-0.277*sqr(pz)/tanh(pz) elseif @Va=="66" pz=pz+0.91*pz/sinh(pz) elseif @Va=="67" pz=pz+2.37396*tanh(pz)/sqr(pz) elseif @Va=="68" pz=pz-0.697/tan(pz) elseif @Va=="69" pz=pz+2.41552*sqr(pz)/tanh(pz) elseif @Va=="70" pz=pz-4*sqr(pz)/tanh(pz) elseif @Va=="71" pz=pz+0.84488*tanh(pz)/pz endif else if @Va=="none" pz=pz elseif @Va=="1" pz=pz+cotanh(cotan(pz)) elseif @Va=="2" pz=pz+0.45*tan(pz)*tanh(pz) elseif @Va=="3" pz=pz+0.55*cotanh(pz)/cotan(pz) elseif @Va=="4" pz=pz-0.5*cotan(pz)*cotanh(pz) elseif @Va=="5" if real(pz)>imag(pz) pz=flip(pz) endif elseif @Va=="6" pz=pz-6.758/sqr(pz) elseif @Va=="7" pz=pz-0.3/sqr(pz) elseif @Va=="8" pz=pz-0.3*sqr(pz)/sinh(pz) elseif @Va=="9" pz=pz+0.4*sqr(pz)/cosh(pz) elseif @Va=="10" pz=pz-0.6*sqr(pz)/tanh(pz) elseif @Va=="11" pz=pz-0.5*pz^3 elseif @Va=="12" pz=pz+0.2*sqr(pz)/cos(pz) elseif @Va=="13" pz=pz+0.46*sqr(pz)/tan(pz) elseif @Va=="14" pz=pz+2.8*pz*cotan(pz) elseif @Va=="15" pz=pz-0.5/cotanh(pz) elseif @Va=="16" pz=pz+2*sqr(pz)/sin(pz) elseif @Va=="17" pz=pz+0.4*sqr(pz)/tanh(pz) elseif @Va=="18" pz=pz-1/cos(pz) elseif @Va=="19" pz=pz-sqr(pz)/cotanh(pz) elseif @Va=="20" pz=pz-0.3*sqr(pz)/cotan(pz) elseif @Va=="21" pz=pz+0.5*sqr(pz)/cotanh(pz) elseif @Va=="22" pz=pz+1/pz elseif @Va=="23" pz=pz+0.3*pz*tan(pz) elseif @Va=="24" pz=pz+0.9/sinh(pz) elseif @Va=="25" pz=pz+0.8*pz*cotanh(pz) elseif @Va=="26" pz=pz+0.3/pz elseif @Va=="27" pz=pz-pz^3 elseif @Va=="28" pz=pz+0.5*pz^3 elseif @Va=="29" pz=pz+sqr(pz) elseif @Va=="30" pz=pz+0.47729/pz elseif @Va=="31" pz=pz-sqr(pz) elseif @Va=="32" pz=pz+pz^3 elseif @Va=="33" pz=pz+4.8/sqr(pz) elseif @Va=="34" pz=pz-0.3*pz^4 elseif @Va=="35" pz=pz+1/sqr(pz) elseif @Va=="36" pz=pz+3.3/sin(pz) elseif @Va=="37" pz=pz-2/cos(pz) elseif @Va=="38" pz=pz+0.3*pz^4 elseif @Va=="39" pz=pz-0.2*sqr(pz)/cos(pz) elseif @Va=="40" pz=pz-0.05/sqr(pz) elseif @Va=="41" pz=pz+0.15*tan(pz)/cotan(pz) elseif @Va=="42" pz=pz+0.3/cos(pz) elseif @Va=="43" pz=pz+cotanh(tan(pz)) elseif @Va=="44" pz=pz+0.4*cotan(pz) elseif @Va=="45" pz=pz-0.3*sqr(pz)/sin(pz) elseif @Va=="46" pz=pz-0.75/sqr(pz) elseif @Va=="47" pz=pz+cotan(pz) elseif @Va=="48" pz=pz+0.7*sqr(pz)/sinh(pz) elseif @Va=="49" pz=pz-0.3*tanh(pz) elseif @Va=="50" pz=pz-0.5*cotan(pz)/tan(pz) elseif @Va=="51" pz=pz-0.3*tan(pz) elseif @Va=="52" pz=pz-0.5*sqr(pz)/cosh(pz) elseif @Va=="53" pz=pz+0.5/cotan(pz) elseif @Va=="54" pz=pz+0.8*sqr(pz)/cotanh(pz) elseif @Va=="55" pz=pz+sqr(pz)/tan(pz) elseif @Va=="56" pz=pz-2.88/sqr(pz) elseif @Va=="57" pz=pz+0.3*sqr(pz)/cotanh(pz) elseif @Va=="58" pz=pz+1/cos(pz) elseif @Va=="59" pz=pz-0.3/cosh(pz) elseif @Va=="60" pz=pz-1.5*sqr(pz)/cotanh(pz) elseif @Va=="61" pz=pz+0.75/tan(pz) elseif @Va=="62" pz=pz-0.6*sqr(pz)/cotan(pz) elseif @Va=="63" pz=pz+0.2*sqr(pz)/cotan(pz) elseif @Va=="64" pz=pz-1/cosh(pz) elseif @Va=="65" pz=pz+sqr(pz)/cotan(pz) elseif @Va=="66" pz=pz-0.3/cos(pz) elseif @Va=="67" pz=pz+sqr(pz)/tanh(pz) elseif @Va=="68" pz=pz-2*sqr(pz)/tanh(pz) elseif @Va=="69" pz=pz+0.275/tan(pz) elseif @Va=="70" pz=pz-0.6*sqr(pz)/tan(pz) elseif @Va=="71" pz=pz-2*sqr(pz)/tan(pz) endif endif f=pz^@pow-@p3 f1=@pow*pz^(@pow-1) a=f/f1 if @JM=="J" pz=pz-@p1*a*(((pz-a)^@pow-@p3)-f)/((2*((pz-a)^@pow-@p3))-f)+@p2 else pz=pz-@p1*a*(((pz-a)^@pow-@p3)-f)/((2*((pz-a)^@pow-@p3))-f)+@p2+fn3(fpixel) endif return pz endfunc default: title="Traub-Ostrowski" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param JM caption="J/M" enum="J""M" endparam param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8"\ "9""10""11""12""13""14""15""16""17"\ "18""19""20""21""22""23""24""25""26"\ "27""28""29""30""31""32""33""34""35"\ "36""37""38""39""40""41""42""43""44"\ "45""46""47""48""49""50""51""52""53"\ "54""55""56""57""58""59""60""61""62"\ "63""64""65""66""67""68""69""70""71" endparam param p1 caption="Traub-Ostrowski Parameter 1" default=(1,0) endparam param p2 caption="Traub-Ostrowski Parameter 2" default=(0,0) endparam param p3 caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="Pixel Function" default=ident() visible=@JM=="M" endfunc param p4 caption="Z Parameter 1" default=(1,0) endparam param p5 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Nednova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 if @v==0 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@pf(fPixel) elseif @v==1 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1))+@pf(fPixel) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4)) elseif @v==2 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1))+@pf(fPixel) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@pf(fPixel) elseif @v==3 a=pz-@p1*(pz^@pow-@pf(fPixel))/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-(@p3+2.425)*(a^@pow-@p4)) else a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@pf(fPixel))/((pz^@pow-@pf(fPixel))-(@p3+2.425)*(a^@pow-@pf(fPixel))) endif return pz endfunc default: title="Nednova Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param pow caption="Exponent" default=(3,0) endparam param p1 caption="Nednova Parameter 1" default=(1,0) endparam param p2 caption="Nednova Parameter 2" default=(1,0) endparam param p3 caption="Nednova Parameter 3" default=(1,0) endparam param p4 caption="Nednova Parameter 4" default=(1,0) endparam param sp caption="Start Parameter" default=(0.5,0) endparam func pf caption="Pixel Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Nedzhibov(common.ulb:ConvergentFormula) { ;Accidental modification of root finding method of Nedzhibov ;https://file.scirp.org/pdf/AM20100300002_25669189.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 a=pz-@p1*(pz^@pow-@p4)/(@pow*pz^(@pow-1)) pz=a-@p2*a*(a^@pow-@p4)/((pz^@pow-@p4)-@p3*(a^@pow-@p4))+@c return pz endfunc default: title="Nedzhibov Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="Nedzhibov Parameter 1" default=(1,0) endparam param p2 caption="Nedzhibov Parameter 2" default=(0.25,0) endparam param p3 caption="Nedzhibov Parameter 3" default=(-0.4,0) endparam param p4 caption="Nedzhibov Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Julia Seed" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Steffensen(common.ulb:ConvergentFormula) { ;Steffensen's method for z+1/z=c ;https://en.wikipedia.org/wiki/Steffensen%27s_method public: complex func Init(complex pz) ConvergentFormula.Init(pz) return fn1(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*@zf(pz)+@pzp2 f=pz+1/pz-@p2 g=((pz+f)+1/(pz+f)-@p2)/f-1 pz=pz-@p1*f/g return pz endfunc default: title="Steffensen" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Steffensen Parameter 1" default=(1,0) endparam param p2 caption="Steffensen Parameter 2" default=(0,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Steffnova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 f=pz+1/pz-@p2 g=((pz+f)+1/(pz+f)-@p2)/f-1 pz=pz-@p1*f/g+@pf(fpixel) return pz endfunc default: title="Steffnova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Steffnova Parameter 1" default=(1,0) endparam param p2 caption="Steffnova Parameter 2" default=(0,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param sp caption="Start Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ZeppoMod(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p12*tan(pz) pz=pz+@p11/cos(pz) if @V==0 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==1 pz=abs(fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2))^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==2 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==3 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(abs(fn4(1-abs(1-real(pz)-imag(pz)))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==4 pz=fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(abs(fn4(1-abs(1-real(pz)-imag(pz)))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==5 pz=1-abs(fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2))^@pow*@p3+@p4+@p7*@fn5(pixel) elseif @V==6 pz=1-fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))+flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) else pz=1-fn2(fn3(1-abs(imag(pz)*@p1-real(pz)))-flip(fn4(1-abs(1-real(pz)-imag(pz))))-@p2)^@pow*@p3+@p4+@p7*@fn5(pixel) endif endwhile return pz*@p5/100 endfunc private: int i default: title="Zeppo Mod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8" default=0 endparam param iter caption="Iterations" default=7 endparam param p2 caption="Zeppo Parameter 1" default=(0,0) endparam param p3 caption="Zeppo Parameter 2" default=(1,0) endparam param p4 caption="Zeppo Parameter 3" default=(0,0) endparam param p1 caption="Zeppo Parameter 4" default=(1,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Recip Cos Parameter" default=(0,0) endparam param p12 caption="Add Tan Parameter" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Zeppo Function 1" default=ident() endfunc func fn3 caption="Zeppo Function 2" default=ident() endfunc func fn4 caption="Zeppo Function 3" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p7 caption="Add Pixel Parameter" default=(0,0) endparam func fn5 caption="Add Pixel Function" default=ident() visible=@p7!=0 endfunc param p5 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Fermat-LucasSuper-Halley(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*fn2(fn3(pz))+@pzp2 if @P=="3" f=27*pz^3-18*pz-@p4 f1=81*pz^2-18 f2=162*pz elseif @P=="4" f=81*pz^4-72*pz^2+8-@p4 f1=324*pz^3-144*pz f2=972*pz^2-144 elseif @P=="5" f=243*pz^5-270*pz^3+60*pz-@p4 f1=1215*pz^4-810*pz^2+60 f2=4860*pz^3-1620*pz elseif @P=="6" f=729*pz^6-972*pz^4+324*pz^2-16-@p4 f1=4374*pz^5-3888*pz^3+648*pz f2=21870*pz^4-11664*pz^2+648 elseif @P=="7" f=2187*pz^7-3402*pz^5+1512*pz^3-168*pz-@p4 f1=15309*pz^6-17010*pz^4+4536*pz^2-168 f2=91854*pz^5-68040*pz^3+9072*pz elseif @P=="8" f=6561*pz^8-11664*pz^6+6480*pz^4-1152*pz^2+32-@p4 f1=52488*pz^7-69984*pz^5+25920*pz^3-2304*pz f2=367416*pz^6-349920*pz^4+77760*pz^2-2304 else f=19683*pz^9-39366*pz^7+26244*pz^5-6480*pz^3+432*pz-@p4 f1=177147*pz^8-275562*pz^6+131220*pz^4-19440*pz^2+432 f2=1417176*pz^7-1653372*pz^5+524880*pz^3-38880*pz endif a=f/f1 b=f*f2/sqr(f1) return @p2*pz-@p1*a*(1+(b/(2*(1-b))))+@p3 endfunc default: title="Fermat-Lucas Super-Halley" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param P caption="Polynomial" enum="3""4""5""6""7""8""9" default=2 endparam param p1 caption="SH Parameter 1" default=(1,0) endparam param p2 caption="SH Parameter 2" default=(1,0) endparam param p4 caption="SH Parameter 3" default=(0,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=flip() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_LabsPoincaréPolynomials(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=fn2(fn3(pz)) pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) x=real(pz)+real(@p6) y=imag(pz)+imag(@p6) a=x^2+y^2 x=x/a+real(@p1) y=y/a+imag(@p1) if @V1=="pz^2-pz" pz=@p4*((x+flip(y))^2-(x+flip(y)))+@p5 elseif @V1=="Munster" pz=(x+flip(y))^2*((x+flip(y))-(@p4+1))/(1-(@p4+1)*(x+flip(y)))+@p5 elseif @V1=="pz^3-pz" pz=@p4*((x+flip(y))^3-(x+flip(y)))+@p5 elseif @V1=="pz^3-pz^2" pz=@p4*((x+flip(y))^3-(x+flip(y))^2)+@p5 elseif @V1=="pz^3-pz^2-pz" pz=@p4*((x+flip(y))^3-(x+flip(y))^2-(x+flip(y)))+@p5 elseif @V1=="Cayley" pz=@p4*(x+flip(y)-sqrt(-1))/(x+flip(y)+sqrt(-1))+@p5 elseif @V1=="Inverse Cayley" pz=@p4*(x+flip(y)+sqrt(-1))/(x+flip(y)-sqrt(-1))+@p5 elseif @V1=="Newton 1" pz=x+flip(y)-@p4*((x+flip(y))^3-1)/(3*(x+flip(y))^2)+@p5 elseif @V1=="Newton 2" pz=x+flip(y)-@p4*((x+flip(y))^4-1)/(4*(x+flip(y))^3)+@p5 elseif @V1=="Halley" pz=x+flip(y)-@p4*2*((x+flip(y))^3-1)*(3*(x+flip(y))^2)/(2*(3*(x+flip(y))^2)^2-((x+flip(y))^3-1)*(6*(x+flip(y))))+@p5 elseif @V1=="Inkle" pz=@p4*conj(@p4/(x+flip(y)-@p5))+@p5 elseif @V1=="Magnet 1" pz=@p4*sqr(((x+flip(y))^2+@p5-1)/(2*(x+flip(y))+@p5-2)) elseif @V1=="Magnet 2" pz=@p4*sqr(((x+flip(y))^3+3*(@p5-1)*(x+flip(y))+(@p5-1)*(@p5-2))/(3*(x+flip(y))^2+3*(@p5-2)*(x+flip(y))+(@p5-1)*(@p5-2)+1)) endif if @V2=="2" if |pz|<1 pz=pz/|pz| endif elseif @V2=="3" if |pz|>1 pz=pz/|pz| endif endif if @V3=="2" if real(pz)imag(pz) pz=flip(pz) endif endif if @v=="Q1(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4))))^@pow+@p3 elseif @v=="Q2(A2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3))))^@pow+@p3 elseif @v=="Q3(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3-2*pz^4))))^@pow+@p3 elseif @v=="Q8(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^2+pz^5+pz^6))))^@pow+@p3 elseif @v=="Q9(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-3*pz^2-pz^4+pz^5+3*pz^6))))^@pow+@p3 elseif @v=="Q10(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-3*pz^3+pz^4-pz^5+pz^8+2*pz^9))))^@pow+@p3 elseif @v=="Q11(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4-pz^5+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q12(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-3*pz^3-pz^6+pz^7+pz^8+3*pz^9))))^@pow+@p3 elseif @v=="Q16(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz+pz^2-pz^4+pz^6))))^@pow+@p3 elseif @v=="Q17(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-2*pz^5+pz^6+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q18(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz+pz^3-pz^4-pz^5+2*pz^6))))^@pow+@p3 elseif @v=="Q19(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4-pz^5+pz^6+pz^8+pz^9))))^@pow+@p3 elseif @v=="Q20(G2)" pz=@p2*fn4(log(abs(@fn5(1-2*pz-2*pz^5+3*pz^6))))^@pow+@p3 elseif @v=="Q21(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^2-pz^3+2*pz^5+pz^6+2*pz^7+3*pz^8-pz^9+pz^10-pz^11-2*pz^12))))^@pow+@p3 elseif @v=="Q22(B4)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3+pz^7+2*pz^8+pz^9+pz^10+pz^11-pz^15-pz^16))))^@pow+@p3 elseif @v=="Q23(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^4+pz^6+pz^7+2*pz^8-pz^11-pz^12))))^@pow+@p3 elseif @v=="Q24(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^5))))^@pow+@p3 elseif @v=="Q25(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3))))^@pow+@p3 elseif @v=="Q26(A2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2))))^@pow+@p3 elseif @v=="Q27(B2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3))))^@pow+@p3 elseif @v=="Q28(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^5))))^@pow+@p3 elseif @v=="Q29(G2)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3-pz^4-pz^5))))^@pow+@p3 elseif @v=="Q36(A3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2+pz^5))))^@pow+@p3 elseif @v=="Q37(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3+pz^8))))^@pow+@p3 elseif @v=="Q38(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^4+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q39(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^3+pz^7+pz^8))))^@pow+@p3 elseif @v=="Q40(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4-pz^5+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q43(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^4+pz^8))))^@pow+@p3 elseif @v=="Q44(B3)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^3-pz^5+pz^6+pz^8))))^@pow+@p3 elseif @v=="Q46(D4)" pz=@p2*fn4(log(abs(@fn5(1-pz^2-pz^3-pz^4-pz^5-pz^6+pz^8+pz^9+2*pz^10+2*pz^11+2*pz^12+pz^13+pz^14-pz^16-pz^17-pz^18-pz^19))))^@pow+@p3 elseif @v=="Q47(D5)" pz=@p2*fn4(log(abs(@fn5(1-pz-pz^2-pz^4+pz^5+pz^6+pz^7+pz^9+pz^10-pz^11-pz^13-pz^14-pz^15+pz^19))))^@pow+@p3 elseif @v=="Q48(B5)" pz=@p2*fn4(log(abs(@fn5(1-pz-2*pz^3+pz^4+pz^6-pz^7+2*pz^8-pz^9+pz^10+pz^12+pz^13-pz^14-pz^15-pz^18-pz^20+pz^24))))^@pow+@p3 elseif @v=="Pg2" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)))))^@pow+@p3 elseif @v=="Pf4" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^23)))))^@pow+@p3 elseif @v=="Pe6" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^9)*(1+pz^11)*(1+pz^15)*(1+pz^17)*(1+pz^23)))))^@pow+@p3 elseif @v=="Pe7" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^19)*(1+pz^23)*(1+pz^27)*(1+pz^35)))))^@pow+@p3 elseif @v=="Pe8" pz=@p2*fn4(log(abs(@fn5((1+pz^3)*(1+pz^15)*(1+pz^23)*(1+pz^27)*(1+pz^35)*(1+pz^39)*(1+pz^47)*(1+pz^59)))))^@pow+@p3 endif pz=pz+@p11*@fn6(fpixel) endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Labs Poincaré Polynomials" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V1 caption="Variant 1" enum="pz^2-pz""Munster""pz^3-pz""pz^3-pz^2""pz^3-pz^2-pz""Cayley""Inverse Cayley"\ "Newton 1""Newton 2""Halley""Inkle""Magnet 1""Magnet 2" default=7 endparam param V2 caption="Variant 2" enum="1""2""3" default=0 endparam param V3 caption="Variant 3" enum="1""2""3" default=1 endparam param V caption="Polynomial" enum="Q1(B2)""Q2(A2)""Q3(B2)"\ "Q8(A3)""Q9(A3)""Q10(B3)""Q11(B3)""Q12(B3)"\ "Q16(G2)""Q17(B3)""Q18(G2)""Q19(B3)""Q20(G2)""Q21(D4)""Q22(B4)""Q23(D4)"\ "Q24(G2)""Q25(B2)""Q26(A2)""Q27(B2)""Q28(G2)""Q29(G2)"\ "Q36(A3)""Q37(B3)""Q38(B3)""Q39(B3)""Q40(B3)"\ "Q43(B3)""Q44(B3)"\ "Q46(D4)""Q47(D5)""Q48(B5)"\ "Pg2""Pf4""Pe6""Pe7""Pe8" default=0 endparam param iter caption="Iterations" default=4 endparam param p1 caption="K Parameter 1" default=(0.35,0) endparam param p6 caption="K Parameter 2" default=(0,0) endparam param p2 caption="Labs Parameter 1" default=(1,0) endparam param p3 caption="Labs Parameter 2" default=(0,0) endparam param p4 caption="Variant Parameter 1" default=(1,0) endparam param p5 caption="Variant Parameter 2" default=(0,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function 1" default=ident() endfunc func fn5 caption="Labs Function 2" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p11 caption="Add Pixel Parameter" default=(0,0) endparam func fn6 caption="Add Pixel Function" default=ident() visible=@p11!=0 endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Mobbom(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p7)/(1-@p7*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p6*tan(pz) pz=pz+@p11/cos(pz) pz=abs(fn2(((1i+@p1)*pz+1i*@p1+1)/((-1i+@p1)*pz-1i*@p1+1)))^@pow*@p2+@p3+@p13*fn3(fpixel) endwhile return @p4*pz/100 endfunc private: complex fpixel int i default: title="Mobbom" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Mobbom Parameter 1" default=(-0.33,0) endparam param p2 caption="Mobbom Parameter 2" default=(1,0) endparam param p3 caption="Mobbom Parameter 3" default=(0,0) endparam param iter caption="Iterations" default=14 endparam param p7 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Recip Cos Parameter" default=(0,0) endparam param p6 caption="Add Tan Parameter" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Mobbom Function" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p13 caption="Add Pixel Parameter" default=(0,0) endparam func fn3 caption="Add Pixel Function" default=ident() visible=@p13!=0 endfunc param p4 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*fn2(pz)+@pzp2 f=pz^(-2)-@p2 f1=-2*pz^(-3) f2=6*pz^(-4) a=f1^2 b=f1-f*f2 return pz-@p1*(f/(f1*b))*(a+b)+@c endfunc default: title="Rootmod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Rootmod Parameter 1" default=(0.5,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Rootmod2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 f=pz^2-@p1 f1=2*pz a=fn2(f/f1) return a-@p3*(a/f1)*((f+@p2*a)/(f+(@p2-2)*a))+@c endfunc default: title="Rootmod 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Rootmod Parameter 1" default=(1,1) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Rootmod Parameter 3" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Rootmod Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Rootmod2Nova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*pz+@pzp2 f=pz^2-@p1 f1=2*pz a=fn2(f/f1) return a-@p3*(a/f1)*((f+@p2*a)/(f+(@p2-2)*a))+fn1(fpixel) endfunc default: title="Rootmod 2 Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param p1 caption="Rootmod Parameter 1" default=(1,1) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Rootmod Parameter 3" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn2 caption="Rootmod Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_RootmodNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*fn2(pz)+@pzp2 f=pz^(-2)-@p2 f1=-2*pz^(-3) f2=6*pz^(-4) a=f1^2 b=f1-f*f2 return pz-@p1*(f/(f1*b))*(a+b)+fn1(fpixel) endfunc default: title="Rootmod Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param p1 caption="RMN Parameter 1" default=(0.5,0) endparam param p2 caption="RMN Parameter 2" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_SlarpUxplizets(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 if @V=="1" pz=@p1*abs(fn2(pz^2+pz^2*@pf(fpixel)))^@pow+@p2 elseif @V=="2" pz=@p1*abs(log(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="3" pz=@p1*abs(flip(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="4" pz=@p1*abs(log(fn2(pz^2+sqr(pz^2)*@pf(fpixel))))^@pow+@p2 elseif @V=="5" pz=@p1*log(abs(fn2(pz^2+sqr(pz^2)*@pf(fpixel))))^@pow+@p2 elseif @V=="6" pz=@p1*log(abs(fn2(pz^2+pz^2*@pf(fpixel))))^@pow+@p2 elseif @V=="7" pz=@p1*abs(fn2(pz^2+sqr(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="8" pz=@p1*abs(fn2(pz^2+tan(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="9" pz=@p1*abs(fn2(pz^2+tanh(pz^2)*@pf(fpixel)))^@pow+@p2 elseif @V=="10" pz=@p1*abs(fn2(pz^2+log(pz)^2*@pf(fpixel)))^@pow+@p2 elseif @V=="11" pz=@p1*abs(fn2(pz^2+tanh(pz)^2*@pf(fpixel)))^@pow+@p2 elseif @V=="12" pz=@p1*abs(log(fn2(pz^2+tanh(pz)^2*@pf(fpixel))))^@pow+@p2 elseif @V=="13" pz=@p1*abs(log(fn2(pz^2+atanh(pz)^2*@pf(fpixel))))^@pow+@p2 elseif @V=="14" pz=@p1*abs(log(fn2(pz^2+sin(pz)^2*@pf(fpixel))))^@pow+@p2 endif endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Slarp Uxplizets" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14" default=0 endparam param iter caption="Iterations" default=7 endparam param p1 caption="SU Parameter 1" default=(1,0) endparam param p2 caption="SU Parameter 2" default=(-1.4,-0.8) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="SU Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(0.5,0) endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarMandelbrot(common.ulb:DivergentFormula) { ;Based on a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) fPixel=pz pz=@sp if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex fPixel complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+pk^2+@pf(fPixel) elseif @v==1 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2-pk^2+@pf(fPixel) elseif @v==2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^3+pk^2+@pf(fPixel) elseif @v==3 pk=(@bp1-0.15)*@bf(pk/pz)+@bp2 pz=(pz+pk)^2+@pf(fPixel) else pk=@bp1*@bf(pk/pz)+@bp2 pz=(pz-pk)^2+@pf(fPixel) endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v2==0 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+pk2^2+@pf(fPixel) elseif @v2==1 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2-pk2^2+@pf(fPixel) elseif @v2==2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^3+pk2^2+@pf(fPixel) elseif @v2==3 pk2=(@bp1-0.15)*@bf(pk2/pz)+@bp2 pz=(pz+pk2)^2+@pf(fPixel) else pk2=@bp1*@bf(pk2/pz)+@bp2 pz=(pz-pk2)^2+@pf(fPixel) endif return pz return pk2 endif endfunc default: title="Bivar Mandelbrot" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" visible=@v_SFormula<101 endparam param v2 caption="Variant" enum="1""2""3""4""5" visible=@v_SFormula>=101 endparam param sp caption="Start Parameter" default=(0.1,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarMandelbrot2(common.ulb:DivergentFormula) { ;Based on a formula from gerrit on fractalforums: ;https://fractalforums.org/fractal-mathematics-and-new-theories/28/holomorphic-mandelbrot-extensions/1475/30 public: complex func Init(complex pz) fPixel=pz a=(0,0) pz=@sp if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex fPixel complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pz if @v==0 pz=pz^2+@bp1*pk+@pf(fPixel) pk=pk^2+@bp2*a+@pf(fPixel) elseif @v==1 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a-0.5*@pf(fPixel) elseif @v==2 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a elseif @v==3 pz=pz^2+@bp1*pk+0.5*@pf(fPixel) pk=pk^2+@bp2*a+@pf(fPixel) elseif @v==4 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2) pk=pk^2+@bp2*a+@pf(fPixel+fpixel^2) elseif @v==5 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2) pk=pk^2+@bp2*a+@pf(fPixel-fpixel^2) elseif @v==6 pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2+fpixel^3) pk=pk^2+@bp2*a+@pf(fPixel+fpixel^2) else pz=pz^2+@bp1*pk+@pf(fPixel+fpixel^2+fpixel^3) pk=pk^2+@bp2*a endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 a=pz if @v==0 pz=pz^2+@bp1*pk2+@pf(fPixel) pk2=pk2^2+@bp2*a+@pf(fPixel) elseif @v==1 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a-0.5*@pf(fPixel) elseif @v==2 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a elseif @v==3 pz=pz^2+@bp1*pk2+0.5*@pf(fPixel) pk2=pk2^2+@bp2*a+@pf(fPixel) elseif @v==4 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2) pk2=pk2^2+@bp2*a+@pf(fPixel+fpixel^2) elseif @v==5 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2) pk2=pk2^2+@bp2*a+@pf(fPixel-fpixel^2) elseif @v==6 pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2+fpixel^3) pk2=pk2^2+@bp2*a+@pf(fPixel+fpixel^2) else pz=pz^2+@bp1*pk2+@pf(fPixel+fpixel^2+fpixel^3) pk2=pk2^2+@bp2*a endif return pz return pk2 endif endfunc default: title="Bivar Mandelbrot 2" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(-1,0) endparam param bp2 caption="Bivar Parameter 2" default=(-1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Ringun(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return fn1(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p3*fn4(sqr(pz))+@p4 if |pz|<1 pz=pz/|pz| endif if @V=="2" if real(pz)imag(pz) pz=flip(pz) endif elseif @V=="4" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif elseif @V=="5" x=real(pz) y=imag(pz) if real(x+y)<0 b=y y=x x=b endif pz=x+flip(y) elseif @V=="6" x=real(pz) y=imag(pz) x=abs(x) y=abs(y) if real(x)-imag(y)<0 b=y y=x x=b endif pz=x+flip(y) elseif @V=="7" x=real(pz) y=imag(pz) x=abs(x) y=abs(y) if imag(x)-real(y)<0 b=y y=x x=b endif pz=x+flip(y) endif k=cos(i)+sqrt(-1)*i pz=@p1*@fn5(log(abs(pz^@pow+fn2(k)*fn3(fpixel))))+@p2 endwhile return @adj*pz/100 endfunc private: complex fpixel int i default: title="Ringun" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7" default=0 endparam param iter caption="Iterations" default=5 endparam func fn1 caption="Start Function" default=ident() endfunc func fn5 caption="Ringun Function 1" default=ident() endfunc func fn2 caption="Ringun Function 2" default=ident() endfunc func fn3 caption="Pixel Function" default=ident() endfunc func fn4 caption="Z Function" default=ident() endfunc param p1 caption="Ringun Parameter 1" default=(1,0) endparam param p2 caption="Ringun Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Wigwam(common.ulb:DivergentFormula) { ;Tent map fractal. Closely resembles Barnsley public: complex func Init(complex pz) if @Fs=="ident" pz=ident(pz) elseif @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="log" pz=log(pz) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) elseif @Fs=="round" pz=round(pz) endif return pz endfunc complex func Iterate(complex pz) if @F2=="ident" pz=ident(pz) elseif @F2=="sin" pz=sin(pz) elseif @F2=="sinh" pz=sinh(pz) elseif @F2=="asin" pz=asin(pz) elseif @F2=="asinh" pz=asinh(pz) elseif @F2=="versin" pz=1-cos(pz) elseif @F2=="aversin" pz=acos(1-pz) elseif @F2=="haversin" pz=(1-cos(pz))/2 elseif @F2=="ahaversin" pz=2*asin(sqrt(pz)) elseif @F2=="coversin" pz=1-sin(pz) elseif @F2=="acoversin" pz=asin(1-pz) elseif @F2=="hacoversin" pz=(1-sin(pz))/2 elseif @F2=="cos" pz=cos(pz) elseif @F2=="cosh" pz=cosh(pz) elseif @F2=="acos" pz=acos(pz) elseif @F2=="acosh" pz=acosh(pz) elseif @F2=="vercos" pz=1+cos(pz) elseif @F2=="avercos" pz=acos(1+pz) elseif @F2=="havercos" pz=(1+cos(pz))/2 elseif @F2=="ahavercos" pz=2*acos(sqrt(pz)) elseif @F2=="covercos" pz=1+sin(pz) elseif @F2=="acovercos" pz=asin(1+pz) elseif @F2=="hacovercos" pz=(1+sin(pz))/2 elseif @F2=="tan" pz=tan(pz) elseif @F2=="tanh" pz=tanh(pz) elseif @F2=="atan" pz=atan(pz) elseif @F2=="atanh" pz=atanh(pz) elseif @F2=="cotan" pz=cotan(pz) elseif @F2=="cotanh" pz=cotanh(pz) elseif @F2=="acotan" pz=atan(1/(pz)) elseif @F2=="acotanh" pz=atanh(1/(pz)) elseif @F2=="sec" pz=1/cos(pz) elseif @F2=="sech" pz=1/cosh(pz) elseif @F2=="asec" pz=acos(1/pz) elseif @F2=="asech" pz=acosh(1/pz) elseif @F2=="cosec" pz=1/sin(pz) elseif @F2=="cosech" pz=1/sinh(pz) elseif @F2=="acosec" pz=asin(1/pz) elseif @F2=="acosech" pz=asinh(1/pz) elseif @F2=="exsec" pz=1/cos(pz)-1 elseif @F2=="aexsec" pz= acos(1/(pz+1)) elseif @F2=="excosec" pz=1/sin(pz)-1 elseif @F2=="aexcosec" pz=asin(1/(pz+1)) elseif @F2=="crd" pz=2*sin(pz/2) elseif @F2=="acrd" pz=2*asin(pz/2) elseif @F2=="gd" pz=asin(tanh(pz)) elseif @F2=="agd" pz=asinh(tan(pz)) elseif @F2=="sinc" pz=sin(pz)/(pz) elseif @F2=="sinhc" pz=sinh(pz)/(pz) elseif @F2=="cosc" pz=cos(pz)/(pz) elseif @F2=="coshc" pz=cosh(pz)/(pz) elseif @F2=="tanc" pz=tan(pz)/(pz) elseif @F2=="tanhc" pz=tanh(pz)/(pz) elseif @F2=="cotanc" pz=cotan(pz)/(pz) elseif @F2=="cotanhc" pz=cotanh(pz)/(pz) elseif @F2=="secc" pz=1/(pz*cos(pz)) elseif @F2=="sechc" pz=1/(pz*cosh(pz)) elseif @F2=="cosecc" pz= 1/(pz*sin(pz)) elseif @F2=="cosechc" pz=1/(pz*sinh(pz)) elseif @F2=="sqr" pz=sqr(pz) elseif @F2=="sqrt" pz=sqrt(pz) elseif @F2=="cube" pz=pz^3 elseif @F2=="cuberoot" pz=pz^(1/3) elseif @F2=="log" pz=log(pz) elseif @F2=="colog" pz=-log(pz) elseif @F2=="exp" pz=exp(pz) elseif @F2=="abs" pz=abs(pz) elseif @F2=="cabs" pz=cabs(pz) elseif @F2=="conj" pz=conj(pz) elseif @F2=="flip" pz=flip(pz) elseif @F2=="recip" pz=recip(pz) elseif @F2=="logit" pz= log(pz/(1-pz)) elseif @F2=="expit" pz=1/(1+exp(-pz)) elseif @F2=="gauss" pz=exp(-sqr(pz)) elseif @F2=="softplus" pz=log(1+exp(pz)) elseif @F2=="primecount" pz=pz/log(pz) elseif @F2=="ceil" pz=ceil(pz) elseif @F2=="floor" pz=floor(pz) elseif @F2=="trunc" pz=trunc(pz) elseif @F2=="round" pz=round(pz) endif pz=pz+@pzp1 if real(pz)<0.5 return @p1*pz else return @p1*(1-pz) endif endfunc default: title="Wigwam" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Wigwam Parameter" default=(0.97601,-0.38381) endparam param pzp1 caption="Z Parameter" default=(0,0) endparam param Fs caption="Start Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param F2 caption="Z Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_WurgulationRings2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return @sf(pz) endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p10*pz+1) pz=pz+@p7*(2*pz-1i)/(pz+2i)/(pz-1) pz=pz+@p14*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p15*(pz-1i)/(pz+1i) pz=@p1*fn2(sqr(flip(fn3(pz))))+@p2+@p16*fpixel if |pz|>1 pz=pz/|pz| endif pz=pz+@p12*tan(pz) pz=pz+@p13*sqr(pz) x=real(pz) y=imag(pz) x=x/|pz|+real(@p3) y=y/|pz|+imag(@p3) pz=x+flip(y) if @V=="1" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="2" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="3" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="4" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="5" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="6" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="7" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="8" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="9" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="10" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="11" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="12" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="13" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="14" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="15" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="16" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="17" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="18" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="19" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="20" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="21" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="22" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="23" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="24" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="25" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="26" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="27" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="28" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="29" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^2*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="30" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^2*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="31" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="32" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="33" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="34" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="35" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="36" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="37" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="38" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="39" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1)+1/(pz^3*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="40" pz=@p4*fn4(log(abs(@fn5((pz^3*@p11+1i)+1/(pz^3*@p11+1)))))+@p5+@p17*@fn6(fpixel) elseif @V=="41" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11-1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="42" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11)))))+@p5+@p17*@fn6(fpixel) elseif @V=="43" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11)+1/(pz*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="44" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1)+1/(pz*@p11+1i)))))+@p5+@p17*@fn6(fpixel) elseif @V=="45" pz=@p4*fn4(log(abs(@fn5((pz^2*@p11+1i)+1/(pz*@p11+1)))))+@p5+@p17*@fn6(fpixel) endif endwhile return 51*pz/50 endfunc private: complex fpixel int i default: title="Wurgulation Rings 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8"\ "9""10""11""12""13""14""15""16"\ "17""18""19""20""21""22""23""24"\ "25""26""27""28""29""30""31""32"\ "33""34""35""36""37""38""39""40"\ "41""42""43""44""45" default=0 endparam param iter caption="Iterations" default=3 endparam param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p10 caption="Möbius Parameter 2" default=(0,0) endparam param p7 caption="Add W Parameter 1" default=(0,0) endparam param p14 caption="Add W Parameter 2" default=(0,0) endparam param p15 caption="Add Cayley Parameter" default=(0,0) endparam param p11 caption="C Parameter" default=(1,0) endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="K Parameter" default=(0,0) endparam param p4 caption="Labs Parameter 1" default=(1,0) endparam param p5 caption="Labs Parameter 2" default=(0,0) endparam param p12 caption="Add Tan Parameter" default=(0,0) endparam param p13 caption="Add Sqr Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function 1" default=ident() endfunc func fn5 caption="Labs Function 2" default=ident() endfunc param p17 caption="Add Pixel Parameter 1" default=(0.1,0.1) endparam func fn6 caption="Add Pixel Function" default=ident() visible=@p17!=0 endfunc param p16 caption="Add Pixel Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_Rootmod3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz-@p1*f^4/(2*f1^3)+@p3+0.05*@pf(fpixel) endfunc default: title="Rootmod 3" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp default=(-0.195,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(0.8,0) endparam param p3 caption="Rootmod Parameter 3" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_WigwamMod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=@sf(pz) if @sv==0 pz=pz elseif @sv==1 pz=(cotanh(pz)-1i)^2/cos(pz+1i) elseif @sv==2 pz=(pz-cos(1i))/cosh(pz+1i)^2 elseif @sv==3 pz=(cosh(pz)-2i)/cotan(pz+2i)/(pz-1i) elseif @sv==4 pz=pz+1i/cotanh(pz)+1 elseif @sv==5 pz=pz+1i/cotan(pz)+1 elseif @sv==6 pz=pz+1i/cosh(pz)+1 elseif @sv==7 pz=(pz-3i)*(pz+2i)/(cotanh(pz)-1i+1)/2i elseif @sv==8 pz=pz+1i/cos(pz)+1 elseif @sv==9 pz=pz+1i*pz*(pz-1i)/(pz+1i) elseif @sv==10 pz=pz+1i*pz*(pz-1i)/exp(pz+1i)*(pz-2i) elseif @sv==11 pz=pz+1/(1i*exp(pz))-1 elseif @sv==12 pz=pz+1/(1i*cotanh(pz))-1 elseif @sv==13 pz=pz-pz/(1i*cotan(pz))+1 elseif @sv==14 pz=pz-pz/(1i*sinh(pz))+1 elseif @sv==15 pz=pz+1i*pz^2/(exp(1i*pz))-1 elseif @sv==16 pz=pz+1i*pz^2/(cosh(1i*pz))-1 elseif @sv==17 pz=pz+1i*pz^2/(cos(1i*pz))-1 elseif @sv==18 pz=pz-pz^2/(exp(1i*sqr(pz)))-1 elseif @sv==19 pz=pz-pz^2/(sinh(1i*sqr(pz)))-1 elseif @sv==20 pz=pz-pz^2/(recip(1i*sqr(pz)))-1 elseif @sv==21 pz=pz-pz/(exp(1i+sqr(pz)))+1 elseif @sv==22 pz=pz-pz/(recip(1i+sqr(pz)))+1 elseif @sv==23 pz=pz+pz/cotan(cotanh(1i+pz))-1 elseif @sv==24 pz=pz+pz/(exp(1i+pz))-1 elseif @sv==25 pz=pz+pz/(cotan(1i+pz))-1 elseif @sv==26 pz=pz+pz/(tan(1i+pz))-1 elseif @sv==27 pz=pz+pz/(cosh(1i+pz))-1 elseif @sv==28 pz=pz+pz/(cos(1i+pz))-1 elseif @sv==29 pz=pz+pz/(sinh(1i+pz))-1 elseif @sv==30 pz=pz+pz/(sin(1i+pz))-1 endif return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=(pz-@p15)/(1-@p15*pz) pz=pz/(@p8*pz+1) pz=pz+@p9*(2*pz+1i)/(pz+2i)/(pz+1)*(1i-pz) pz=pz+@p10*(pz+1i)*(pz-1)/(pz-1i) pz=pz+@p11*exp(pz) pz=pz+@p12*cos(pz) if real(fn2(pz))<0.5 pz=@p1*pz else pz=@p1*(1-pz) endif pz=@p2*abs(fn3(pz))^@pow+@p3+@p19*@fn5(fpixel) endwhile return @p4*pz/100 endfunc private: complex fpixel int i default: title="Wigwam Mod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30" endparam param iter caption="Iterations" default=7 endparam param p1 caption="Wigwam Parameter" default=(1,-1) endparam param p2 caption="Abs Parameter 1" default=(1,0) endparam param p3 caption="Abs Parameter 2" default=(0,0) endparam param p15 caption="Möbius Parameter 1" default=(0,0) endparam param p8 caption="Möbius Parameter 2" default=(0,0) endparam param p9 caption="Add W Parameter 1" default=(0,0) endparam param p10 caption="Add W Parameter 2" default=(0,0) endparam param p11 caption="Add Exp Parameter" default=(0,0) endparam param p12 caption="Add Cos Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Wigwam Function" default=ident() endfunc func fn3 caption="Abs Function" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param p19 caption="Add Pixel Parameter" default=(0,0) endparam func fn5 caption="Add Pixel Function" default=ident() visible=@p19!=0 endfunc param p4 caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Wufu(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sf(pz) endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*pz+@pzp2 return exp(@p2*1i)*(pz^3-pz)/(@p1*pz^2+1)+@c+@p3*@pf(fpixel) endfunc default: title="Wufu" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Wufu Parameter 1" default=(1.35,0) endparam param p2 caption="Wufu Parameter 2" default=0.0 endparam param c caption="Julia Seed" default=(0,0) endparam param p3 caption="Pixel Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@p3!=0 endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_SiegelMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=exp(@p1*1i)*pz+pz^2 return exp(@p2*1i)*pz^2*(pz-@p3)/(1-@p3*pz) endfunc default: title="Siegel Munster" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Siegel Parameter" default=0.5 endparam param p2 caption="Munster Parameter 1" default=0.5 endparam param p3 caption="Munster Parameter 2" default=(10,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarJulia2(common.ulb:DivergentFormula) { ;Based on a formula from gerrit on fractalforums: ;https://fractalforums.org/fractal-mathematics-and-new-theories/28/holomorphic-mandelbrot-extensions/1475/30 public: complex func Init(complex pz) pz=@sf(pz) b=(0,0) if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex b complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pz=pz^2+@bp1*pk+@c pk=pk^2+@bp2*pz+@c elseif @v==1 b=pz pz=pz^2+(@bp1-0.35)*pk+@c pk=pk^2+@bp2*b+@c elseif @v==2 pz=(pz^2+@c)^2+@bp1*pk+@c pk=(pk^2+@c)^2+@bp2*pz+@c elseif @v==3 b=pz pz=(pz^2+@c)^2+(@bp1-0.35)*pk+@c pk=(pk^2+@c)^2+@bp2*b+@c elseif @v==4 pz=((pz^2+@c)^2+@c)^2+(@bp1-1.22)*pk+@c pk=((pk^2+@c)^2+@c)^2+@bp2*pz+@c else b=pz pz=((pz^2+@c)^2+@c)^2+(@bp1-1.13)*pk+@c pk=((pk^2+@c)^2+@c)^2+@bp2*b+@c endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v2==0 pz=pz^2+@bp1*pk2+@c pk2=pk2^2+@bp2*pz+@c elseif @v2==1 b=pz pz=pz^2+(@bp1-0.35)*pk2+@c pk2=pk2^2+@bp2*b+@c elseif @v2==2 pz=(pz^2+@c)^2+@bp1*pk2+@c pk2=(pk2^2+@c)^2+@bp2*pz+@c elseif @v2==3 b=pz pz=(pz^2+@c)^2+(@bp1-0.35)*pk2+@c pk2=(pk2^2+@c)^2+@bp2*b+@c elseif @v2==4 pz=((pz^2+@c)^2+@c)^2+(@bp1-1.22)*pk2+@c pk2=((pk2^2+@c)^2+@c)^2+@bp2*pz+@c else b=pz pz=((pz^2+@c)^2+@c)^2+(@bp1-1.13)*pk2+@c pk2=((pk2^2+@c)^2+@c)^2+@bp2*b+@c endif return pz return pk2 endif endfunc default: title="Bivar Julia 2" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9" visible=@v_SFormula<101 endparam param v2 caption="Variant" enum="1""2""3""4""5""6" visible=@v_SFormula>=101 endparam param c caption="Julia Seed" default=(-0.4,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(1.5,0) endparam func bf caption="Bivar function" default=ident() visible=@v_SFormula<101 endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Chebyshev-HalleyNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) a=@p4*f/f1 b=@p5*f2*a/f1 return pz-@p1*a*(1+(b/(1-@p3*b))/2)+@pf(fpixel) endfunc default: title="Chebyshev-Halley Nova" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="CHN Parameter 1" default=(1,0) endparam param p2 caption="CHN Parameter 2" default=(1,0) endparam param p3 caption="CHN Parameter 3" default=(1.5,0) endparam param p4 caption="CHN Parameter 4" default=(1,0) endparam param p5 caption="CHN Parameter 5" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func pf caption="Pixel Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MidpointMethod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@p2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) return @p3*pz-@p1*(f/(f1*(pz-(f/f1)/2)))+@c endfunc default: title="Midpoint Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Midpoint Parameter 1" default=(1,0) endparam param p2 caption="Midpoint Parameter 2" default=(1,0) endparam param p3 caption="Midpoint Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MidpointNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sp endfunc private: complex fPixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@p2 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) return @p3*pz-@p1*(f/(f1*(pz-(f/f1)/2)))+@pf(fpixel) endfunc default: title="Midpoint Nova Erratum" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="MN Parameter 1" default=(2,0) endparam param p2 caption="MN Parameter 2" default=(1,0) endparam param p3 caption="MN Parameter 3" default=(0.5,0) endparam param sp caption="Start Parameter" default=(1,0) endparam param pow caption="Exponent" default=3 endparam func @pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0.65,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod4(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz return @sf(pz) endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) z=@zp1*@zf(z)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(2*f*f1^2-f^6)/(2*f1^3)+@p3+@p4*@pf(fpixel) endfunc default: title="Rootmod 4" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(0.8,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param p4 caption="Pixel Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() visible=@p4!=0 endfunc param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_BivarX50(common.ulb:DivergentFormula) { ;This is a two variable modification of the cactus fractal ;http://mathworld.wolfram.com/CactusFractal.html public: complex func Init(complex pz) fpixel=pz a=(0,0) if @v_SFormula<101 if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sp pk=pz elseif @sv==2 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk else if @sv==0 pz=@sf(pz) pk2=pz elseif @sv==1 pz=@sp pk2=pz elseif @sv==2 pz=@sf(pz) pk2=@sp else pk2=@sf(pz) pz=@sp endif return pz return pk2 endif endfunc private: complex fpixel complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*@lf(pz)+@pzp2 pk=@pkp1*@lf(pk)+@pkp2 if @lv==0 pz=pz^3+(@pp*@pf(pixel)-@p1)*pz-@pp*@pf(fpixel)+@p2*pk pk=pk^3+(@pp*@pf(pixel)-@p1)*pk-@pp*@pf(fpixel)+@p3*pz else a=pz if @sv==0 || @sv==1 pz=pz^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pz-(@pp+0.25)*@pf(fpixel)+@p2*pk pk=pk^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pk-(@pp+0.25)*@pf(fpixel)+@p3*a else pz=pz^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pz-(@pp-0.5)*@pf(fpixel)+(@p2-0.7)*pk pk=pk^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pk-(@pp-0.5)*@pf(fpixel)+@p3*a endif endif return pz return pk else pz=@pzp1*@lf(pz)+@pzp2 pk2=@pkp1*@lf(pk2)+@pkp2 if @lv==0 pz=pz^3+(@pp*@pf(pixel)-@p1)*pz-@pp*@pf(fpixel)+@p2*pk2 pk2=pk2^3+(@pp*@pf(pixel)-@p1)*pk2-@pp*@pf(fpixel)+@p3*pz else a=pz if @sv==0 || @sv==1 pz=pz^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pz-(@pp+0.25)*@pf(fpixel)+@p2*pk2 pk2=pk2^3+((@pp+0.25)*@pf(pixel)-(@p1+0.75))*pk2-(@pp+0.25)*@pf(fpixel)+@p3*a else pz=pz^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pz-(@pp-0.5)*@pf(fpixel)+(@p2-0.7)*pk2 pk2=pk2^3+((@pp-0.5)*@pf(pixel)-(@p1-0.65))*pk2-(@pp-0.5)*@pf(fpixel)+@p3*a endif endif return pz return pk2 endif endfunc default: title="Bivar X 50" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param lv caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=1 endfunc param p1 caption="X Parameter" default=(1.25,0) endparam param p2 caption="Bivar Parameter 1" default=(1,0) endparam param p3 caption="Bivar Parameter 2" default=(1,0) endparam param pp caption="Pixel Parameter" default=(0.25,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 1" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func lf caption="Loop Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarJulia(common.ulb:DivergentFormula) { ;Based on a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) pz=@sf(pz) a=(0,0) if @v_SFormula<101 pk=pz return pz return pk else pk2=pz return pz return pk2 endif endfunc private: complex a complex pk2 complex func Iterate(complex pz) if @v_SFormula<101 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+pk^2+@c elseif @v==1 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@c-1.1 elseif @v==2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2-pk^2+@c elseif @v==3 pk=(@bp1-0.15)*@bf(pk/pz)+@bp2 pz=(pz+pk)^2+@c elseif @v==4 a=pk pk=(@bp1-0.8)*@bf(pk/pz)+@bp2-0.5 pz=(pz+a)^2/2+@c elseif @v==5 pk=@bp1*@bf(pk/pz)+@bp2 pz=(pz-pk)^2+@c+0.3 elseif @v==6 pk=(@bp1+0.4)*@bf(pk^2/pz)+@bp2-0.15 pz=pz^2+pk^2+@c-0.44 elseif @v==7 a=pk pk=@bp1*@bf(pk^2/pz)+@bp2-0.25 pz=pz^2+a^2+@c else pk=(@bp1-0.2)*@bf(pk/pz^2)+@bp2 pz=pz^2+pk^2+@c-0.25 endif return pz return pk else pz=@pzp1*pz+@pzp2 pk2=@pkp1*pk2+@pkp2 if @v==0 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+pk2^2+@c elseif @v==1 a=pk2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2+a^2+@c-1.1 elseif @v==2 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=pz^2-pk2^2+@c elseif @v==3 pk2=(@bp1-0.15)*@bf(pk2/pz)+@bp2 pz=(pz+pk2)^2+@c elseif @v==4 a=pk2 pk2=(@bp1-0.8)*@bf(pk2/pz)+@bp2-0.5 pz=(pz+a)^2/2+@c elseif @v==5 pk2=@bp1*@bf(pk2/pz)+@bp2 pz=(pz-pk2)^2+@c+0.3 elseif @v==6 pk2=(@bp1+0.4)*@bf(pk2^2/pz)+@bp2-0.15 pz=pz^2+pk2^2+@c-0.44 elseif @v==7 a=pk2 pk2=@bp1*@bf(pk2^2/pz)+@bp2-0.25 pz=pz^2+a^2+@c else pk2=(@bp1-0.2)*@bf(pk2/pz^2)+@bp2 pz=pz^2+pk2^2+@c-0.25 endif return pz return pk2 endif endfunc default: title="Bivar Julia" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9" endparam param c caption="Julia Seed" default=(0.1,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar function" default=ident() endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_BivarSiegelJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) a=(0,0) pk=pz return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 if @v==0 pk=@bp1*@bf(pk/pz)+@bp2 pz=exp(@sjp*1i)*(pz+pk)+pz^2+pk^2 else a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=exp(@sjp*1i)*(pz+a)+pz^2+a^2 endif return pz return pk endfunc default: title="Bivar Siegel Julia" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param v caption="Variant" enum="1""2" endparam param bp1 caption="Bivar Parameter 1" default=(0.25,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.075,0) endparam param sjp caption="SJ Parameter" default=0.0 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Wufu2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 return exp(@wp2*1i)*pz^2/(pz^9-pz+@wp1)+@c endfunc default: title="Wufu 2" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param wp1 caption="Wufu Parameter 1" default=(0.2,0) endparam param wp2 caption="Wufu Parameter 2" default=0.0 endparam param c caption="Julia Seed" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod5(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fPixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz-@p1*(f/f1)*((f/f1)*(f^2/(2*f1))*(2*(f^2/(2*f1))+1)+1)+@p3+0.05*@pf(fpixel) endfunc default: title="Rootmod 5" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp default=(1,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(-0.4,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Cactus(common.ulb:DivergentFormula) { ;Formula from Wolfram Mathworld, with added parameters ;http://mathworld.wolfram.com/CactusFractal.html public: complex func Init(complex pz) fPixel=pz return @sf(pz) endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 return pz^3+(@p2*@pf(fpixel)-@p1)*pz-@p2*@pf(fpixel) endfunc default: title="Cactus" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param p1 caption="Cactus Parameter" default=(1,0) endparam param p2 caption="Pixel Parameter" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod6(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@pzp1*@pzf(pz)+@pzp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) if @st==0 return pz-@p1*(f/f1)*(f^2/(2*f1))*((f/f1)+(f^2/(2*f1)))/((f/f1)-(f^3/(6*f1)))+@p3+0.1*@pf(fpixel) else return pz-@p1*(f/f1)*(f^2/(2*f1))*((f/f1)+(f^2/(2*f1)))/((f/f1)-(f^3/(6*f1)))+0.1*@pf(fpixel) endif endfunc default: title="Rootmod 6" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(1.25,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param p1 caption="Rootmod Parameter 1" default=(1,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_BivarDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @jm==0 pz=@sf(pz) else pz=@sp endif pk=pz return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) pz=@pzp1*@lf(pz)+@pzp2 pk=@pkp1*@lf(pk)+@pkp2 if @v==0 pk=@bp1*@bpf(pk/pz)+@bp2 if @jm==0 pz=pz^@pow1+@p1/(pz-@p2)^@pow2+pk^@pow1+@p1/(pk-@p2)^@pow2 else pz=pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2+pk^@pow1+@pf(fpixel)/(pk-@p2)^@pow2 endif else a=pk pk=(@bp1+0.35)*@bpf(pk/pz)+@bp2 if @jm==0 pz=pz^@pow1+@p1/(pz-@p2)^@pow2+a^@pow1+@p1/(a-@p2)^@pow2 else pz=pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2+a^@pow1+@pf(fpixel)/(a-@p2)^@pow2 endif endif return pz return pk endfunc default: title="Bivar Devaney" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.05,0) visible=@jm==1 endparam param p1 caption="Julia Seed" default=(-0.55,0) visible=@jm==0 endparam param p2 caption="Modification Parameter" default=(2,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.3,0) endparam func bpf caption="Bivar Function" default=ident() endfunc func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param pkp1 caption="K Parameter 1" default=(1,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam func lf caption="Loop Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Devaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fPixel complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 if @jm==0 return pz^@pow1+@p1/(pz-@p2)^@pow2 else return pz^@pow1+@pf(fpixel)/(pz-@p2)^@pow2 endif endfunc default: title="Devaney" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param p1 caption="Julia Seed" default=(-0.01,-0.01) visible=@jm==0 endparam param p2 caption="Modification Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param pow1 caption="Exponent !" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarGlynn(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) pk=pz return pz return pk endfunc private: complex pk complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^1.5+pk^1.5+@c return pz return pk endfunc default: title="Bivar Glynn" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param c caption="Julia Seed" default=(-0.2,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=cos() endfunc func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Glynn(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@pzp1*@pzf(pz)+@pzp2 return pz^1.5+@p1 endfunc default: title="Glynn" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Julia Seed" default=(-0.2,0) endparam func sf caption="Start Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_iMod(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=@i fpixel=pz if @jm==0 return @sf(pz) else if @st==0 return @sp else return @sf(pz) endif endif endfunc private: complex fpixel int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @jm==0 if @v==0 return pz-@p3*(pz+@p1)^i/(3*(pz+@p2)^2) else return pz-@p3*(pz+@p1)^3/(i*(pz+@p2)^(i-1)) endif else if @v==0 return pz-@pf(fpixel)*(pz+@p1)^i/(3*(pz+@p2)^2) else return pz-@pf(fpixel)*(pz+@p1)^3/(i*(pz+@p2)^(i-1)) endif endif endfunc default: title="Newton iMod" int param v_SFormula caption="Version" default=100 visible=@v_SFormula<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param i caption="Initial i" default=0 endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@jm==1 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 && @st==0 endparam param p1 caption="iMod Parameter 1" default=(0,0) endparam param p2 caption="iMod Parameter 2" default=(0,0) endparam param p3 caption="Newton Parameter" default=(1,0) visible=@jm==0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 || (@jm==1 && @st==1) endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000000001 exponential=true endparam } class OM_TrivarJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 elseif @sv==1 pz=@sf(pz) pk=@sp1 pw=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sf(pz) pw=@sf(pz) else pz=@sp1-0.6 pk=@sf(pixel) pw=@sf(pixel) endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@c elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@c elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@c else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^2+@c endif return pz return pk return pw endfunc default: title="Trivar Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp1 caption="Start Parameter" default=(0.05,0) visible=@sv!=2 endparam param sp2 caption="Start Parameter 2" default=(0.05,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Loop Variant" enum="1""2""3""4" endparam param c caption="Julia Seed" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 else pz=@sf(pz)+@sp1+@sp2 pk=@sp1 pw=@sp2 endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex fpixel complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@pf(fpixel) elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@pf(fpixel) elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@pf(fpixel) else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^2+@pf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2" endparam param sp1 caption="Start Parameter 1" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) endparam func sf caption="Start Function" default=ident() endfunc param v caption="Loop Variant" enum="1""2""3""4" endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_Rootmod7(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(f/f1)*(((f/f1)*(f^2/(2*f1)))^2+1)/((f/f1)*(f^2/(2*f1))-1)+@p3 endfunc default: title="Rootmod 7" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Rootmod Parameter 1" default=(-0.41,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Rootmod7Nova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz return @sp endfunc private: complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) return pz+@p1*(f/f1)*(((f/f1)*(f^2/(2*f1)))^2+1)/((f/f1)*(f^2/(2*f1))-1)+0.25*@pf(fpixel) endfunc default: title="Rootmod 7 Nova" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(1.25,0) endparam param p1 caption="Rootmod Parameter 1" default=(-0.41,0) endparam param p2 caption="Rootmod Parameter 2" default=(1,0) endparam param pp caption="Pixel Parameter" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_TrivarCactus(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) pz=@sf(pz) pk=@sp1 pw=@sp2 return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex fpixel complex func Iterate(complex pz) pz=@zp1*@lf(pz)+@zp2 pk=@kp1*@lf(pk)+@kp2 pw=@wp1*@lf(pw)+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^3+pk^3+pw^3+(@p2*@pf(fpixel)-@p1)*(pz+pk+pw)-@p2*@pf(fpixel) elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^3+a^3+b^3+(@p2*@pf(fpixel)-@p1)*(pz+a+b)-@p2*@pf(fpixel) elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^3+(@p2*@pf(fpixel)-@p1)*(pz+pk+pw)-@p2*@pf(fpixel) else a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+a+b)^3+(@p2*@pf(fpixel)-@p1)*(pz+a+b)-@p2*@pf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar Cactus" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param p1 caption="Cactus Parameter" default=(1,0) endparam param p2 caption="Pixel Parameter" default=(0.5,0) endparam param sp1 caption="Start Parameter 1" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc func lf caption="Loop Function" default=ident() endfunc param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_BivarX51(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) a=(0,0) fpixel=pz pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex a complex fpixel complex pk complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)+((1-@p1)*(pk^3-@p2)+@p1*pk^2)/((1-@p1)*3*pk^2+@p1) elseif @jm==1 pz=@p2*((1-@p1)*(pz^3-@pf(fpixel))+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)\ +@p2*((1-@p1)*(pk^3-@pf(fpixel))+@p1*pk^2)/((1-@p1)*3*pk^2+@p1) else pz=@p1*((1-@pf(fpixel))*(pz^3-(@p2+0.9))+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel))\ +@p1*((1-@pf(fpixel))*(pk^3-(@p2+0.9))+@pf(fpixel)*pk^2)/((1-@pf(fpixel))*3*pk^2+@pf(fpixel)) endif else if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)+((1-@p1)*(a^3-@p2)+@p1*a^2)/((1-@p1)*3*a^2+@p1) elseif @jm==1 pz=@p2*((1-@p1)*(pz^3-@pf(fpixel))+@p1*pz^2)/((1-@p1)*3*pz^2+@p1)\ +@p2*((1-@p1)*(a^3-@pf(fpixel))+@p1*a^2)/((1-@p1)*3*a^2+@p1) else pz=@p1*((1-@pf(fpixel))*(pz^3-(@p2+0.9))+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel))\ +@p1*((1-@pf(fpixel))*(a^3-(@p2+0.9))+@pf(fpixel)*a^2)/((1-@pf(fpixel))*3*a^2+@pf(fpixel)) endif endif return pz return pk endfunc default: title="Bivar X 51" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="X Parameter 1" default=(-1.5,0) endparam param p2 caption="X Parameter 2" default=(-1.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_IFB84(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) if real(fn2(pz))*imag(@p3)+real(@p3)*imag(fn2(pz))>=0 pz=(@p2+1i)*pz/@p1 else pz=1-(@p2-1i)*pz/@p1 endif return pz endfunc default: title="IFB 84" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="IFB Parameter 1" default=(1.06,-0.63) endparam param p2 caption="IFB Parameter 2" default=(1,0) endparam param p3 caption="IFB Parameter 3" default=(0,-1) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_MannJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) return @p1*(pz^@pow-@p2)+(1-@p1)*pz endfunc default: title="Mann Julia" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Mann Parameter 1" default=(-0.34379,0.20904) endparam param p2 caption="Mann Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MannMandel(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz return @sp endfunc private: complex fpixel complex func Iterate(complex pz) return @p1*(pz^@pow-1)+(1-@p1)*pz+@pf(fpixel) endfunc default: title="Mann Mandel" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Mann Parameter" default=(-0.4,0) endparam param pow caption="Exponent" default=3 endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarMannJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex pk complex a complex func Iterate(complex pz) if @v==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(a^@pow-@p2)+(1-@p1)*a else pk=@bp1*@bf(pk/pz)+@bp2 pz=(@p1-0.1)*(pz^@pow-@p2)+(1-(@p1-0.1))*pz+(@p1-0.1)*(pk^@pow-@p2)+(1-(@p1-0.1))*pk endif return pz return pk endfunc default: title="Bivar Mann Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption= "Start Variant" enum="1""2""3" endparam param v caption="Bivar Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@sv!=0 endparam param p1 caption="Mann Parameter 1" default=(-0.1,0) endparam param p2 caption="Mann Parameter 2" default=(0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_BivarMannMandel(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @sv==0 pz=@sp pk=pz elseif @sv==1 pz=@sf(pz) pk=pz elseif @sv==2 pz=@sf(pz) pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex pk complex a complex fpixel complex func Iterate(complex pz) if @v==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(a^@pow-@p2)+(1-@p1)*a+@pf(fpixel) else pk=@bp1*@bf(pk/pz)+@bp2 pz=@p1*(pz^@pow-@p2)+(1-@p1)*pz+@p1*(pk^@pow-@p2)+(1-@p1)*pk+@pf(fpixel) endif return pz return pk endfunc default: title="Bivar Mann Mandel" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption= "Start Variant" enum="1""2""3""4" endparam param v caption="Bivar Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@sv!=1 endparam param p1 caption="Mann Parameter 1" default=(-0.1,0) endparam param p2 caption="Mann Parameter 2" default=(0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=0 endfunc func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_BivarUshon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) a=pk pk=@bp1*@bf(pk/pz) if @jm==0 pz=(pz^2-@p1)^2/(2*pz*(pz-1)*(pz-@p1))+(a^2-@p1)^2/(2*a*(a-1)*(a-@p1))+@p2 else pz=(pz^2-@p1)^2/(2*pz*(pz-1)*(pz-@p1))+(a^2-@p1)^2/(2*a*(a-1)*(a-@p1))+@p3*@pf(fpixel) endif return pz endfunc default: title="Bivar Ushon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="Ushon Parameter" default=(-0.5,0) endparam param p2 caption="julia Seed" default=(0,0) visible=@jm==0 endparam param p3 caption="Pixel Parameter" default=(1,0) visible=@jm==1 endparam param bp1 caption="Bivar Parameter" default=(1,0) endparam func bf caption="Bivar Function" default=ident() endfunc func sf caption="Start Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_Ushon(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) m_ZOld=pz if @jm==0 pz=(pz^2-@p2)^2/(@p1*pz*(pz-1)*(pz-@p2))+@c elseif @jm==1 pz=(pz^2-@pf(fpixel))^2/(@p1*pz*(pz-1)*(pz-@pf(fpixel))) else pz=(pz^2-(@p2-0.5))^2/(@p1*pz*(pz-1)*(pz-(@p2-0.5)))+@pf(fpixel) endif return pz endfunc default: title="Ushon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Ushon Parameter" default=(2,0) endparam param p2 caption="Ushon Parameter 2" default=(-1,0) visible=@jm!=1 endparam param c default=(0,0) caption="Julia Seed" visible=@jm==0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Confon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fPixel complex func Iterate(complex pz) if @jm==0 return (1-@p1)*(@p2*pz+@p3*pz^2)+@p1*cos(@p4*pz+@p5*pz^2) else return (1-@pf(fpixel))*(@p2*pz+@p3*pz^2)+@pf(fpixel)*cos(@p4*pz+@p5*pz^2) endif endfunc default: title="Confon" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p1 caption="Julia Parameter" default=(-1.4,0) visible=@jm==0 endparam param p2 caption="Confon Parameter 1" default=(0.5,0) endparam param p3 caption="Confon Parameter 2" default=(0.5,0) endparam param p4 caption="Confon Parameter 3" default=(-1.5,0) endparam param p5 caption="Confon Parameter 4" default=(-0.8,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Magnezium(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @st==0 return @sp else return @sf(pixel) endif endfunc private: complex fPixel complex func Iterate(complex pz) pz=pz^2 return (pz+@pf(fpixel))/(pz-1) endfunc default: title="Magnezium" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam func sf caption="Start Function" default=sin() visible=@st==1 endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Beezie(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) return @sp endfunc private: complex c complex func Iterate(complex pz) pz=2-pz^2-@p1*cos(c) c=c-0.1+pz^2/2 return pz return c endfunc default: title="Beezie" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Beezie Parameter" default=(2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_TrivarJulia2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) if @sv==0 pz=@sf(pz) pk=@sp1 pw=@sp2 else if @version <101 pz=@sf(pz) pk=@sp1 pw=@sf(pz) else pw=@sf(pz) pz=@sf(pz) pk=@sp1 endif endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex func Iterate(complex pz) pz=@zp1*@lf(pz)+@zp2 pk=@kp1*@lf(pk)+@kp2 pw=@wp1*@lf(pw)+@wp2 if @v==0 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+pk^2+pw^2+@c+@p1*pw+@p2*pz+@p3*pk elseif @v==1 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+a^2+b^2+@c+@p1*b+@p2*pz+@p3*a elseif @v==2 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz-pk-pw)^2+@c+@p1*pw+@p2*pz+@p3*pk elseif @v==3 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2-a^2-b^2+@c+@p1*b+@p2*pz+@p3*a elseif @v==4 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz-pk-pw)^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw elseif @v==5 a=pk b=pw pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2-a^2-b^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw elseif @v==6 pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=(pz+pk+pw)^2+@c+@p1*pw+@p2*pz+@p3*pk else pk=@bp1*@bf1(pk/pz)+@bp2 pw=@bp3*@bf2(pw/pz)+@bp4 pz=pz^2+(pk+pw)^2+@c+@p1*pw*pz+@p2*pz*pk+@p3*pk*pw endif return pz return pk return pw endfunc default: title="Trivar Julia 2" int param version caption="Version" default=101 visible=@version<101 endparam param sv caption="Start Variant" enum="1""2" endparam param v caption="Loop Variant" enum="1""2""3""4""5""6""7""8" default=2 endparam param sp1 caption="Start Parameter" default=(0.05,0) endparam param sp2 caption="Start Parameter 2" default=(0.05,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param c caption="Julia Seed" default=(0.2,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam param p1 caption="Bivar Parameter 5" default=(1,0) endparam param p2 caption="Bivar Parameter 6" default=(-0.4,0) endparam param p3 caption="Bivar Parameter 7" default=(1,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc func lf caption="Loop Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(1,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Branner-Fagella(common.ulb:DivergentFormula) { ;Formula from https://en.wikibooks.org/wiki/Fractals/mandel#Wake public: complex func Init(complex pz) fPixel=pz if @st==0 return @sp else return @sf(pz) endif endfunc private: complex fPixel complex func Iterate(complex pz) return @pf(fpixel)*pz*(1+pz/@pow)^@pow endfunc default: title="Branner-Fagella" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0.3,0) visible=@st==0 endparam param pow caption="Exponent" default=(4,0) endparam func sf caption="Start Function" default=ident() visible=@st==1 endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Ahtanu(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @v==0 || @v==1 return @sp else return @sp+1 endif endfunc private: complex fPixel complex func Iterate(complex pz) if @v==0 pz=@p2*1i*pz elseif @v==1 pz=(@p2-0.7)*1i*pz elseif @v==2 pz=(@p2-1.1)*1i*pz else pz=(@p2-2.9)*1i*pz endif if @v==0 pz=exp(@p3*1i)*pz^2*(cos(@p1*tan(pz))+1i*sin(@p1*tan(pz)))+@pf(fpixel) elseif @v==1 pz=exp(@p3*1i)*pz^2*(cos(@p1*tanh(pz))+1i*sin(@p1*tanh(pz)))+@pf(fpixel) elseif @v==2 pz=exp(@p3*1i)*pz^2*(cos(@p1*cotan(pz))+1i*sin(@p1*cotan(pz)))+@pf(fpixel) else pz=exp(@p3*1i)*pz^2*(cos(@p1*cotanh(pz))+1i*sin(@p1*cotanh(pz)))+@pf(fpixel) endif return pz endfunc default: title="Ahtanu" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Ahtanu Parameter 1" default=(1,0) endparam param p3 caption="Ahtanu Parameter 2" default=0.0 endparam param p2 caption="Z Parameter" default=1.9 endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_BivarJulia3(common.ulb:DivergentFormula) { ;Modification of a formula from Paul Derbyshire on fractalforums public: complex func Init(complex pz) a=(0,0) pz=@sf(pz) pk=@sp return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) a=pk if @v==0 pk=@bp1*@bf(pk/pz+pz/pk)/4+@bp2 elseif @v==1 pk=@bp1*@bf(pk/pz-pz/pk)/4+@bp2 elseif @v==2 pk=@bp1*@bf(pk^2/pz+pz/pk)/4+@bp2 elseif @v==3 pk=@bp1*@bf(pk^2/pz-pz/pk)/4+@bp2 elseif @v==4 pk=@bp1*@bf(pk/pz+pz/pk^2)/4+@bp2 elseif @v==5 pk=@bp1*@bf(pk/pz-pz/pk^2)/4+@bp2 elseif @v==6 pk=@bp1*@bf(pk^2/pz+pz/pk^2)/4+@bp2 elseif @v==7 pk=@bp1*@bf(pk^2/pz-pz/pk^2)/4+@bp2 endif if @v2==0 pz=a^2+pz^2+@p3 elseif @v2==1 pz=a^2+pz^3+@p3 elseif @v2==2 pz=a^2+pz^4+@p3 elseif @v2==3 pz=a^2+pz^2+a*pz+@p3 elseif @v2==4 pz=a^2+pz^3+a*pz^2+@p3 else pz=a^2+pz^4+a*pz^3+@p3 endif return pz return pk endfunc default: title="Bivar Julia 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant 1" enum="1""2""3""4""5""6""7""8" endparam param v2 caption="Variant 2" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.5,0) endparam param p3 caption="Julia Seed" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX52(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) if @sv==0 pk=@sf(pz) pz=@sp else pk=@sp+1.75 pz=@sf(pz) endif return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 a=pk pk=@bp*pk/pz pz=@p1*(2*@p2)^(1-pz)/(pz*(1-pz))+@p1*(2*@p2)^(1-a)/(a*(1-a))+@p2 return pz return pk endfunc default: title="Bivar X 52" int param version caption="Version" default=100 visible=@version<100 endparam param @sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.5,0) endparam param p1 caption="X Parameter 1" default=(0.25,0) endparam param p2 caption="X Parameter 2" default=(0.5,0) endparam param bp caption="Bivar Parameter" default=(0.65,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarX53(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz if @sv==0 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp-2.05 endif return pz return pk endfunc private: complex a complex pk complex fpixel complex func Iterate(complex pz) if @sv==0 pz=@zp1*pz+@zp2 else pz=(@zp1+0.2)*pz+@zp2 endif a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=((pz*@pf(fpixel)-@p2)^2-@p2)^2+((a*@pf(fpixel)-@p2)^2-@p2)^2-2*@p2 return pz return pk endfunc default: title="Bivar X 53" int param version caption="Version" default=100 visible=@version<100 endparam param @sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.45,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param p2 caption="X Parameter" default=0.75 endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarBudarning(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) a=(0,0) if @sv==0 pk=@sf(pz) pz=@sp elseif @sv==1 pz=@sf(pz) pk=@sp-0.75 elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sf(pz) endif return pz return pk endfunc private: complex a complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 pz=pz^2-c*(pz^2-c*(pz^2-c*(pz^2-c)))+a^2-c*(a^2-c*(a^2-c*(a^2-c)))+@p1 elseif @v==1 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2-c)))+a^2+c*(a^2-c*(a^2+c*(a^2-c)))+@p1 elseif @v==2 pz=pz^2-c*(pz^2+c*(pz^2+c*(pz^2+c)))+a^2-c*(a^2+c*(a^2+c*(a^2+c)))+@p1 elseif @v==3 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2+c)))+a^2+c*(a^2-c*(a^2+c*(a^2+c)))+@p1 elseif @v==4 pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2+c)))+a^2+c*(a^2+c*(a^2-c*(a^2+c)))+@p1 elseif @v==5 pz=pz^2+c*(pz^2+c*(pz^2+c*(pz^2-c)))+a^2+c*(a^2+c*(a^2+c*(a^2-c)))+@p1 else pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2-c)))+a^2+c*(a^2+c*(a^2-c*(a^2-c)))+@p1 endif return pz return pk endfunc default: title="Bivar Budarning" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2""3""4""5""6""7" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=3 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param p1 caption="Budarning Parameter" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Budarning(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@pf(fpixel) return @sp endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2-c*(pz^2-c*(pz^2-c*(pz^2-c)))+@p1 elseif @v==1 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2-c)))+@p1 elseif @v==2 pz=pz^2-c*(pz^2+c*(pz^2+c*(pz^2+c)))+@p1 elseif @v==3 pz=pz^2+c*(pz^2-c*(pz^2+c*(pz^2+c)))+@p1 elseif @v==4 pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2+c)))+@p1 elseif @v==5 pz=pz^2+c*(pz^2+c*(pz^2+c*(pz^2-c)))+@p1 else pz=pz^2+c*(pz^2+c*(pz^2-c*(pz^2-c)))+@p1 endif return pz endfunc default: title="Budarning" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Budarning Parameter" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Mogotrevo(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if real(pz)@p_bailout) return bail endfunc default: title="Trivar X 13" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param v caption="Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="X Parameter 1" default=(-0.8,0) endparam param p2 caption="X Parameter 2" default=(0.4,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p6 caption="X Parameter 6" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_TrivarX9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if@jm==0 if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==3 pz=@sf(pz) pk=@sp pw=pz elseif @sv==4 pk=@sf(pz)-@sp pw=@sf(pz)+@sp pz=@sf(pz)-@sp else pk=@sf(pz)-@sp pz=@sf(pz) pw=@sp endif else if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sp pk=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp elseif @sv==3 pk=@sf(pz) pz=@sp pw=@sp elseif @sv==4 pk=@sf(pz)+@sp pw=@sf(pz)+@sp pz=@sf(pz)+@sp else pk=@sf(pz)+@sp pw=@sf(pz) pz=@sp endif endif return pz return pk return pw endfunc private: complex pk complex pw complex fpixel complex func Iterate(complex pz) if @jm==0 if @v==0 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*pw*pk-@p5*pz elseif @v==1 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*cos(pw)*pk-@p5*pz elseif @v==2 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*exp(pw)*pk-@p5*pz elseif @v==3 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*pw*exp(pk)-@p5*pz else pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@c pz=@p4*cosh(pw)*pk-@p5*tan(pz) endif else if @v==0 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*pw*pk-@p5*pz elseif @v==1 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*cos(pw)*pk-@p5*pz elseif @v==2 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*exp(pw)*pk-@p5*pz elseif @v==3 pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*pw*exp(pk)-@p5*pz else pw=pk-@p1*pw+@p2*pk*pz pk=@p3*pk-pw*pz+pz+@pf(fpixel) pz=@p4*cosh(pw)*pk-@p5*tan(pz) endif endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar X 9" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Loop Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() visible=(@sv!=1 && @jm==1) || @jm==0 endfunc param sp caption="Start Parameter" visible=@sv!=0 default=(0.5,0) endparam param p1 caption="X Parameter 1" default=(0.75,0) endparam param p2 caption="X Parameter 2" default=(0.5,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(0.9,0) endparam param p5 caption="X Parameter 5" default=(-0.5,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX10(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz b=(0,0) if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=@sf(pz) pk=@sp pw=pz elseif @sv==2 pk=@sf(pz) pz=@sp pw=@sp else pz=@sf(pz) pk=pz+@sp pw=pz-@sp endif return pz return pk return pw endfunc private: complex fpixel complex pk complex pw complex b complex func Iterate(complex pz) b=pk pw=@p1*@xf(pk) pk=@p2*pw-pk-pw*pz pz=@p3*pz+pw*pk pw=@p1*pk pk=@p4*pw-pk-pw*pz if @jm==0 pz=@p3*pz-pw*b else pz=@p3*pz-pw*b+@sf(fpixel) endif return pz return pk return pw endfunc default: title="Trivar X 10" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=flip() endfunc param sp caption="Start Parameter" default=(-4,0) visible=@sv!=0 endparam param p1 caption="X Parameter 1" default=(0.2,0) endparam param p2 caption="X Parameter 2" default=(-1.5,0) endparam param p3 caption="X Parameter 3" default=(-0.7,0) endparam param p4 caption="X Parameter 4" default=(-0.5,0) endparam func xf caption="X Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=200.0 exponential=true endparam } class OM_TrivarX11(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sf(pz) pk=@sp pw=pz elseif @sv==1 pk=@sf(pz) pz=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp-0.5 else pw=@sf(pz) pz=@sp+0.5 pk=@sp+0.5 endif return pz return pk return pw endfunc private: complex fpixel complex pk complex pw complex func Iterate(complex pz) if @jm==0 pw=pk-pw+@c pk=-@p3*pz*@xf(pw) pz=-@p1+pw*pk+@p2*pk else pw=pk-pw+@sf(fpixel) pk=-@p3*pz*@xf(pw) pz=-@p1+pw*pk+@p2*pk endif return pz return pk return pw endfunc default: title="Trivar X 11" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam func xf caption="X Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(-0.1,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX12(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=pz pw=@sp elseif @sv==2 pz=@sf(pz) pk=@sp pw=pz else pk=@sf(pz) pz=@sp pw=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) if @jm==0 pw=@p1*(pk-pw)+@p2*pw*pz+@c pk=@p3*pw-pw*pz+@p4*pk pz=@p5*pz+pw*pk-@p6*pw^2 else pw=@p1*(pk-pw)+@p2*pw*pz+c pk=@p3*pw-pw*pz+@p4*pk pz=@p5*pz+pw*pk-@p6*pw^2 endif return pz return pk return pw endfunc default: title="Trivar X 12" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.5,0) endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(0.25,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p6 caption="X Parameter 6" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TetravarX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz pw=pz pq=pz elseif @sv==1 pw=@sf(pz) pq=@sf(pz) pz=@sp pk=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp pq=@sp elseif @sv==3 pk=@sf(pz) pq=@sf(pz) pz=@sp pw=@sp elseif @sv==4 pz=@sf(pz) pk=@sp pw=pz pq=@sp elseif @sv==5 pz=@sf(pz) pk=@sp pw=@sp pq=pz else pk=@sf(pz) pw=@sf(pz) pz=@sp pq=@sp endif return pz return pq return pk return pw endfunc private: complex pk complex pw complex pq complex c complex func Iterate(complex pz) if @jm==0 pw=pq*(-pk-@p1)+(1-pq)*(pz+@p1) pk=pq*(pw+@p2-1)+pk*(1-pq)*(pz+@p1)/(pw+@p3-1) pz=pq*pz*(-pk-@p1)/(pw-@p3)+(1-pq)*(@p2-pw) pq=@p4*(pq*(1-pq)*(pq-1+pw)-@p5*(pq-0.5))+@c else pw=pq*(-pk-@p1)+(1-pq)*(pz+@p1) pk=pq*(pw+@p2-1)+pk*(1-pq)*(pz+@p1)/(pw+@p3-1) pz=pq*pz*(-pk-@p1)/(pw-@p3)+(1-pq)*(@p2-pw) pq=@p4*(pq*(1-pq)*(pq-1+pw)-@p5*(pq-0.5))+c endif return pz return pw return pk return pq endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw+pq)/4|>@p_bailout) return bail endfunc default: title="Tetravar X 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7" default=3 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarKoskex(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) if @jm==0 pz=@sf(pz) pk=pz else pz=@sp pk=pz endif return pz return pk endfunc private: complex fpixel complex a complex pk complex func Iterate(complex pz) a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @v==0 if @jm==0 pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(a^3-@p3*@p1*a^2))/(a+@p1/@p3)+@c else pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(a^3-@p3*@p1*a^2))/(a+@p1/@p3)+@pf(fpixel) endif else if @jm==0 pz=(@p2*(pz^3-@p3*@p1*pz^2))/(pz+@p1/@p3)+(@p2*(pk^3-@p3*@p1*pk^2))/(pk+@p1/@p3)+@c else pz=(@p2*(pz^3-(@p3-1.15)*@p1*pz^2))/(pz+@p1/(@p3-1.15))+(@p2*(pk^3-(@p3-1.15)*@p1*pk^2))/(pk+@p1/(@p3-1.15))+@pf(fpixel) endif endif return pz return pk endfunc default: title="Bivar Koskex" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param p1 caption="Koskex Parameter 1" default=(1,0) endparam param p2 caption="Koskex Parameter 2" default=(-0.5,0) endparam param p3 caption="Koskex Parameter 3" default=(-2.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.37,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func bf caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Koskex(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex fpixel complex func Iterate(complex pz) if @jm==0 return @p2*(pz^3-@p3*@p1*pz^2)/(pz+@p1/@p3)+@c else return @p2*(pz^3-@p3*@p1*pz^2)/(pz+@p1/@p3)+@pf(fpixel) endif endfunc default: title="Koskex" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param p1 caption="Koskex Parameter 1" default=(1,0) endparam param p2 caption="Koskex Parameter 2" default=(-0.5,0) endparam param p3 caption="Koskex Parameter 3" default=(-2.25,0) endparam param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX14(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) fpixel=pz c=@sf(fpixel) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pz=@sf(pz) pk=pz pw=@sp elseif @sv==3 pk=@sf(pz) pw=@sf(pz) pz=@sp else pz=@sf(pz) pk=pz pw=pz endif return pz return pk return pw endfunc private: complex a complex b complex pk complex pw complex c complex func Iterate(complex pz) a=pw b=pk if @jm==0 pw=@p1*fn1(recip(pw/pk/pz))+@p2 pk=pk^2+pz^2 pz=b^2+pz^2+a^2+@c else pw=@p1*fn1(recip(pw/pk/pz))+@p2 pk=pk^2+pz^2 pz=b^2+pz^2+a^2+c endif return pz return pk return pw endfunc default: title="Trivar X 14" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.33,0) visible=@sv!=4 endparam param c caption="Julia Seed" default=(-0.25,0) visible=@jm==0 endparam param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam func fn1 caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_BivarCombone1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) pz=@sf(pz) pk=pz return pz return pk endfunc private: complex a complex pk complex func Iterate(complex pz) a=pk pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)-3+pk+@c pk=pk^2+((pk^2+@p1-1)/(2*pk+@p1-2))^2+@p2*pk^2*(pk-@p3)/(1-@p3*pk)-3+a+@c return pz return pk endfunc default: title="Bivar Combone 1" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param c caption="Julia Seed" default=(0,0) endparam param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarCombone2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) fpixel=pz c=@pf(fpixel) if @jm==0 pz=@sf(pz) pk=pz else pz=@sp pk=pz endif return pz return pk endfunc private: complex c complex a complex pk complex func Iterate(complex pz) a=pk if @jm==0 pk=@bp1*pk/pz+@bp2 else pk=(@bp1-0.5)*pk/pz+@bp2 endif if @jm==0 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+@c elseif @jm==1 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+c elseif @jm==2 pz=pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3*c)/(1-@p3*c*pz)+a^2+((a^2+@p1-1)/(2*a+@p1-2))^2+@p2*a^2*(a-@p3*c)/(1-@p3*c*a)-3+c else pz=pz^2+((pz^2+@p1*c-1)/(2*pz+@p1*c-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+a^2+((a^2+@p1*c-1)/(2*a+@p1*c-2))^2+@p2*a^2*(a-@p3)/(1-@p3*a)-3+c endif return pz return pk endfunc default: title="Bivar Combone 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" default=3 endparam param sp caption="Start Parameter" default=(0.3,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param bp1 caption="Bivar Parameter 1" default=(-0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Combone(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@pf(fpixel) if @jm==0 return @sf(pz) else return @sp endif endfunc private: complex c complex func Iterate(complex pz) if @jm==0 return pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)-3+@c elseif @jm==1 return pz^2+((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+c-3 else return pz^2+((pz^2+@p1*c-1)/(2*pz+@p1*c-2))^2+@p2*pz^2*(pz-@p3)/(1-@p3*pz)+c-3 endif endfunc default: title="Combone" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm!=0 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc param c caption="Julia Seed" default=(0,0) visible=@jm==0 endparam func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param p1 caption="Combone Parameter 1" default=(1,0) endparam param p2 caption="Combone Parameter 2" default=(1,0) endparam param p3 caption="Combone Parameter 3" default=(1.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarX15(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 if @jm==1 pz=@sp pk=pz pw=pz else pk=@sp-@sf(pz) pw=@sp-@sf(pz) pz=@sp+@sf(pz) endif elseif @sv==2 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==3 pz=@sf(pz) pk=pz pw=@sp elseif @sv==4 if @jm==1 pz=@sf(pz) pk=@sp pw=pz else pz=@sf(pz) pk=@sp pw=@sp endif else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex pk complex pw complex c complex func Iterate(complex pz) if @jm==0 pw=(@p1-0.9925)-@p2*(pk^2-pz^2)-(@p3-0.5)*pw^3 pk=(@p1-0.9925)-@p2*(pw^2-pz^2)-@p4*pk^3 pz=(@p1-0.9925)-@p2*(pw^2-pk^2)-@p5*pz^3 else pw=@p1-@p2*(pk^2-pz^2)-@p3*c*pw^3 pk=@p1-@p2*(pw^2-pz^2)-@p4*c*pk^3 pz=@p1-@p2*(pw^2-pk^2)-@p5*c*pz^3 endif return pz return pk return pw endfunc default: title="Trivar X 15" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(0.5,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(1,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_TrivarX16(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 if @sv==0 pz=@sf(pz) pk=pz pw=pz elseif @sv==1 pz=-@sf(pz) pk=-pz pw=-pz elseif @sv==2 pz=-@sf(pz) pk=pz pw=-pz else pz=@sf(pz) pk=-pz pw=pz endif else if @sv==0 pz=@sp pk=@sp pw=@sp elseif @sv==1 pz=-@sp pk=@sp pw=@sp elseif @sv==2 pz=-@sp pk=-@sp pw=@sp else pz=@sp pk=-@sp pw=@sp endif endif return pz return pk return pw endfunc private: complex pk complex pw complex c complex func Iterate(complex pz) pw=fn1(pw) pk=fn2(pk) pz=fn3(pz) if @jm==0 pw=@p1*pw*(1-pw)+@p2*pz pk=@p1*pk*(1-pk)+@p2*pw pz=pk+@c else pw=@p1*pw*(1-pw)+@p2*pz pk=@p1*pk*(1-pk)+@p2*pw pz=pk+c endif return pz return pk return pw endfunc default: title="Trivar X 16" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4" visible=(@jm!=1 || @sp!=0) endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm==1 endfunc param c caption="Julia Seed" default=(-1.3,0) visible=@jm==0 endparam param p1 caption="X Parameter 1" default=(-0.6,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam func fn1 caption="W Function" default=ident() endfunc func fn2 caption="K Function" default=ident() endfunc func fn3 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_MunsterValmyst(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 return @sf(pz) endfunc private: complex fPixel int i complex z_values[@p1] complex func Iterate(complex pz) i=i+1 if @vmv==0 if i<@p1 z_values[i]=@p2*pz+@p3 endif elseif @vmv==1 if i<@p1 z_values[i]=@p2*sqr(pz)+@p3 endif elseif @vmv==2 if i<@p1 z_values[i]=@p2*tanh(pz)+@p3 endif elseif @vmv==3 if i<@p1 z_values[i]=pz+@p2*pz^2+@p3 endif elseif @vmv==4 if i<@p1 z_values[i]=pz+@p2*exp(pz)^2+@p3 endif elseif @vmv==5 if i<@p1 z_values[i]=pz+@p2*cos(pz)^2+@p3 endif elseif @vmv==6 if i<@p1 z_values[i]=pz-@p2/pz+@p3 endif elseif @vmv==7 if i<@p1 z_values[i]=pz+@p2/sqr(pz)+@p3 endif elseif @vmv==8 if i<@p1 z_values[i]=pz-@p2/exp(pz)+@p3 endif elseif @vmv==9 if i<@p1 z_values[i]=pz-@p2/cotan(pz)+@p3 endif elseif @vmv==10 if i<@p1 z_values[i]=pz-@p2/tan(pz)+@p3 endif else if i<@p1 z_values[i]=pz-@p2/cosh(pz)+@p3 endif endif if @jm==0 pz=@p5*pz^2*(pz-(z_values[i]))/(1-(z_values[i])*pz)+@p4 else pz=@p5*pz^2*(pz-@sf(fpixel)*(z_values[i]))/(1-@sf(fpixel)*(z_values[i])*pz)+@p4 endif return pz endfunc default: title="Munster Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam func sf caption="Start Function" default=ident() endfunc param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7"\ "8""9""10""11""12" endparam param p1 caption="Valmyst Parameter 1" default=6 endparam param p2 caption="Valmyst Parameter 2" default=(0.5,0) endparam param p3 caption="Valmyst Parameter 3" default=(0,0) endparam param p4 caption="Munster Parameter 1" default=(0.5,0) endparam param p5 caption="Munster Parameter 2" default=(0,2.5) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_MagnetValmyst(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) i=0 if @st==0 return @sf(pz) else return @sp endif endfunc private: complex c int i complex z_values[@p1] complex func Iterate(complex pz) if @v2==0 i=i+1 if i<@p1 z_values[i]=pz endif elseif @v2==1 if i<@p1 i=i+1 z_values[i]=pz endif elseif @v2==2 i=i+1 if i<@p1 z_values[i]=pz else z_values[i]=c endif elseif @v2==3 i=i+1 if i<@p1 z_values[i]=c else z_values[i]=pz endif else i=i+1 if i<@p1 z_values[i]=pz else z_values[i]=pz^2 endif endif if @v==0 pz=@p2*sqr(fn1(z_values[i]))+((pz^2+c-1)/(2*pz+c-2))^2 elseif @v==1 pz=@p2*sqr(cosh(fn1(z_values[i])))*((pz^2+c-1)/(2*pz+c-2))^2 elseif @v==2 pz=((pz^2+c*0.5*@p2*sqr(exp(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(exp(fn1(z_values[i])))-2))^2 elseif @v==3 pz=((pz^2+c*0.5*@p2*sqr(cos(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(cos(fn1(z_values[i])))-2))^2 else pz=((pz^2+c*0.5*@p2*sqr(cosh(fn1(z_values[i])))-1)/(2*pz+c*0.5*@p2*sqr(cosh(fn1(z_values[i])))-2))^2 endif return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc default: title="Magnet Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Magnet Variant" enum="1""2""3""4""5" endparam param v2 caption="Valmyst Variant" enum="1""2""3""4""5" endparam param p1 caption="Valmyst Parameter 1" default=3 endparam param p2 caption="Valmyst Parameter 2" default=(1,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Divergent Bailout value" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout value" default=0.00005 exponential=true endparam } class OM_MandelbrotValmyst(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) i=0 if @st==0 return @sf(pz) else return @sp endif endfunc private: complex c int i complex z_values[@p2] complex func Iterate(complex pz) i=i+1 if @v==0 if i==@p2 z_values[i]=@p1*pz+@p3 endif elseif @v==1 if i==@p2 z_values[i]=@p1*pz^2+@p3 endif elseif @v==2 if i==@p2 z_values[i]=@p1*pz^3+@p3 endif elseif @v==3 if i==@p2 z_values[i]=@p1*(pz+c)*(pz-c)+@p3 endif elseif @v==4 if i==@p2 z_values[i]=@p1*pz^2*(pz-c)/(1-c*pz)+@p3 endif elseif @v==5 if i==@p2 z_values[i]=@p1*((pz^2+c-1)/(2*pz+c-2))^2+@p3 endif elseif @v==6 if i==@p2 z_values[i]=@p1*pz^3*(pz-3)/(1-3*pz)+@p3 endif elseif @v==7 if i==@p2 z_values[i]=@p1*pz^2*(pz-2)/(1-2*pz)+@p3 endif elseif @v==8 if i==@p2 z_values[i]=@p1*pz^2*(1-2*pz)/(pz-2)+@p3 endif elseif @v==9 if i==@p2 z_values[i]=@p1*exp(pz)+@p3 endif else if i==@p2 z_values[i]=@p1*(exp(pz)+sqr(pz))+@p3 endif endif return pz^@pow+c+z_values[i] endfunc default: title="Mandelbrot Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Valmyst Variant" enum="1""2""3""4""5""6""7"\ "8""9""10""11" endparam param p2 caption="Valmyst Parameter 1" default=6 endparam param p1 caption="Valmyst Parameter 2" default=(1,0) endparam param p3 caption="Valmyst Parameter 3" default=(0,0) endparam param pow caption="Mandelbrot Exponent" default=2 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_NewtonValmyst(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@sf(pz) i=0 return pz endfunc private: complex fpixel int i complex a[@p1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @v==0 if i<@p1 a[i]=pz endif elseif @v==1 if i<@p1 a[i]=pz+pz^2 endif elseif @v==2 if i<@p1 a[i]=pz-pz^2 endif elseif @v==3 if i<@p1 a[i]=pz+1/pz endif elseif @v==4 if i<@p1 a[i]=pz-1/pz endif elseif @v==5 if i<@p1 a[i]=pz-(pz^3-1)/(3*pz^2) endif elseif @v==6 if i<@p1 a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==7 if i<@p1 a[i]=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @v==8 if i<@p1 a[i]=pz^2*(pz+2)/(1+2*pz) endif elseif @v==9 if i<@p1 a[i]=pz^2*(pz+0.5)/(1+0.5*pz) endif elseif @v==10 if i<@p1 a[i]=((pz^2-1)/(2*pz-2))^2 endif elseif @v==11 if i<@p1 a[i]=((pz^2)/(2*pz-1))^2 endif elseif @v==12 if i<@p1 a[i]=((pz^2-2)/(2*pz-3))^2 endif elseif @v==13 if i<@p1 a[i]=1/pz endif elseif @v==14 if i<@p1 a[i]=-1/pz endif elseif @v==15 if i<@p1 a[i]=pz*fpixel^2 endif elseif @v==16 if i<@p1 a[i]=-pz*fpixel^2 endif elseif @v==17 if i<@p1 a[i]=pz*fpixel^2 else a[i]=pz^2*fpixel endif elseif @v==18 if i<@p1 a[i]=-pz*fpixel^2 else a[i]=+pz^2*fpixel endif elseif @v==19 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=-pz^2*fpixel^2 endif elseif @v==20 if i<@p1 a[i]=pz*fpixel^2 else a[i]=-pz^2*fpixel^2 endif elseif @v==21 if i<@p1 a[i]=pz^2*fpixel else a[i]=-pz^2*fpixel^2 endif elseif @v==22 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=-pz^2*fpixel endif elseif @v==23 if i<@p1 a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==24 if i<@p1 a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) else a[i]=pz^2*fpixel^2 endif elseif @v==25 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==26 if i<@p1 a[i]=pz^2*(pz+0.5)/(1+0.5*pz) else a[i]=pz^2*(pz+fpixel)/(1+fpixel*pz) endif elseif @v==27 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2 endif elseif @v==28 if i<@p1 a[i]=pz^2*fpixel^2 else a[i]=pz^2 endif elseif @v==29 if i<@p1 a[i]=pz*fpixel^2 else a[i]=pz^2 endif elseif @v==30 if i<@p1 a[i]=pz^2*fpixel else a[i]=pz^2 endif elseif @v==31 if i<@p1 a[i]=pz*fpixel else a[i]=pz^2 endif elseif @v==32 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel endif elseif @v==33 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel endif elseif @v==34 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel^2 endif elseif @v==35 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*fpixel^2 endif elseif @v==36 if i<@p1 a[i]=-pz+(pz^4-1)/(4*pz^3) else a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==37 if i<@p1 a[i]=pz-(pz^4-1)/(4*pz^3) else a[i]=pz^2*(pz-2)/(1-2*pz) endif elseif @v==38 if i<@p1 a[i]=-pz+(pz^3-1)/(3*pz^2) else a[i]=pz^2*fpixel^2 endif elseif @v==39 if i<@p1 a[i]=pz+pz^2 elseif i==@p1 a[i]=pz else a[i]=pz-pz^2 endif elseif @v==40 if i<@p1 a[i]=pz^2*fpixel elseif i==@p1 a[i]=pz else a[i]=-pz^2 endif elseif @v==41 if i<@p1 a[i]=pz elseif i==@p1 a[i]=pz+1/pz else a[i]=pz+pz^2 endif else if i<@p1 a[i]=pz^2 elseif i==@p1 a[i]=pz*fpixel else a[i]=-pz^2 endif endif return pz-@p3*(pz^@ne-1)/(@ne*pz^(@ne-1))+@p2*fn1(a[i])^@ve+@p4 endfunc default: title="Newton Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43" endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Valmyst Parameter 1" default=6 endparam param p2 caption="Valmyst Parameter 2" default=(-0.625,0) endparam param p3 caption="Newton Parameter 1" default=(1,0) endparam param p4 caption="Newton Parameter 2" default=(0,0) endparam param ne caption="Newton Exponent" default=(3,0) endparam param ve caption="Valmyst Exponent" default=(1,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_AltNewton/JuliaValmyst(common.ulb:ConvergentFormula) { ;Schröder's root-finding method for z^p=c public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=@v i2=0 pz=@sf(pz) return(pz) endfunc private: int i int i2 complex vm[@vm1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i2=i2+1 if @vmv==0 if i2<@vm1 vm[i2]=pz+@vm3 endif elseif @vmv==1 if i2<@vm1 vm[i2]=pz^2+@vm3 endif elseif @vmv==2 if i2<@vm1 vm[i2]=pz+pz^2+@vm3 endif elseif @vmv==3 if i2<@vm1 vm[i2]=pz-pz^2+@vm3 endif elseif @vmv==4 if i2<@vm1 vm[i2]=pz+1/pz+@vm3 endif elseif @vmv==5 if i2<@vm1 vm[i2]=pz-1/pz+@vm3 endif elseif @vmv==6 if i2<@vm1 vm[i2]=pz^2*(pz-0.5)/(1-0.5*pz)+@vm3 endif elseif @vmv==7 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)+@vm3 endif elseif @vmv==8 if i2<@vm1 vm[i2]=((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==9 if i2<@vm1 vm[i2]=pz+pz/(pz^2-1)+@vm3 endif elseif @vmv==10 if i2<@vm1 vm[i2]=pz/(pz^2-1)+@vm3 endif elseif @vmv==11 if i2<@vm1 vm[i2]=-pz/(pz^2-1)+@vm3 endif elseif @vmv==12 if i2<@vm1 vm[i2]=pz^2*(pz-0.5)/(1-0.5*pz)+pz-(pz^3-1)/(3*pz^2)+@vm3 endif elseif @vmv==13 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)+((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==14 if i2<@vm1 vm[i2]=((pz^2-1)/(2*pz-2))^2+pz^2*(pz-0.5)/(1-0.5*pz)+@vm3 endif elseif @vmv==15 if i2<@vm1 vm[i2]=pz-(4*pz^3)/(pz^4-1)+@vm3 endif elseif @vmv==16 if i2<@vm1 vm[i2]=pz-(pz^3-1)/(3*pz^2)-((pz^2-1)/(2*pz-2))^2+@vm3 endif elseif @vmv==17 if i2<@vm1 vm[i2]=pz^3*(pz-3)/(1-3*pz)+@vm3 endif elseif @vmv==18 if i2<@vm1 vm[i2]=recip(pz)+@vm3 endif elseif @vmv==19 if i2<@vm1 vm[i2]=-recip(pz)+@vm3 endif elseif @vmv==20 if i2<@vm1 vm[i2]=(pz-1)/(pz+1)+@vm3 endif elseif @vmv==21 if i2<@vm1 vm[i2]=(pz+1)/(pz-1)+@vm3 endif elseif @vmv==22 if i2<@vm1 vm[i2]=-pz+@vm3 endif elseif @vmv==23 if i2<@vm1 vm[i2]=pz-((pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm3 endif elseif @vmv==24 if i2<@vm1 vm[i2]=pz-(pz^3-1)*(3*pz^2)/((3*pz^2)^2-(pz^3-1)*6*pz)+@vm3 endif else if i2<@vm1 vm[i2]=pz-2*(pz^3-1)*(3*pz^2)/(2*(3*pz^2)^2-(pz^3-1)*6*pz)+@vm3 endif endif if i%2==0 if @je==0 pz=pz^2+@c elseif @je==1 pz=pz^3+@c elseif @je==2 pz=pz^4+@c endif else f1=(pz-1)*(pz+1)*(pz^2+1)-@np2 f2=4*pz^3 pz=pz-@np1*f1/(f2) endif pz=pz+@vm2*vm[i2] i=i+1 return pz endfunc default: title="Alt Newton/Julia Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26" endparam param vm1 caption="Valmyst Parameter 1" default=3 endparam param vm2 caption="Valmyst Parameter 2" default=(1,0) endparam param vm3 caption="Valmyst Parameter 3" default=(0,0) endparam param v caption="Alt Variant" enum="Julia first""Newton first" endparam param np1 caption="Newton Parameter" default=(2.5,0) endparam param np2 caption="Newton Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(0.85,0.45) endparam param je caption="Julia Exponent" enum="2""3""4" endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ModifiedSchröder(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) a=(0,0) i=0 pz=@sf(pz) return pz endfunc private: int i complex a complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @mv==0 if i<@mp1 a=pz else a=pz^2 endif elseif @mv==1 if i<@mp1 a=pz^2 else a=pz endif elseif @mv==2 if i<@mp1 a=pz else a=1/pz endif elseif @mv==3 if i<@mp1 a=1/pz else a=pz endif elseif @mv==4 if i<@mp1 a=pz-(pz^3-1)/(3*pz^2) else a=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @mv==5 if i<@mp1 a=pz-pz^2 else a=pz+pz^2 endif elseif @mv==6 if i<@mp1 a=(3*pz^2)/(pz^3-1) else a=pz^2+1/pz^2 endif elseif @mv==7 if i<@mp1 a=pz-1/pz else a=pz+1/pz endif elseif @mv==8 if i<@mp1 a=pz/(pz-1) else a=pz^2 endif elseif @mv==9 if i<@mp1 a=pz/(pz-1) else a=(pz-1)/pz endif elseif @mv==10 if i<@mp1 a=(pz-1)/(pz+1) else a=(pz+1)/(pz-1) endif elseif @mv==11 if i<@mp1 a=pz^2*(pz-0.5)/(1-0.5*pz) else a=pz^3*(pz-3)/(1-3*pz) endif elseif @mv==12 if i<@mp1 a=pz+pz^2 else a=pz-pz^2 endif elseif @mv==13 if i<@mp1 a=pz^3 else a=pz*(1-pz) endif elseif @mv==14 if i<@mp1 a=pz else a=pz^3+pz^2+pz endif elseif @mv==15 if i<@mp1 a=pz*(pz-1)*(pz-2) else a=pz^2/(pz-1) endif elseif @mv==16 if i<@mp1 a=(pz-1)/(pz+1) else a=pz^2*(pz-1) endif elseif @mv==17 if i<@mp1 a=pz^3/3-pz^2/2 else a=pz^4/4+pz^3/3 endif elseif @mv==18 if i<@mp1 a=pz+pz^3/3+pz^2/2 else a=pz^4 endif elseif @mv==19 if i<@mp1 a=1/pz else a=pz^4/4+pz^3/3 endif elseif @mv==20 if i<@mp1 a=1/pz else a=pz^4 endif else if i<@mp1 a=pz^2 else a=pz^4-pz^3 endif endif f=pz^@pow-@sp2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) return pz-@sp1*f*f1/(f1^2-f*f2)+@mp2*@scf(a) endfunc default: title="Modified Schröder" int param version caption="Version" default=100 visible=@version<100 endparam param mv caption="Modification Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20""21""22" endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param mp1 caption="Modification Parameter 1" default=3 endparam param mp2 caption="Modification Parameter 2" default=(0.36,0) endparam param pow caption="Exponent" default=3 endparam func sf caption="Start Function" default=ident() endfunc func scf caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_SchröderValmyst(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) i=0 pz=@sf(pz) return pz endfunc private: int i complex vm[@vmp1] complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) i=i+1 if @vmv==0 if i<@vmp1 vm[i]=pz endif elseif @vmv==1 if i<@vmp1 vm[i]=pz^2 endif elseif @vmv==2 if i<@vmp1 vm[i]=pz^3 endif elseif @vmv==3 if i<@vmp1 vm[i]=1/pz endif elseif @vmv==4 if i<@vmp1 vm[i]=pz/(pz-1) endif elseif @vmv==5 if i<@vmp1 vm[i]=pz-pz^2 endif elseif @vmv==6 if i<@vmp1 vm[i]=pz+1/pz endif elseif @vmv==7 if i<@vmp1 vm[i]=pz^2+1/pz^2 endif elseif @vmv==8 if i<@vmp1 vm[i]=1/pz^2 endif elseif @vmv==9 if i<@vmp1 vm[i]=pz+1/pz^2 endif elseif @vmv==10 if i<@vmp1 vm[i]=(pz+1)/(pz-1) endif elseif @vmv==11 if i<@vmp1 vm[i]=pz-1/pz endif elseif @vmv==12 if i<@vmp1 vm[i]=pz^2-1/pz^2 endif elseif @vmv==13 if i<@vmp1 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @vmv==14 if i<@vmp1 vm[i]=((pz^2-1)/(2*pz-2))^2 endif elseif @vmv==15 if i<@vmp1 vm[i]=pz-(pz^3-1)/(3*pz^2) endif elseif @vmv==16 if i<@vmp1 vm[i]=(pz-1)/pz endif elseif @vmv==17 if i<@vmp1 vm[i]=pz+pz^2 endif elseif @vmv==18 if i<@vmp1 vm[i]=(pz^2-1)/pz endif elseif @vmv==19 if i<@vmp1 vm[i]=pz^2/(pz-1) endif elseif @vmv==20 if i<@vmp1 vm[i]=(pz-1)/(pz+1) endif elseif @vmv==21 if i<@vmp1 vm[i]=pz-1/pz^2 endif elseif @vmv==22 if i<@vmp1 vm[i]=(pz^2-1)/(pz^2+1) endif elseif @vmv==23 if i<@vmp1 vm[i]=(pz^2+1)/(pz^2-1) endif elseif @vmv==24 if i<@vmp1 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz)+((pz^2-1)/(2*pz-2))^2 endif elseif @vmv==25 if i<@vmp1 vm[i]=((pz^2-1)/(2*pz-2))^2+pz-(pz^3-1)/(3*pz^2) endif elseif @vmv==26 if i<@vmp1 vm[i]=pz-(pz^3-1)/(3*pz^2)+pz^2*(pz-0.5)/(1-0.5*pz) endif elseif @vmv==27 if i<@vmp1 vm[i]=pz-(3*pz^2)/(pz^3-1) endif elseif @vmv==28 if i<@vmp1 vm[i]=pz-(pz-2)/(1-2*pz) endif elseif @vmv==29 if i<@vmp1 vm[i]=pz^2-(3*pz^2)/(pz^3-1) endif elseif @vmv==30 if i<@vmp1 vm[i]=pz-(1-2*pz)/(pz-2) endif else if i<@vmp1 vm[i]=pz*(pz^3-1)/(3*pz^2) endif endif f=pz^@pow-@sp2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) if @sqr==false return pz-@sp1*f*f1/(f1^2-f*f2)+@vmp2*vm[i] else return pz-@sp1*f*f1/(f1^2-f*f2)+@vmp2*sqr(vm[i]) endif endfunc default: title="Schröder Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32" endparam param vmp1 caption="Valmyst Parameter 1" default=5 endparam param vmp2 caption="Valmyst Parameter 2" default=(-0.5,0) endparam param sp1 caption="Schröder Parameter 1" default=(1,0) endparam param sp2 caption="Schröder Parameter 2" default=(1,0) endparam param sqr caption="Sqr Valmyst" default=false endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000000000000000000001 exponential=true endparam } class OM_TetravarX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=(0,0) b=(0,0) d=(0,0) z1=fn1(pz) if @sv==0 z2=fn1(pz) z3=fn1(pz) elseif @sv==1 z2=fn1(pz) z3=-fn1(pz) elseif @sv==2 z2=-cos(fn1(pz)) z3=-fn1(pz) else z2=-fn1(pz) z3=-cos(fn1(pz)) endif return pz return z1 return z2 return z3 endfunc private: complex a complex b complex d complex z1 complex z2 complex z3 complex func Iterate(complex pz) if @z3f=="ident" z3=ident(z3) elseif @z3f=="sin" z3=sin(z3) elseif @z3f=="sinh" z3=sinh(z3) elseif @z3f=="versin" z3=(1-cos(z3)) elseif @z3f=="coversin" z3=(1-sin(z3)) elseif @z3f=="cos" z3=cos(z3) elseif @z3f=="tan" z3=tan(z3) elseif @z3f=="tanh" z3=tanh(z3) elseif @z3f=="crd" z3=(2*sin(z3/2)) elseif @z3f=="gd" z3=asin(tanh(z3)) elseif @z3f=="sqr" z3=sqr(z3) elseif @z3f=="cube" z3=(z3^3) elseif @z3f=="expit" z3=(1/(1+exp(-z3))) elseif @z3f=="primecount" z3=(z3/log(z3)) elseif @z3f=="cotancosh" z3=cotan(cosh(z3)) elseif @z3f=="tanhtanh" z3=tanh(tanh(z3)) elseif @z3f=="tanhtan" z3=tanh(tan(z3)) elseif @z3f=="tanhsinh" z3=tanh(sinh(z3)) elseif @z3f=="tanhsin" z3=tanh(sin(z3)) elseif @z3f=="tantanh" z3=tan(tanh(z3)) elseif @z3f=="tantan" z3=tan(tan(z3)) elseif @z3f=="tancos" z3=tan(cos(z3)) elseif @z3f=="cosexp" z3=cos(exp(z3)) elseif @z3f=="costan" z3=cos(tan(z3)) elseif @z3f=="coscos" z3=cos(cos(z3)) elseif @z3f=="sinhsin" z3=sinh(sin(z3)) elseif @z3f=="sintan" z3=sin(tan(z3)) elseif @z3f=="sqrexpit" z3=sqr(1/(1+exp(-z3))) elseif @z3f=="sqrcoversin" z3=sqr(1-sin(z3)) elseif @z3f=="logcoversin" z3=log(1-sin(z3)) elseif @z3f=="sqr+" z3=z3+sqr(z3) elseif @z3f=="sqr-" z3=z3-sqr(z3) elseif @z3f=="sin-" z3=z3-sin(z3) else z3=z3*exp(z3) endif z3=@p5*z3+@p6 z1=z1+@p9*sqr(z1) z2=z2+@p9*sqr(z2) a=z1*z2 b=z3^2 d=2*a-b z1=@p1*z1^2+z2^2+d+@p2 z2=@p3*z2*z3+d+@p4 pz=z1+z2 return pz return z1 return z2 return z3 endfunc default: title="Tetravar X 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param p1 caption="X Parameter 1" default=(-1.5,0) endparam param p2 caption="X Parameter 2" default=(-0.2,0) endparam param p3 caption="X Parameter 3" default=(-1.5,0) endparam param p4 caption="X Parameter 4" default=(-0.5,0) endparam param p5 caption="z3 Parameter 1" default=(1,0) endparam param p6 caption="Z3 Parameter 2" default=(0,0) endparam param z3f caption="Z3 Function" enum="ident""sin""sinh""versin""coversin""cos""tan""tanh"\ "crd""gd""sqr""cube""expit""primecount"\ "cotancosh""tanhtanh""tanhtan""tanhsinh""tanhsin""tantanh"\ "tantan""tancos""cosexp""costan""coscos""sinhsin""sintan"\ "sqrexpit""sqrcoversin""logcoversin""sqr+""sqr-""sin-""exp*" endparam func fn1 caption="Start Function" default=ident() endfunc param p9 caption="Add Sqr Parameter" default=(0.35,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_TrivarMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=(0,0) b=(0,0) if @sv==0 pw=@sf(pz) pz=@sp pk=@sp elseif @sv==1 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==2 pk=@sf(pz) pz=@sf(pz) pw=@sp elseif @sv==3 pk=@sf(pz) pw=@sf(pz) pz=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) endif return pz return pk return pw endfunc private: complex a complex b complex c complex pk complex pw complex func Iterate(complex pz) if @jm==0 a=pw b=pk pw=@p1*recip(pw/pk/pz)+@p2 pk=exp(@p4*1i)*pk^2*(pk-@p3)/(1-@p3*pk)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz) pz=exp(@p4*1i)*b^2*(b-@p3)/(1-@p3*b)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+exp(@p4*1i)*a^2*(a-@p3)/(1-@p3*a)+@c else a=pw b=pk pw=@p1*recip(pw/pk/pz)+@p2 pk=exp(@p4*1i)*pk^2*(pk-@p3)/(1-@p3*pk)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+c pz=exp(@p4*1i)*b^2*(b-@p3)/(1-@p3*b)+exp(@p4*1i)*pz^2*(pz-@p3)/(1-@p3*pz)+exp(@p4*1i)*a^2*(a-@p3)/(1-@p3*a)+c endif return pz return pk return pw endfunc default: title="Trivar Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="1""2""3""4""5" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0.33,0) visible=@sv!=4 endparam param p3 caption="Munster Parameter 1" default=(0.625,0) endparam param p4 caption="Munster Parameter 2" default=(0,0) endparam param c caption="Julia Seed" default=(-0.25,0) visible=@jm==0 endparam param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_Rootmod8(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc private: complex f complex f1 complex f2 complex f3 complex f4 complex f5 complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 f=pz^5+0.1i f1=5*pz^4 f2=20*pz^3 f3=60*pz^2 f4=120*pz f5=120 return pz+exp(@p1*1i)*2i*(f/f1)*((f+f2+F4)/3)/((f1+f3+F5)/3)+@p2 endfunc default: title="Rootmod 8" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Rootmod Parameter 1" default=(0,0) endparam param p2 caption="Rootmod Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_ValmystX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 pz=@sf(pz) return pz endfunc private: int i complex fpixel complex vm[@vmp1] complex func Iterate(complex pz) i=i+1 if @v==0 if i<@vmp1 vm[i]=pz endif elseif @v==1 if i<@vmp1 vm[i]=pz-pz^2 endif elseif @v==2 if i<@vmp1 vm[i]=pz^2+@sf(fpixel) endif elseif @v==3 if i<@vmp1 vm[i]=pz-exp(pz) endif elseif @v==4 if i<@vmp1 vm[i]=(pz^3+@sf(fpixel))/pz endif elseif @v==5 if i<@vmp1 vm[i]=pz*@sf(fpixel) endif elseif @v==6 if i<@vmp1 vm[i]=pz^2/(pz-1) endif elseif @v==7 if i<@vmp1 vm[i]=pz^3/(pz-1) endif elseif @v==8 if i<@vmp1 vm[i]=pz^2*@sf(fpixel) endif elseif @v==9 if i<@vmp1 vm[i]=(pz^2-1)/pz endif elseif @v==10 if i<@vmp1 vm[i]=(pz^3-1)/pz endif elseif @v==11 if i<@vmp1 vm[i]=pz*fpixel^2 endif elseif @v==12 if i<@vmp1 vm[i]=pz^2*@sf(fpixel)^2 endif elseif @v==13 if i<@vmp1 vm[i]=-1/pz endif elseif @v==14 if i<@vmp1 vm[i]=sqr(pz) endif elseif @v==15 if i<@vmp1 vm[i]=-cos(pz) endif elseif @v==16 if i<@vmp1 vm[i]=pz-cos(pz) endif elseif @v==17 if i<@vmp1 vm[i]=@sf(fpixel)*cosh(pz) endif elseif @v==18 if i<@vmp1 vm[i]=-@sf(fpixel)*recip(pz) endif elseif @v==19 if i<@vmp1 vm[i]=-@sf(fpixel)*sqr(pz) endif elseif @v==20 if i<@vmp1 vm[i]=@sf(fpixel)*tanh(pz)^2 endif elseif @v==21 if i<@vmp1 vm[i]=@sf(fpixel)*sin(pz)^2 endif elseif @v==22 if i<@vmp1 vm[i]=-@sf(fpixel)*pz^2 endif elseif @v==23 if i<@vmp1 vm[i]=-@sf(fpixel)*sqr(pz)^2 endif elseif @v==24 if i<@vmp1 vm[i]=-@sf(fpixel)*recip(pz)^2 endif elseif @v==25 if i<@vmp1 vm[i]=-@sf(fpixel)*cotanh(pz)^2 endif elseif @v==26 if i<@vmp1 vm[i]=-@sf(fpixel)*cotan(pz)^2 endif elseif @v==27 if i<@vmp1 vm[i]=-@sf(fpixel)*tan(pz)^2 endif elseif @v==28 if i<@vmp1 vm[i]=-@sf(fpixel)*cos(pz)^2 endif elseif @v==29 if i<@vmp1 vm[i]=-@sf(fpixel)*sinh(pz)^2 endif else if i<@vmp1 vm[i]=-@sf(fpixel)*sin(pz)^2 endif endif return (pz^3+@p1)/(pz+@p2)+@vmp2*fn1(vm[i])*@sf(fpixel) endfunc default: title="Valmyst X 1" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31" endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="X Parameter 1" default=(-0.25,0) endparam param p2 caption="X Parameter 2" default=(0.25,0) endparam param vmp1 caption="Valmyst Parameter 1" default=6 endparam param vmp2 caption="Valmyst Parameter 2" default=(-0.5,0) endparam func fn1 caption="Valmyst Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarMandelbrot3(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fPixel=pz a=(0,0) c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex a complex pk complex func Iterate(complex pz) a=pk pk=@p1*@bf2(c*@bf1(pk/pz))+@p2 pz=pz^2+a^2+c return pz return pk endfunc bool func IsBailedOut(complex pz) return |(pz+pk)/2|>=@p_upperbailout || |(pz+pk)/2|<=@p_lowerbailout endfunc default: title="Bivar Mandelbrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param sp caption="Start Parameter" default=(0,0.5) visible=@sv!=0 endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam func bf1 caption="Bivar Function 1" default=ident() endfunc func bf2 caption="Bivar Function 2" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Divergent Bailout value" default=1000.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout value" default=0.000001 exponential=true endparam } class OM_Kalgor(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=3.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=fn1(pz) if @v==0 float b=|@p1*pz+@p2| elseif @v==1 float b=|pz+@p1*pz^2+@p2| elseif @v==2 float b=|pz+pz^2+@p1*pz^3+@p2| elseif @v==3 float b=|pz+pz^2+pz^3+@p1*pz^4+@p2| elseif @v==4 float b=|pz+@p1/pz+@p2| elseif @v==5 float b=|pz+1/pz+@p1/pz^2+@p2| elseif @v==6 float b=|pz+@p1*flip(pz)+@p2| elseif @v==7 float b=|pz+@p1*sqrt(pz)+@p2| elseif @v==8 float b=|pz+@p1*acosh(pz)+@p2| elseif @v==9 float b=|pz+@p1*round(pz)+@p2| elseif @v==10 float b=|pz+@p1*trunc(pz)+@p2| elseif @v==11 float b=|pz+@p1*floor(pz)+@p2| elseif @v==12 float b=|pz+@p1*ceil(pz)+@p2| elseif @v==13 float b=|pz+@p1/flip(pz)+@p2| elseif @v==14 float b=|pz+@p1/cabs(pz)+@p2| elseif @v==15 float b=|pz+@p1/abs(pz)+@p2| elseif @v==16 float b=|pz+@p1/sqr(pz)+@p2| elseif @v==17 float b=|pz+@p1/acosh(pz)+@p2| elseif @v==18 float b=|pz+@p1/acos(pz)+@p2| elseif @v==19 float b=|pz+@p1/round(pz)+@p2| elseif @v==20 float b=|pz+@p1/ceil(pz)+@p2| elseif @v==21 float b=|pz+flip(pz)^2+@p1*pz^3+@p2| elseif @v==22 float b=|pz-pz^2+pz^3+@p1*pz^4+@p2| elseif @v==23 float b=|pz+pz^2-pz^3+@p1*pz^4+@p2| elseif @v==24 float b=|pz+exp(pz)^2+@p1*pz^3+@p2| elseif @v==25 float b=|pz+sqrt(pz)^2+@p1*pz^3+@p2| elseif @v==26 float b=|pz+round(pz)^2+@p1*pz^3+@p2| elseif @v==27 float b=|pz+floor(pz)^2+@p1*pz^3+@p2| else float b=|pz+ceil(pz)^2+@p1*pz^3+@p2| endif if b@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)<@p7 index=sqrt(a) else m_Solid=true endif endif else index=sqrt(a) endif return index endfunc private: float a float index default: title="Kalgor" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29" endparam param p1 caption="Kalgor Parameter 1" default=(1,0) endparam param p2 caption="Kalgor Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_KalgorValmyst(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=3.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 pz=fn1(pz) if i<@p3 if @vmv==0 vm[i]=pz elseif @vmv==1 vm[i]=pz-sin(pz) elseif @vmv==2 vm[i]=pz+pz^2 elseif @vmv==3 vm[i]=pz-exp(pz) elseif @vmv==4 vm[i]=pz+1/pz elseif @vmv==5 vm[i]=pz-1/pz elseif @vmv==6 vm[i]=pz-pz^2 elseif @vmv==7 vm[i]=flip(pz) elseif @vmv==8 vm[i]=pz^2 elseif @vmv==9 vm[i]=abs(pz) elseif @vmv==10 vm[i]=conj(pz) elseif @vmv==11 vm[i]=pz*cos(pz) elseif @vmv==12 vm[i]=pz*cotanh(pz) elseif @vmv==13 vm[i]=pz^3 elseif @vmv==14 vm[i]=pz^2*(pz-0.5)/(1-0.5*pz) elseif @vmv==15 vm[i]=pz^3*(pz-3)/(1-3*pz) elseif @vmv==16 vm[i]=pz-(pz^3-1)/(3*pz^2) elseif @vmv==17 vm[i]=((pz^2-1)/(2*pz-2))^2 elseif @vmv==18 vm[i]=(pz-1i)/(pz+1i) elseif @vmv==19 vm[i]=(pz-1)/(pz+1) elseif @vmv==20 vm[i]=pz^2/(pz-1) elseif @vmv==21 vm[i]=(pz-1)/pz^2 elseif @vmv==22 vm[i]=(1-2*pz)/(pz-2) elseif @vmv==23 vm[i]=pz+(1-0.5*pz)/(pz-0.5) elseif @vmv==24 vm[i]=pz-pz^2+pz^3 elseif @vmv==25 vm[i]=-pz+pz^2-pz^3+pz^4 elseif @vmv==26 vm[i]=1/sinh(pz) elseif @vmv==27 vm[i]=sqr(sinh(pz)) elseif @vmv==28 vm[i]=1/cos(pz) elseif @vmv==29 vm[i]=1/exp(cos(pz)) elseif @vmv==30 vm[i]=1/sqr(exp(pz)) elseif @vmv==31 vm[i]=1/sqr(cosh(pz)) elseif @vmv==32 vm[i]=pz+1/sqr(trunc(pz)) else vm[i]=pz+1/cos(cosh(pz)) endif endif if @v==0 float b=cabs(log(pz-@p1*(pz^2-1)/(pz^2+1)+@p4*fn2(vm[i]))) elseif @v==1 float b=cabs(log(pz*@p1*tanh(pz)+@p4*fn2(vm[i]))) elseif @v==2 float b=cabs(log(pz+@p1*conj(tan(pz))+@p4*fn2(vm[i]))) elseif @v==3 float b=cabs(log(pz+flip(pz)^2+@p1*pz^3+@p4*fn2(vm[i]))) elseif @v==4 float b=cabs(log(pz+log(pz)^2+@p1*cos(pz)^2+@p4*fn2(vm[i]))) elseif @v==5 float b=cabs(log(pz+1/pz+@p1/pz^2+@p4*fn2(vm[i]))) elseif @v==6 float b=cabs(log(pz+@p1*flip(pz)+@p4*fn2(vm[i]))) elseif @v==7 float b=cabs(log(pz+@p1*flip(exp(pz))+@p4*fn2(vm[i]))) elseif @v==8 float b=cabs(log(pz*@p1*sin(pz)+@p4*fn2(vm[i]))) elseif @v==9 float b=cabs(log(pz+tanh(pz)^2+@p1*cos(pz)^2+@p4*fn2(vm[i]))) elseif @v==10 float b=cabs(log(pz+@p1*pz^2+cos(pz)^3+@p4*fn2(vm[i]))) elseif @v==11 float b=cabs(log(pz+@p1*flip(sqr(pz))+@p4*fn2(vm[i]))) elseif @v==12 float b=cabs(log(pz*@p1*cos(pz)+@p4*fn2(vm[i]))) elseif @v==13 float b=cabs(log(pz+@p1*flip(cos(pz))+@p4*fn2(vm[i]))) elseif @v==14 float b=cabs(log(pz+@p1*abs(pz)+@p4*fn2(vm[i]))) elseif @v==15 float b=cabs(log(pz+pz^2+@p1*pz^3+@p4*fn2(vm[i]))) elseif @v==16 float b=cabs(log(pz+@p1/flip(pz)+@p4*fn2(vm[i]))) elseif @v==17 float b=cabs(log(pz+@p1*conj(sinh(pz))+@p4*fn2(vm[i]))) elseif @v==18 float b=cabs(log(pz+@p1*cabs(tan(pz))+@p4*fn2(vm[i]))) elseif @v==19 float b=cabs(log(pz+@p1*sqr(flip(pz))+@p4*fn2(vm[i]))) elseif @v==20 float b=cabs(log(pz+@p1*sqr(cos(pz))+@p4*fn2(vm[i]))) elseif @v==21 float b=cabs(log(pz+@p1*cos(exp(pz))+@p4*fn2(vm[i]))) elseif @v==22 float b=cabs(log(pz*@p1*flip(pz)+@p4*fn2(vm[i]))) elseif @v==23 float b=cabs(log(pz*@p1*atan(pz)+@p4*fn2(vm[i]))) elseif @v==24 float b=cabs(log(pz+@p1*conj(sqr(pz))+@p4*fn2(vm[i]))) elseif @v==25 float b=cabs(log(pz+@p1*exp(exp(pz))+@p1*sqr(pz)+@p4*fn2(vm[i]))) elseif @v==26 float b=cabs(log(pz+@p1*conj(pz)+@p4*fn2(vm[i]))) elseif @v==27 float b=cabs(log(pz*@p1*sqrt(tanh(pz))+@p4*fn2(vm[i]))) elseif @v==28 float b=cabs(log(pz*@p1/flip(cosh(conj(pz)))+@p4*fn2(vm[i]))) elseif @v==29 float b=cabs(log(pz+@p1*(pz^2-1)/(pz^2+1)+@p4*fn2(vm[i]))) elseif @v==30 float b=cabs(log(pz*@p1/flip(acos(pz))+@p4*fn2(vm[i]))) elseif @v==31 float b=cabs(log(pz-@p1*cosh(3*pz^2)/(pz^3-1)+@p4*fn2(vm[i]))) elseif @v==32 float b=cabs(log(pz*@p1/conj(acosh(pz))+@p4*fn2(vm[i]))) elseif @v==33 float b=cabs(log(@p1*sqr(pz^2-pz^3)/pz+@p4*fn2(vm[i]))) elseif @v==34 float b=cabs(log(pz*@p1/conj(cos(pz))+@p4*fn2(vm[i]))) elseif @v==35 float b=cabs(log(pz*@p1/cotanh(conj(asinh(pz)))+@p4*fn2(vm[i]))) elseif @v==36 float b=cabs(log(pz*@p1/cos(cos(conj(sin(pz))))+@p4*fn2(vm[i]))) elseif @v==37 float b=cabs(log(pz*@p1/abs(sin(pz))+@p4*fn2(vm[i]))) elseif @v==38 float b=cabs(log(pz+@p1*flip(cosh(pz))+@p4*fn2(vm[i]))) elseif @v==39 float b=cabs(log(pz+@p1/pz+@p4*fn2(vm[i]))) elseif @v==40 float b=cabs(log(pz+cotanh(pz)^2+@p1*cotan(pz)^2+@p4*fn2(vm[i]))) elseif @v==41 float b=cabs(log(pz+tan(cotan(pz))^2+@p1*cos(sin(pz))^2+@p4*fn2(vm[i]))) elseif @v==42 float b=cabs(log(pz+@p1*tan(tan(pz^2/(pz-1)))+@p4*fn2(vm[i]))) elseif @v==43 float b=cabs(log(pz+@p1*tan(exp((pz-1)/pz^2))+@p4*fn2(vm[i]))) elseif @v==44 float b=cabs(log(pz*@p1/flip(pz)+@p4*fn2(vm[i]))) elseif @v==45 float b=cabs(log(pz+@p1*(pz^3-1)/(pz^3+1)+@p4*fn2(vm[i]))) elseif @v==46 float b=cabs(log(pz-@p1*sinh(pz^4-1)/(4*pz^3)+@p4*fn2(vm[i]))) elseif @v==47 float b=cabs(log(pz*@p1/conj(cotanh(pz))+@p4*fn2(vm[i]))) elseif @v==48 float b=cabs(log(@p1*cos(pz^2-pz^3)/pz+@p4*fn2(vm[i]))) else float b=cabs(log(pz*@p1/conj(acos(pz))+@p4*fn2(vm[i]))) endif if b@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)<@p7 index=sqrt(a) else m_Solid=true endif endif else index=sqrt(a) endif return index endfunc private: float a int i complex vm[@p3] float index default: title="Kalgor Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29"\ "30""31""32""33""34" endparam param v caption="Kalgor Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29"\ "30""31""32""33""34""35""36""37""38""39"\ "40""41""42""43""44""45""46""47""48""49"\ "50" endparam param p1 caption="Kalgor Parameter" default=(1,0) endparam param p3 caption="Valmyst Parameter 1" default=6 endparam param p4 caption="Valmyst Parameter 2" default=(1,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Valmyst Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_BostaValmyst(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=@adj1 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 pz=@zf(pz) if i<@vm1 If @vmv==0 vm[i]=cos(pz)-3*cosh(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==1 vm[i]=pz-3*pz^2*(pz^3-1)/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==2 vm[i]=cos(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==3 vm[i]=pz+1/pz^2 elseIf @vmv==4 vm[i]=pz-10*(pz^4-1)/(4*pz^3) elseif @vmv==5 vm[i]=cotanh((pz^2+2)/(2*pz+1))^2 elseif @vmv==6 vm[i]=((pz^2+2)/(2*pz+1))^2 elseif @vmv==7 vm[i]=exp(pz)+tan(pz) elseif @vmv==8 vm[i]=cotanh(pz)+cotan(pz) elseif @vmv==9 vm[i]=cos(pz)^2+tanh(pz)^2 elseif @vmv==10 vm[i]=cos(pz)^2+tan(pz)^2 elseif @vmv==11 vm[i]=floor(pz)^2+round(pz)^2 elseif @vmv==12 vm[i]=pz^3+cotanh(pz)^3 elseif @vmv==13 vm[i]=cosh(pz)-3*exp(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==14 vm[i]=cosh(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==15 vm[i]=sin(pz)-3*cos(pz^2*(pz^3-1))/((3*pz^2)^2-6*pz*(pz^3-1)) elseif @vmv==16 vm[i]=pz^2*(pz-4)/(2+4*pz) elseif @vmv==17 vm[i]=pz^2*sqr((pz-4)/(2+4*pz)) elseif @vmv==18 vm[i]=pz^2*sin((pz-4)/(2+4*pz)) elseif @vmv==19 vm[i]=pz^2*floor((pz-4)/(2+4*pz)) elseif @vmv==20 vm[i]=pz^3+1/(pz^3+1/(pz^3+1/pz^3)) elseif @vmv==21 vm[i]=pz^3+1/(exp(pz)^3+1/(exp(pz)^3+1/exp(pz)^3)) elseif @vmv==22 vm[i]=pz^3+1/(conj(pz)^3+1/(conj(pz)^3+1/conj(pz)^3)) elseif @vmv==23 vm[i]=pz+exp(pz+recip(pz+cosh(pz))) elseif @vmv==24 vm[i]=pz+cotan(pz+sqr(pz+recip(pz))) elseif @vmv==25 vm[i]=pz+sqr(pz+conj(pz+atanh(pz))) elseif @vmv==26 vm[i]=pz+acos(pz+cotanh(pz+exp(pz))) elseif @vmv==27 vm[i]=pz+1/exp(pz+cos(pz+tan(pz))) elseif @vmv==28 vm[i]=pz+1/cotanh(pz+cos(pz+tan(pz))) else vm[i]=pz+1/cotanh(pz+flip(pz+round(pz))) endif endif if @v==0 a=cabs(pz+@p7*pz^2+@vm2*@vmf(vm[i])+@p8) elseif @v==1 a=cabs(pz^2+@p7*pz^3+@vm2*@vmf(vm[i])+@p8) elseif @v==2 a=cabs(pz+@p7/pz+@vm2*@vmf(vm[i])+@p8) elseif @v==3 a=cabs(pz^2+@p7/pz+@vm2*@vmf(vm[i])+@p8) elseif @v==4 a=cabs(pz+@p7/pz^2+@vm2*@vmf(vm[i])+@p8) elseif @v==5 a=cabs(exp(pz)-@p7*(cotanh(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==6 a=cabs(exp(pz)-@p7*(sin(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==7 a=cabs(sqr(pz)-@p7*(exp(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==8 a=cabs(sqr(pz)-@p7*(sqr(pz^3-1)/(3*pz^2*(pz-(pz^3-1)/(6*pz^2))))+@vm2*@vmf(vm[i])+@p8) elseif @v==9 a=cabs(pz+@p7*pz^3*(pz-3)/(1-3*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==10 a=cabs(pz+@p7*pz^4*(pz-4)/(1-4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==11 a=cabs(pz+@p7*pz^5*(pz-5)/(1-5*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==12 a=cabs(pz+@p7*pz^2*(pz-2)/(1-2*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==13 a=cabs(pz+@p7*flip(conj(abs(pz)))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==14 a=cabs(pz+@p7*conj(abs(pz))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==15 a=cabs(pz+@p7*flip(conj(pz))^3+@vm2*@vmf(vm[i])+@p8) elseif @v==16 a=cabs(pz+@p7*(pz+pz^2+pz^3)+@vm2*@vmf(vm[i])+@p8) elseif @v==17 a=cabs(pz+@p7*(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==18 a=cabs(pz+@p7*tanh(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==19 a=cabs(pz+@p7*recip(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==20 a=cabs(pz+@p7*floor(2*pz^3-6*pz^2+3*pz-1)+@vm2*@vmf(vm[i])+@p8) elseif @v==21 a=cabs(pz+@p7*tanh(tan(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==22 a=cabs(pz+@p7*recip(cos(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==23 a=cabs(pz+@p7*floor(pz^4-3*pz^3+pz^2)+@vm2*@vmf(vm[i])+@p8) elseif @v==24 a=cabs(pz+@p7*floor(tanh(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==25 a=cabs(pz+@p7*ceil(sin(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==26 a=cabs(pz+@p7*round(log(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==27 a=cabs(pz+@p7*round(cotanh(pz^4-3*pz^3+pz^2))+@vm2*@vmf(vm[i])+@p8) elseif @v==28 a=cabs(pz+@p7*exp(abs((pz^2-1)/(pz^2+1)))+@vm2*@vmf(vm[i])+@p8) elseif @v==29 if real(pz)imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*conj(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==33 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*exp(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==34 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*acosh(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==35 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7/flip(pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==36 if real(pz)>imag(pz) pz=flip(pz) endif a=cabs(pz+@p7*tan(pz)^4*(pz-4)/(1-4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==37 a=cabs(pz+@p7*pz^2*(pz-4)/(3+4*pz)+@vm2*@vmf(vm[i])+@p8) elseif @v==38 a=cabs(pz+@p7*pz*(sin(pz)-4)/(7+4*sin(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==39 a=cabs(pz+@p7*pz^5*(sqr(pz)-4)/(5+4*sqr(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==40 a=cabs(pz+@p7*pz^5*(sqr(pz)-4)/(-0.5+4*sqr(pz))+@vm2*@vmf(vm[i])+@p8) elseif @v==41 a=cabs(pz+@p7*pz*(floor(pz)-2)/(3+2*floor(pz))+@vm2*@vmf(vm[i])+@p8) else a=cabs(pz+@p7*pz^3*(cabs(pz)+5.5)/(7.25-5.5*cabs(pz))+@vm2*@vmf(vm[i])+@p8) endif if a@p9 index=f*0.16 else m_Solid=true endif endif else index=f*0.16 endif return index endfunc private: float a float b int i complex vm[@vm1] float index default: title="Bosta Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmv caption="Valmyst Variant" enum="1" "2" "3" "4" "5" "6" "7" "8" "9" "10""11""12""13"\ "14""15""16""17""18""19""20""21""22""23""24""25""26""27"\ "28""29""30" default=0 endparam param v caption="Bosta Variant" enum="1" "2" "3" "4" "5" "6" "7" "8" "9" "10""11""12""13"\ "14""15""16""17""18""19""20""21""22""23""24""25""26""27"\ "28""29""30""31""32""33""34""35""36""37""38""39""40""41"\ "42""43" default=0 endparam param vm1 caption="Valmyst Parameter 1" default=9 endparam param vm2 caption="Valmyst Parameter 2" default=(1,0) endparam param p7 caption="Bosta Parameter 1" default=(1,0) endparam param p8 caption="Bosta Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func vmf caption="Valmyst Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=2.18245 endparam param adj2 caption="Adjustment 2" default=6.3 endparam param solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.217 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Gribbim(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="third" pz=pz/3 elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 elseif @Fs=="triple" pz=pz*3 elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*pz+@p2 if @v==0 x=real(pz) y=imag(pz) x=cos(x)/|pz| y=cos(y)/|pz| pz=x+flip(y) pz=log(2*pz) elseif @v==1 x=real(pz) y=imag(pz) x=cos(x)/|pz| y=cos(y)/|pz| pz=x+flip(y) pz=log(pz+pz^2*cos((pz-2)/(1-2*pz))) elseif @v==2 if real(pz)@p9 index=(sqrt(c)+1)*0.5 else m_Solid=true endif endif else index=(sqrt(c)+1)*0.5 endif return index endfunc private: float c float index default: title="Gribbim" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple"\ "ceil""floor""trunc""round" default=22 endparam param adj caption="Adjustment" default=3.0 endparam param @solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.915 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Vazae(common.ulb:GradientColoring) { ;This is a modification/extension of Numberseeker by Edgar Malinovsky (em.ucl) ;Lower values of the Iterations paremeter give smoother colouring. ;Higher values give more detail. ;It may be necessary to increase this value when zooming in. public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@zp1*pz+@zp2 if @V==0 pz=pz elseif @v==1 pz=pz+pz^2 elseif @v==2 pz=pz+1/pz elseif @v==3 pz=pz-1/pz elseif @v==4 pz=pz-pz^2 elseif @v==5 pz=pz+flip(pz) elseif @v==6 pz=pz+conj(pz) elseif @v==7 pz=pz+cotanh(pz) elseif @v==8 pz=pz+acosh(pz) elseif @v==9 pz=pz-cabs(pz) elseif @v==10 pz=pz-abs(pz) elseif @v==11 pz=pz-exp(pz) elseif @v==12 pz=pz-acosh(pz) elseif @v==13 pz=pz-cos(pz) elseif @v==14 pz=pz-asinh(pz) elseif @v==15 if |pz|<1 pz=pz/|pz| endif pz=pz-cos(pz) elseif @v==16 pz=pz+1/log(pz) elseif @v==17 pz=pz+1/sqr(pz) elseif @v==18 pz=pz-1/cosh(pz) elseif @v==19 pz=pz+3/pz elseif @v==20 pz=pz+3/asinh(pz) elseif @v==21 pz=pz+3*cotanh(pz) elseif @v==22 pz=pz-3*flip(pz) elseif @v==23 pz=pz^4*(pz+2)/(1+2*pz) elseif @v==24 pz=pz^(-4)*(pz+0.75)/(1+0.75*pz) elseif @v==25 pz=pz-(pz^(-3)-1)/(-3*pz^(-4)) elseif @v==26 pz=pz-(pz^(-6)-1)/(-6*pz^(-7)) elseif @v==27 pz=pz^2*(flip(pz)-4)/(2+4*flip(pz)) elseif @v==28 pz=pz^2*(sqr(pz)-4)/(2+4*sqr(pz)) elseif @v==29 pz=pz^3*(flip(pz)-4)/(3+4*flip(pz)) elseif @v==30 pz=pz^3*(conj(pz)-4)/(3+4*conj(pz)) elseif @v==31 pz=pz^3*(atanh(pz)-4)/(3+4*atanh(pz)) elseif @v==32 pz=pz^3*(tan(pz)-4)/(3+4*tan(pz)) elseif @v==33 pz=pz-trunc((pz-2)/(1-2*pz)) elseif @v==34 pz=pz-(pz+0.8)/(1+0.8*pz) elseif @v==35 pz=pz-(pz+2)/(1+2*pz)^(-8) elseif @v==36 pz=pz-cabs((pz+2)/(1+2*pz))^(-8) elseif @v==37 pz=pz-sqr((pz+2)/(1+2*pz))^(-8) elseif @v==38 pz=pz-recip((pz+2)/(1+2*pz))^(-8) elseif @v==39 pz=pz-cabs((pz+2)/(1+2*pz))^8 elseif @v==40 if |pz|<1 pz=pz/|pz| endif pz=pz+conj(pz) else if |pz|<1 pz=pz/|pz| endif pz=pz-exp(pz) endif if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) ;zold=pz i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<@adj if @solid if @invert if b<@p9 index=b else m_Solid=true endif else if b>@p9 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p9 index=a else m_Solid=true endif else if a>@p9 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: float a float b float index int i int i2 complex zold default: title="Vazae" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param iter caption="Iterations" default=10 min=0 endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam param adj caption="Adjustment" default=0.0 endparam param @solid caption="Solid Colour" default=false endparam param p9 caption="Solid Colour Adjustment" default=0.18 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AleatorFloorPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) z2=(0,0) z1=fn2(pz) if@jm==0 c=@c else c=@cf(fpixel) endif i2=0 return pz return z1 return z2 endfunc private: float values[#maxiter] int i int seed complex z1 complex z2 complex c int i2 complex func Iterate(complex pz) if @jm==1 c=@cp1*c endif pz=@zp1*@zf(pz)+@zp2 pz=pz+@asp*sqr(pz) z1=z1+@asp*sqr(z1) z2=z2+@asp*sqr(z2) pz=pz^2+@pp1*pz+@pp2*z2+floor(values[i2])+c z2=z1 i2=i2+1 return pz return z1 return z2 endfunc default: title="Aleator Floor Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param seed caption="Random Seed" default=12345678 endparam param pp1 caption="Phoenix Parameter 1" default=(0.5,0) endparam param pp2 caption="Phoenix Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param c caption="C Parameter" default=(0,0) visible=@jm==0 endparam param cp1 caption="C Parameter" default=(1,0) visible=@jm==1 endparam func fn1 Caption="Start Function" default=ident() endfunc func zf Caption="Z Function" default=ident() endfunc func fn2 caption= "Phoenix Function" default=ident() endfunc func cf caption="C Function" default=ident() visible=@jm==1 endfunc param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_FunctionsTransform(common.ulb:UserTransform) { public: complex func Iterate(complex pz) if @f1=="ident" pz=ident(pz) elseif @f1=="sin" pz=sin(pz) elseif @f1=="sinh" pz=sinh(pz) elseif @f1=="cosh" pz=cosh(pz) elseif @f1=="tan" pz=tan(pz) elseif @f1=="tanh" pz=tanh(pz) elseif @f1=="sqr" pz=sqr(pz) elseif @f1=="exp" pz=exp(pz) elseif @f1=="abs" pz=abs(pz) elseif @f1=="recip" pz=recip(pz) elseif @f1=="sec" pz=1/cos(pz) elseif @f1=="sech" pz=1/cosh(pz) elseif @f1=="cosech" pz=1/sinh(pz) elseif @f1=="exsec" pz=1/cos(pz)-1 elseif @f1=="crd" pz=2*sin(pz/2) elseif @f1=="gd" pz=asin(tanh(pz)) elseif @f1=="sinc" pz=sin(pz)/(pz) elseif @f1=="cosc" pz=cos(pz)/(pz) elseif @f1=="coshc" pz=cosh(pz)/(pz) elseif @f1=="tanc" pz=tan(pz)/(pz) elseif @f1=="cotanc" pz=cotan(pz)/(pz) elseif @f1=="cotanhc" pz=cotanh(pz)/(pz) elseif @f1=="secc" pz=1/(pz*cos(pz)) elseif @f1=="sechc" pz=1/(pz*cosh(pz)) elseif @f1=="cosecc" pz= 1/(pz*sin(pz)) elseif @f1=="cosechc" pz=1/(pz*sinh(pz)) elseif @f1=="cube" pz=pz^3 elseif @f1=="expit" pz=1/(1+exp(-pz)) elseif @f1=="gauss" pz=exp(-sqr(pz)) elseif @f1=="sqr+" pz=sqr(pz)+pz elseif @f1=="cube+sqr+" pz=pz^3+sqr(pz)+pz elseif @f1=="cube+" pz=pz^3+pz elseif @f1=="recip+" pz=recip(pz)+pz elseif @f1=="cotan+" pz=cotan(pz)+pz elseif @f1=="sec+" pz=1/cos(pz)+pz elseif @f1=="cosec+" pz=1/sin(pz)+pz elseif @f1=="cos*" pz=cos(pz)*pz elseif @f1=="tan*" pz=tan(pz)*pz elseif @f1=="sec*" pz=pz/cos(pz) elseif @f1=="cosec*" pz=pz/sin(pz) elseif @f1=="exp*" pz=pz*exp(pz) elseif @f1=="expexp" pz=exp(exp(pz)) elseif @f1=="sinsin" pz=sin(sin(pz)) elseif @f1=="coscos" pz=cos(cos(pz)) elseif @f1=="tantan" pz=tan(tan(pz)) elseif @f1=="cotancotan" pz=cotan(cotan(pz)) elseif @f1=="secsec" pz=1/cos(1/cos(pz)) elseif @f1=="coseccosec" pz=1/sin(1/sin(pz)) elseif @f1=="sin+cos" pz=sin(pz)+cos(pz) elseif @f1=="sin+tan" pz=sin(pz)+tan(pz) else pz=cos(pz)+tan(pz) endif if @f2=="ident" pz=ident(pz) elseif @f2=="sec+cosec" pz=1/cos(pz)+1/sin(pz) elseif @f2=="sec*cosec" pz=1/(cos(pz)*sin(pz)) elseif @f2=="sec/cosec" pz=sin(pz)/cos(pz) elseif @f2=="sqr+recip" pz=sqr(pz)+recip(pz) elseif @f2=="costan+" pz=cosh(tan(pz))+pz elseif @f2=="cotantanh+" pz=cotan(tanh(pz))+pz elseif @f2=="sqr*exp" pz=sqr(pz)*exp(pz) elseif @f2=="sqr+secc" pz=sqr(pz)+1/(pz*cos(pz)) elseif @f2=="sqr*sec" pz=sqr(pz)/cos(pz) elseif @f2=="sqr*cosec" pz=sqr(pz)/sin(pz) elseif @f2=="sqr*gauss" pz=sqr(pz)*exp(-sqr(pz)) elseif @f2=="sqr*expit" pz=sqr(pz)/(1+exp(-pz)) elseif @f2=="cotanhc+recip" pz=cotanh(pz)/pz+1/pz elseif @f2=="secc+recip" pz=1/(pz*cos(pz))+1/pz elseif @f2=="sincosexp" pz=sin(cos(exp(pz))) elseif @f2=="sqrtanhsec" pz=sqr(tanh(1/cos(pz))) elseif @f2=="reciptanhsec" pz=1/(tanh(1/cos(pz))) elseif @f2=="cotanh*cos+" pz=cotanh(pz)*cos(pz)+pz elseif @f2=="cotanh*exp+" pz=cotanh(pz)*exp(pz)+pz elseif @f2=="cotan*cos+" pz=cotan(pz)*cos(pz)+pz elseif @f2=="cotan*exp*cos+" pz=cotanh(pz)*exp(pz)*cos(pz)+pz elseif @f2=="^4+" pz=pz^4+pz elseif @f2=="tan*tanh+" pz=tan(pz)*tanh(pz)+pz elseif @f2=="cotanhflip(recip+)" pz=cotanh(flip(1/pz+pz)) elseif @f2=="cotanflip(recip+)" pz=cotan(flip(1/pz+pz)) elseif @f2=="tanhflip(recip+)" pz=tanh(flip(1/pz+pz)) elseif @f2=="coshflip(recip+)" pz=cosh(flip(1/pz+pz)) elseif @f2=="sinhflip(recip+)" pz=sinh(flip(1/pz+pz)) elseif @f2=="expflip(recip+)" pz=exp(flip(1/pz+pz)) elseif @f2=="sin(recip+)" pz=sin(1/pz+pz) elseif @f2=="recip(recip+)" pz=recip(1/pz+pz) elseif @f2=="recipflip(recip+)" pz=recip(flip(1/pz+pz)) elseif @f2=="flipexsec" pz=flip(1/cos(pz)-1) elseif @f2=="recipexsec" pz=recip(1/cos(pz)-1) elseif @f2=="expexsec" pz=exp(1/cos(pz)-1) elseif @f2=="recipflipexsec" pz=recip(flip(1/cos(pz)-1)) elseif @f2=="recipcotanhexsec" pz=recip(cotanh(1/cos(pz)-1)) elseif @f2=="recipatanhexsec" pz=recip(atanh(1/cos(pz)-1)) elseif @f2=="flipcosexsec" pz=flip(cos(1/cos(pz)-1)) elseif @f2=="flipcoshexsec" pz=pz=flip(cosh(1/cos(pz)-1)) elseif @f2=="flipcotanexsec" pz=flip(cotan(1/cos(pz)-1)) elseif @f2=="exsec/excosec" pz=(1/cos(pz)-1)/(1/sin(pz)-1) elseif @f2=="exsinc" pz=sin(pz)/pz-1 elseif @f2=="excosc" pz=cos(pz)/pz-1 elseif @f2=="extanc" pz=tan(pz)/pz-1 elseif @f2=="exsecc" pz=1/(pz*cos(pz))-1 elseif @f2=="excosecc" pz=1/(pz*sin(pz))-1 elseif @f2=="exsecc*" pz=(1/(pz*cos(pz))-1)*pz elseif @f2=="excosecc*" pz=(1/(pz*sin(pz))-1)*pz elseif @f2=="sqrtrecipcube" pz=sqrt(recip(pz^3)) elseif @f2=="sqrtasinhcube" pz=sqrt(asinh(pz^3)) elseif @f2=="coshccoshc" pz=cosh(cosh(pz)/pz)/(cosh(pz)/pz) elseif @f2=="cosccosc" pz=cos(cos(pz)/pz)/(cos(pz)/pz) elseif @f2=="cotanhccotanhc" pz=cotanh(cotanh(pz)/pz)/(cotanh(pz)/pz) elseif @f2=="seccsecc" pz=cos(1/(pz*cos(pz)))/(1/(pz*cos(pz))) else pz=cosh(1/(pz*cosh(pz)))/(1/(pz*cosh(pz))) endif if @f3=="ident" pz=ident(pz) elseif @f3=="sinsin/i" pz=sin(sin(pz))/1i elseif @f3=="sinsinh/i" pz=sin(sinh(pz))/1i elseif @f3=="costanh/i" pz=cos(tanh(pz))/1i elseif @f3=="recipcotan/i" pz=recip(cotan(pz))/1i elseif @f3=="sqrtan/i" pz=sqr(tan(pz))/1i elseif @f3=="flipcay" pz=flip((pz-1i)/(pz+1i)) elseif @f3=="cotanhcay" pz=cotanh((pz-1i)/(pz+1i)) elseif @f3=="tanhcay" pz=tanh((pz-1i)/(pz+1i)) elseif @f3=="coscay" pz=cos((pz-1i)/(pz+1i)) elseif @f3=="coshcay" pz=cosh((pz-1i)/(pz+1i)) elseif @f3=="sqrcay" pz=sqr((pz-1i)/(pz+1i)) elseif @f3=="recipsincay" pz=recip(sin((pz-1i)/(pz+1i))) elseif @f3=="cotanhcotanhcay" pz=cotanh(cotanh((pz-1i)/(pz+1i))) elseif @f3=="exp+recip+sec+cosec" pz=exp(pz)+recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="recip+sec+cosec" pz=recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan+cotan+sec+cosec" pz=tan(pz)+cotan(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="exp*exp+sec+cosec" pz=exp(pz)*exp(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="cotanh*recip+sec+cosec" pz=cotanh(pz)*recip(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan*cos+sec+cosec" pz=tan(pz)*cos(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="tan*cosh+sec+cosec" pz=tan(pz)*cosh(pz)+1/cos(pz)+1/sin(pz) elseif @f3=="sinc*cosc+sec*cosec" pz=(sin(pz)/pz)*(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="expsinc*expcosc+sec*cosec" pz=exp(sin(pz)/pz)*exp(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="sqrsinc*expcosc+sec*cosec" pz=sqr(sin(pz)/pz)*exp(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="recipsinc*cotanhcosc+sec*cosec" pz=recip(sin(pz)/pz)*cotanh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="recipsinc*coshhcosc+sec*cosec" pz=recip(sin(pz)/pz)*cosh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="expsinc*coshhcosc+sec*cosec" pz=exp(sin(pz)/pz)*cosh(cos(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="tanc*cotanc+sec*cosec" pz=(tan(pz)/pz)*(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="reciptanc*sqrcotanc +sec*cosec" pz=recip(tan(pz)/pz)*sqr(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="reciptanc*tanhcotanc+sec*cosec" pz=recip(tan(pz)/pz)*tanh(cotan(pz)/pz)+1/(cos(pz)*sin(pz)) elseif @f3=="exsec/excosec" pz=(1/cos(pz)-1)/(1/sin(pz)-1) elseif @f3=="tanh(exsec/excosec)" pz=tanh((1/cos(pz)-1)/(1/sin(pz)-1)) elseif @f3=="tanh(flip(exsec/excosec))" pz=tanh(flip((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="tanh(exp(exsec/excosec))" pz=tanh(exp((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(flip(exsec/excosec))" pz=recip(flip((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(exp(exsec/excosec))" pz=recip(exp((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(cos(exsec/excosec))" pz=recip(cos((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(cosh(exsec/excosec))" pz=recip(cosh((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(sin(exsec/excosec))" pz=recip(sin((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="recip(sinh(exsec/excosec))" pz=recip(sinh((1/cos(pz)-1)/(1/sin(pz)-1))) elseif @f3=="softplus" pz=log(1+exp(pz)) elseif @f3=="sin+" pz=sin(pz)+pz elseif @f3=="cos+" pz=cos(pz)+pz elseif @f3=="tan+" pz=tan(pz)+pz elseif @f3=="versin" pz=1-cos(pz) elseif @f3=="vercos" pz=1+cos(pz) elseif @f3=="coversin" pz=1-sin(pz) elseif @f3=="covercos" pz=1+sin(pz) elseif @f3=="asinh" pz=asinh(pz) elseif @f3=="atanh" pz=atanh(pz) else pz=sqr(log(pz)) endif pz=@p1*pz^@pow+@p2 return pz endfunc default: title="Functions Transform" int param version caption="Version" default=100 visible=@version<100 endparam param f1 caption="Function 1" enum="ident""sin""sinh""cosh""tan""tanh""sqr""exp""abs""recip"\ "sec""sech""cosech""exsec""crd""gd""sinc""cosc""coshc""tanc"\ "cotanc""cotanhc""secc""sechc""cosecc""cosechc""cube""expit""gauss"\ "sqr+""cube+sqr+""cube+""recip+""cotan+""sec+""cosec+""cos*""tan*""sec*"\ "cosec*""exp*""expexp""sinsin""coscos""tantan""cotancotan""secsec""coseccosec""sin+cos"\ "sin+tan""cos+tan" endparam param f2 caption="Function 2" enum="ident""sec+cosec""sec*cosec""sec/cosec""sqr+recip""costan+""cotantanh+""sqr*exp""sqr+secc""sqr*sec"\ "sqr*cosec""sqr*gauss""sqr*expit""cotanhc+recip""secc+recip"\ "sincosexp""sqrtanhsec""reciptanhsec""cotanh*cos+""cotanh*exp+"\ "cotan*cos+""cotan*exp*cos+""^4+""tan*tanh+""cotanhflip(recip+)""cotanflip(recip+)"\ "tanhflip(recip+)""coshflip(recip+)""sinhflip(recip+)""expflip(recip+)"\ "sin(recip+)""recip(recip+)""recipflip(recip+)""flipexsec""recipexsec""expexsec""recipflipexsec"\ "recipcotanhexsec""recipatanhexsec""flipcosexsec"\ "flipcoshexsec""flipcotanexsec""exsec/excosec""exsinc""excosc""extanc""exsecc""excosecc""exsecc*""excosecc*"\ "sqrtrecipcube""sqrtasinhcube""coshccoshc""cosccosc""cotanhccotanhc""seccsecc""sechcsechc" endparam param f3 caption="Function 3" enum="ident""sinsin/i""sinsinh/i""costanh/i""recipcotan/i""sqrtan/i"\ "flipcay""cotanhcay""tanhcay""coscay""coshcay""sqrcay""recipsincay""cotanhcotanhcay"\ "exp+recip+sec+cosec""recip+sec+cosec""tan+cotan+sec+cosec"\ "exp*exp+sec+cosec""cotanh*recip+sec+cosec""tan*cos+sec+cosec""tan*cosh+sec+cosec"\ "sinc*cosc+sec*cosec""expsinc*expcosc+sec*cosec""sqrsinc*expcosc+sec*cosec""recipsinc*cotanhcosc+sec*cosec"\ "recipsinc*coshhcosc+sec*cosec""expsinc*coshhcosc+sec*cosec""tanc*cotanc+sec*cosec"\ "reciptanc*sqrcotanc +sec*cosec""reciptanc*tanhcotanc+sec*cosec""exsec/excosec"\ "tanh(exsec/excosec)""tanh(flip(exsec/excosec))""tanh(exp(exsec/excosec))""recip(flip(exsec/excosec))" \ "recip(exp(exsec/excosec))""recip(cos(exsec/excosec))""recip(cosh(exsec/excosec))""recip(sin(exsec/excosec))""recip(sinh(exsec/excosec))"\ "softplus""sin+""cos+""tan+""versin""vercos""coversin""covercos""asinh""atanh""sqrlog" endparam param p1 default=(1,0) endparam param p2 default=(0,0) endparam param pow caption="Exponent" default=1 endparam } class OM_Moebius(common.ulb:UserTransform) { public: complex func Iterate(complex pz) pz=fn1(pz) return ((@p1*pz+@p2)/(@p3*pz+@p4))^@pow endfunc default: title="Moebius" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Moebius Parameter 1" default=(2,0) endparam param p2 caption="Moebius Parameter 2" default=(0.5,0) endparam param p3 caption="Moebius Parameter 3" default=(-0.7,1) endparam param p4 caption="Moebius Parameter 4" default=(1.5,0) endparam func fn1 caption="Function" default=ident() endfunc param pow caption="Exponent" default=1.0 endparam } class OM_MunsterMap(common.ulb:UserTransform) { public: complex func Iterate(complex pz) if @v==0 return exp(@p2*1i)*pz^@pow*(pz-@p1)/(1-@p1*pz)+@p3 elseif @v==1 return exp(@p2*1i)*pz^@pow*(-@p1-1i*pz-1i*pz^3)/(@p1+pz^2+1i*pz^3)+@p3 elseif @v==2 return exp(@p2*1i)*pz^@pow*(@p1*3/2-pz^2)/(1-@p1*3*pz^2/2)+@p3 else return exp(@p2*1i)*pz^@pow*((1-conj(@p1)*pz)/(pz-@p1))*((1-conj(@p4)*pz)/(pz-@p4))+@p3 endif endfunc default: title="Munster Map" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param p1 caption="Munster Parameter 1" default=(2,0) endparam param p2 caption="Munster Parameter 2" default=0.0 endparam param p3 caption="Munster Parameter 3" default=(0,0) endparam param p4 caption="Munster Parameter 4" default=(1.5,0) visible=@v==3 endparam param pow caption="Exponent" default=(2,0) endparam } class OM_Polylog(common.ulb:UserTransform) { ;https://en.wikipedia.org/wiki/Polylogarithm ;http://oeis.org/A008292 public: complex func Iterate(complex pz) pz=fn1(pz) if @v=="-1" pz=pz/(1-pz)^2 elseif @v=="-2" pz=pz*(1+pz)/(1-pz)^3 elseif @v=="-3" pz=pz*(1+4*pz+pz^2)/(1-pz)^4 elseif @v=="-4" pz=pz*(1+pz)*(1+10*pz+pz^2)/(1-pz)^5 elseif @v=="-5" pz=pz*(pz^4+26*pz^3+66*pz^2+26*pz+1)/(1-pz)^6 elseif @v=="-6" pz=pz*(pz^5+57*pz^4+302*pz^3+302*pz^2+57*pz+1)/(1-pz)^7 elseif @v=="-7" pz=pz*(pz^6+120*pz^5+1191*pz^4++2416*pz^3+1191*pz^2+120*pz+1)/(1-pz)^8 elseif @v=="-8" pz=pz*(pz^7+247*pz^6+4293*pz^5+15619*pz^4+15619*pz^3+4293*pz^2+247*pz+1)/(1-pz)^9 elseif @v=="-9" pz=pz*(pz^8+502*pz^7+14608*pz^6+88234*pz^5+156190*pz^4+88234*pz^3+14608*pz^2+502*pz+1)/(1-pz)^10 elseif @v=="-10" pz=pz*(pz^9+1013*pz^8+47840*pz^7+455192*pz^6+1310354*pz^5+1310354*pz^4+455192*pz^3+47840*pz^2+1013*pz+1)/(1-pz)^11 endif pz=@p1*pz+@p2 return pz endfunc default: title="Polylog" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Polylogarithm" enum="-1""-2""-3""-4""-5""-6""-7""-8""-9""-10" endparam param p1 caption="Parameter 1" default=(1,0) endparam param p2 caption="Parameter 2" default=(0,0) endparam func fn1 caption="Function" default=ident() endfunc } class OM_AttraktorTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) float x=real(fn1(pz)) float y=imag(fn1(pz)) if k2<=k1 if @V=="Brusselator" d=cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3)) elseif @V =="Oscillating Chemical Reaction" d=cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2))) elseif @V=="Buckling Column Model" d=cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4)) elseif @V=="Rayleigh" d=cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3)) elseif @V=="Cathala" d=cabs(@p1*x+y+flip(@p2+x^2)) elseif @V=="Sprott-Elhadj" d=cabs(@p1*x/(1+y^2)+flip(x+@p2*y)) elseif @V=="Modified Lozi" d=cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x)) elseif @V=="Multifold Henon" d=cabs(1-@p1*sin(x)+@p2*y+flip(x)) elseif @V=="Mira" d=cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2))) elseif @V=="Garrote-Mira" d=cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2))) elseif @V=="Hopalong" d=cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x)) elseif @V=="Martin" d=cabs(y+sin(x)+flip(@p1-x)) elseif @V=="Popcorn" d=cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x)))) elseif @V=="Popcorn 2" d=cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x)))) elseif @V=="Ushiki" d=cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y)) elseif @V=="Strelkova-Anishchenko" d=cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y))) elseif @V=="Cat" d=cabs((2*x+y)%1+flip((x+y)%1)) elseif @V=="HCA" d=cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2))) elseif @V=="Coupled Logistic" d=cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x))) elseif @V=="Sine" d=cabs(y+flip(@p1*sin(x)+@p2*y)) elseif @V=="Henon" d=cabs(1-@p1*x^2+y+flip(@p2*x)) elseif @V=="Burgers" d=cabs(@p1*x-y^2+flip(@p2*y+x*y)) elseif @V=="Cao-Lai" d=cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi))) elseif @V=="Marotto-Lorenz" d=cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x)) elseif @V=="de Jong" d=cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y))) elseif @V=="Clifford" d=cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y))) elseif @V=="Svensson" d=cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y))) elseif @V=="Chip" d=cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x)) elseif @V=="Chirikov Mod" d=cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x))) elseif @V=="Duffing" d=cabs(y+flip(-@p2*x+@p1*y-y^3)) elseif @V=="Quadruptwo" d=cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x)) elseif @V=="Ikeda" d=cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1))))) elseif @V=="Gumowski-Mira" d=cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2))) elseif @V=="Gumowski-Mira Mod" d=cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2))) elseif @V=="Gumowski-Mira 2" d=cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2))) elseif @V=="Bogdanov" d=cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y) elseif @V=="Mira 2" d=cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2)) elseif @V=="Mira 3" d=cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3)) elseif @V=="Gingerbread" d=cabs(1-y+cabs(x)+flip(x)) elseif @V=="Hamilton" d=cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y))))) elseif @V=="Kam Torus" d=cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1))) elseif @V=="Lozi" d=cabs(1+y-@p1*cabs(x)+flip(@p2*x)) elseif @V=="Threeply" d=cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x)) elseif @V=="Tinkerbell" d=cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y)) elseif @V=="Van der Pol" d=cabs(@p1*(x-x^3/3-y)+flip(x/@p1)) elseif @V=="Van der Pol 2" d=cabs(y+flip(@p1*(1-x^2)*y-x)) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Attraktor Traps" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Trap" enum="Brusselator""Oscillating Chemical Reaction"\ "Buckling Column Model""Rayleigh""Cathala""Sprott-Elhadj"\ "Modified Lozi""Multifold Henon""Mira""Garrote-Mira"\ "Hopalong""Martin""Popcorn""Popcorn 2""Ushiki"\ "Strelkova-Anishchenko""Cat""HCA""Coupled Logistic"\ "Sine""Henon""Burgers""Cao-Lai""Marotto-Lorenz""de Jong"\ "Clifford""Svensson""Chip""Chirikov Mod""Duffing"\ "Quadruptwo""Ikeda""Gumowski-Mira""Gumowski-Mira Mod"\ "Gumowski-Mira 2""Bogdanov""Mira 2""Mira 3""Gingerbread" \ "Hamilton""Kam Torus""Lozi""Threeply""Tinkerbell" \ "Van der Pol""Van der Pol 2" default=3 endparam param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!=16 && @V!=38 endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!=11 && @V!=16 && @V!=28 && @V!=38 \ && @V!=40 && @V!=44 && @V!=45 endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==10 \ || @V==14 || @V==24 || @V==25 || @V==26 \ || @V==27 || @V==30 || @V==31 || @V==32 \ || @V==34 || @V==35 || @V==37 || @V==42 \ || @V==43 endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V==2 || @V==14 || @V==24 \ || @V==25 || @V==26 || @V==31 || @V==43 endparam param p5 caption="Detail" default=8 endparam func fn1 caption="Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Plasmosis(common.ulb:GradientColoring) { ; This draws on work by Ron Barnett and Damien Jones. Many thanks to them. public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=1e30 d1=(1,0) d2=(0,1)^0.411111111111 f=0.0 g=1.0 i=7 s=ppixel if @F1=="sin" s=sin(s) elseif @F1=="sinh" s=sinh(s) elseif @F1=="cos" s=cos(s) elseif @F1=="cosh" s=cosh(s) elseif @F1=="cotan" s=cotan(s) elseif @F1=="cotanh" s=cotanh(s) elseif @F1=="sqr" s=sqr(s) elseif @F1=="sqrt" s=sqrt(s) elseif @F1=="log" s=log(s) elseif @F1=="exp" s=exp(s) elseif @F1=="abs" s=abs(s) elseif @F1=="conj" s=conj(s) elseif @F1=="flip" s=flip(s) elseif @F1=="ident" s=ident(s) elseif @F1=="recip" s=recip(s) elseif @F1=="versin" s=1-cos(s) elseif @F1=="haversin" s=(1-cos(s))/2 elseif @F1=="coversin" s=1-sin(s) elseif @F1=="hacoversin" s=(1-sin(s))/2 elseif @F1=="vercos" s=1+cos(s) elseif @F1=="havercos" s=(1+cos(s))/2 elseif @F1=="covercos" s=1+sin(s) elseif @F1=="hacovercos" s=(1+sin(s))/2 elseif @F1=="cosec" s=1/sin(s) elseif @F1=="cosech" s=1/sinh(s) elseif @F1=="excosec" s=1/sin(s)-1 elseif @F1=="aexcosec" s=asin(1/(s+1)) elseif @F1=="crd" s=2*sin(s/2) elseif @F1=="acrd" s=2*asin(s/2) elseif @F1=="sinc" s=sin(s)/(s) elseif @F1=="sinhc" s=sinh(s)/(s) elseif @F1=="cosc" s=cos(s)/(s) elseif @F1=="coshc" s=cosh(s)/(s) elseif @F1=="cotanc" s=cotan(s)/(s) elseif @F1=="cotanhc" s=cotanh(s)/(s) elseif @F1=="cosecc" s= 1/(s*sin(s)) elseif @F1=="cosechc" s=1/(s*sinh(s)) elseif @F1=="cube" s=s^3 elseif @F1=="cuberoot" s=s^(1/3) elseif @F1=="colog" s=-log(s) elseif @F1=="expit" s=1/(1+exp(-s)) elseif @F1=="softplus" s=log(1+exp(s)) elseif @F1=="sqr+" s=sqr(s)+s elseif @F1=="cube+" s=s^3+sqr(s)+s elseif @F1=="sin+" s=sin(s)+s elseif @F1=="cos+" s=cos(s)+s elseif @F1=="cotan+" s=cotan(s)+s elseif @F1=="cosec+" s=1/sin(s)+s elseif @F1=="sin*" s=sin(s)*s elseif @F1=="cos*" s=cos(s)*s elseif @F1=="cotan*" s=cotan(s)*s else s=s/sin(s) endif h=s*@p3*d1+@p4 while i>0 j1=floor(real(h))%256 j2=floor(imag(h))%256 if j1<0 j1=j1+256 endif if j2<0 j2=j2+256 endif j3=(j1+1)%256 j4=(j2+1)%256 k1=real(h)-floor(real(h)) k2=imag(h)-floor(imag(h)) k3=k1-1 k4=k2-1 m1=(j1^2%65536+j2)^2%65536 m2=(j3^2%65536+j2)^2%65536 m3=(j1^2%65536+j4)^2%65536 m4=(j3^2%65536+j4)^2%65536 n1=m1^2*0.25%512-256 n2=m2^2*0.25%512-256 n3=m3^2*0.25%512-256 n4=m4^2*0.25%512-256 n5=(m1+1)^2*0.25%512-256 n6=(m2+1)^2*0.25%512-256 n7=(m3+1)^2*0.25%512-256 n8=(m4+1)^2*0.25%512-256 p=0.0 p=1/sqrt(sqr(n1)+sqr(n5)) n1=n1*p n5=n5*p p=1/sqrt(sqr(n2)+sqr(n6)) n2=n2*p n6=n6*p p=1/sqrt(sqr(n3)+sqr(n7)) n3=n3*p n7=n7*p p=1/sqrt(sqr(n4)+sqr(n8)) n4=n4*p n8=n8*p q1=k1*n1+k2*n5 q2=k3*n2+k2*n6 q3=k1*n3+k4*n7 q4=k3*n4+k4*n8 r1=sqr(k1)*(3-k1*2) r2=sqr(k2)*(3-k2*2) r3=q1+r1*(q2-q1) r4=q3+r1*(q4-q3) f=f+(r3+r2*(r4-r3))*g g=g/2 h=h*d2*2 i=i-1 endwhile endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="*pixel" pz=pz*pixel else pz=pz/pixel endif a=cabs(pz) if a@p8 index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) else m_Solid=true endif else if b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7)<@p8 index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) else m_Solid=true endif endif else index=b*@p2*(1+@p7*(f+1)*0.5)/(1+@p7) endif return index endfunc private: float a float b complex d1 complex d2 float f float g int i complex s complex h float j1 float j2 float j3 float j4 float k1 float k2 float k3 float k4 float m1 float m2 float m3 float m4 float n1 float n2 float n3 float n4 float n5 float n6 float n7 float n8 float p float q1 float q2 float q3 float q4 float r1 float r2 float r3 float r4 float index default: title="Plasmosis" int param version caption="Version" default=100 visible=@version<100 endparam param p3 caption="Parameter 1" default=(1,0) endparam param p4 caption="Parameter 2" default=(0,0) endparam param p7 caption="Parameter 3" default = 10.0 endparam param p2 caption="Parameter 4" default=0.99 endparam param F3 caption="Function 1" enum="sin""sinh""asin""asinh"\ "cos""cosh""acos"\ "tanh""atan""atanh"\ "sqr""sqrt""exp""ident"\ "ceil" default=13 endparam param Fs caption="Function 2" enum="sin""sinh""asin""asinh""tan""tanh""atan"\ "atanh""sqr""sqrt"\ "ident""versin""aversin""haversin""ahaversin"\ "avercos"\ "exsec""aexsec"\ "crd""acrd""gd""agd"\ "cube""cuberoot""logit"\ "primecount""sqr+""cube+""sin+""tan+""sin*""cos*"\ "sinsin""+pixel""-pixel"\ "*pixel" default=10 endparam param F1 caption="Function 3" enum="sin""sinh""cos""cosh"\ "cotan""cotanh""sqr""sqrt""log""exp""abs""conj"\ "flip""ident""recip""versin""haversin""coversin"\ "hacoversin""vercos""havercos""covercos"\ "hacovercos"\ "cosec""cosech"\ "excosec""aexcosec""crd""acrd""sinc""sinhc""cosc""coshc"\ "cotanc""cotanhc""cosecc""cosechc"\ "cube""cuberoot""colog""expit""softplus"\ "sqr+""cube+""sin+""cos+""cotan+""cosec+""sin*""cos*""cotan*"\ "cosec*" default=13 endparam param solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=0.875 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AttraktorTraps2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=@p5 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) float x=real(fn1(pz)) float y=imag(fn1(pz)) if @V=="Brusselator" d=b-abs(atan2((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V =="Oscillating Chemical Reaction" d=b-abs(atan2((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Buckling Column Model" d=b-abs(atan2(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Rayleigh" d=b-abs(atan2(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Cathala" d=b-abs(atan2(@p1*x+y+flip(@p2+x^2))) elseif @V=="Sprott-Elhadj" d=b-abs(atan2(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Modified Lozi" d=b-abs(atan2(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Multifold Henon" d=b-abs(atan2(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Mira" d=b-abs(atan2(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Garrote-Mira" d=b-abs(atan2(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Hopalong" d=b-abs(atan2(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Martin" d=b-abs(atan2(y+sin(x)+flip(@p1-x))) elseif @V=="Popcorn" d=b-abs(atan2(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" d=b-abs(atan2(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Ushiki" d=b-abs(atan2((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Strelkova-Anishchenko" d=b-abs(atan2(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Cat" d=b-abs(atan2((2*x+y)%1+flip((x+y)%1))) elseif @V=="HCA" d=b-abs(atan2(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Coupled Logistic" d=b-abs(atan2((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="Sine" d=b-abs(atan2(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Henon" d=b-abs(atan2(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Burgers" d=b-abs(atan2(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" d=b-abs(atan2(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Marotto-Lorenz" d=b-abs(atan2((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="de Jong" d=b-abs(atan2(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Clifford" d=b-abs(atan2(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Svensson" d=b-abs(atan2(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Chip" d=b-abs(atan2(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" d=b-abs(atan2(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Duffing" d=b-abs(atan2(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Quadruptwo" d=b-abs(atan2(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Ikeda" d=b-abs(atan2(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Gumowski-Mira" d=b-abs(atan2(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira Mod" d=b-abs(atan2((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Gumowski-Mira 2" d=b-abs(atan2(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Bogdanov" d=b-abs(atan2(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Mira 2" d=b-abs(atan2(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" d=b-abs(atan2((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Gingerbread" d=b-abs(atan2(1-y+cabs(x)+flip(x))) elseif @V=="Hamilton" d=b-abs(atan2(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="Kam Torus" d=b-abs(atan2(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Lozi" d=b-abs(atan2(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Threeply" d=b-abs(atan2(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" d=b-abs(atan2(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Van der Pol" d=b-abs(atan2(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" d=b-abs(atan2(y+flip(@p1*(1-x^2)*y-x))) endif if d>0 if @Va==0 c=abs(c^(2/3)+d^(2/3)-@p6) elseif @Va==1 c=c+d+1-@p6 elseif @Va==2 c=abs(d-@p6*cosh(c/@p6)) elseif @Va==3 c=sqrt(c+d)+1-@p6 elseif @Va==4 c=|cabs(pz*d)-@p6| endif endif endfunc float func ResultIndex(complex pz) if @solid if @invert if c<@p7 index=c else m_Solid=true endif else if c>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float b float c float d float index default: title="Attraktor Traps 2" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5" default=1 endparam param p6 caption="Variant Parameter" default=1.0 endparam heading endheading param V caption="Trap" enum="Brusselator""Oscillating Chemical Reaction"\ "Buckling Column Model""Rayleigh""Cathala""Sprott-Elhadj"\ "Modified Lozi""Multifold Henon""Mira""Garrote-Mira"\ "Hopalong""Martin""Popcorn""Popcorn 2""Ushiki"\ "Strelkova-Anishchenko""Cat""HCA""Coupled Logistic"\ "Sine""Henon""Burgers""Cao-Lai""Marotto-Lorenz""de Jong"\ "Clifford""Svensson""Chip""Chirikov Mod""Duffing"\ "Quadruptwo""Ikeda""Gumowski-Mira""Gumowski-Mira Mod"\ "Gumowski-Mira 2""Bogdanov""Mira 2""Mira 3""Gingerbread" \ "Hamilton""Kam Torus""Lozi""Threeply""Tinkerbell" \ "Van der Pol""Van der Pol 2" default=0 endparam param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!=16 && @V!=38 endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!=11 && @V!=16 && @V!=28 && @V!=38 \ && @V!=40 && @V!=44 && @V!=45 endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==10 \ || @V==14 || @V==24 || @V==25 || @V==26 \ || @V==27 || @V==30 || @V==31 || @V==32 \ || @V==34 || @V==35 || @V==37 || @V==42 \ || @V==43 endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V==2 || @V==14 || @V==24 \ || @V==25 || @V==26 || @V==31 || @V==43 endparam heading endheading param p5 caption="Parameter" default=0.25 endparam func fn1 caption="Function" default=ident() endfunc heading endheading param @solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.0225 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_AttraktorTraps3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 i=0 b=0.0 b2=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if @S==true if i>=0 && i<=1E20 pz=(abs(fn2(fn1(pz)))-@center)/@p5 float x=sqrt(@p6)*real(pz) float y=1/sqrt(@p6)*imag(pz) if @V=="Bogdanov" b=log(cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Bogdanov-Takens" b=log(cabs(y+flip(@p1+@p2*x+x^2-x*y))) elseif @V=="Brusselator" b=log(cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V=="Buckling Column Model" b=log(cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Burgers" b=log(cabs(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" b=log(cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Cat" b=log(cabs((2*x+y)%1+flip((x+y)%1))) elseif @V=="Cathala" b=log(cabs(@p1*x+y+flip(@p2/2+x^2))) elseif @V=="Cathala 2" b=log(cabs((1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3))) elseif @V=="Chip" b=log(cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" b=log(cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Coupled Logistic" b=log(cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="de Jong" b=log(cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Duffing" b=log(cabs(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Garrote-Mira" b=log(cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Gingerbread" b=log(cabs(1-y+cabs(x)+flip(x))) elseif @V=="Gumowski-Mira" b=log(cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira 2" b=log(cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Gumowski-Mira Mod" b=log(cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Hamilton" b=log(cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="HCA" b=log(cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Henon" b=log(cabs(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Hopalong" b=log(cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Horsthemke-Lefever" b=log(cabs(@p1*x*(1-x/@p3)-@p2*x*y+flip(-@p2*x*y+@p4*(@p7-y)))) elseif @V=="Ikeda" b=log(cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Ilhem-Amel" b=log(cabs(x^3+@p1*x+@p2+y+flip(@p3*x))) elseif @V=="Kam Torus" b=log(cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Latoocarfian" b=log(cabs(sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)))) elseif @V=="Lozi" b=log(cabs(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Marotto-Lorenz" b=log(cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="Martin" b=log(cabs(y+sin(x)+flip(@p1-x))) elseif @V=="Mira" b=log(cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Mira 2" b=log(cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" b=log(cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Modified Lozi" b=log(cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Nowicki-Swirszcz" b=log(cabs(3*x*((x-y)^2-@p1)/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)))) elseif @V=="Multifold Henon" b=log(cabs(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Oscillating Chemical Reaction" b=log(cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Pickover 1" b=log(cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Pickover 2" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3))) elseif @V=="Pickover 3" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2))) elseif @V=="Pickover 4" b=log(cabs(cabs(sin(@p1*y))+(sin(@p1*x))^2+flip(cabs(sin(@p2*x))+(sin(@p2*y))^2))) elseif @V=="Polyharmonic Pendulum" b=log(cabs(y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)))) elseif @V=="Popcorn" b=log(cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" b=log(cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Quadruptwo" b=log(cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Rayleigh" b=log(cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Sine" b=log(cabs(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Sine-Sine" b=log(cabs(sin(x)-sin(2*y)+flip(x))) elseif @V=="Sprott" b=log(cabs((1+@p1*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2))) elseif @V=="Sprott-Elhadj" b=log(cabs(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Standard Map" b=log(cabs(x+@p1*sin(y)+flip(y+x+@p1*sin(y)))) elseif @V=="Strelkova-Anishchenko" b=log(cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Svensson" b=log(cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Threeply" b=log(cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" b=log(cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Ushiki" b=log(cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Van der Pol" b=log(cabs(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" b=log(cabs(y+flip(@p1*(1-x^2)*y-x))) elseif @V=="Volterra-Lotka" b=log(cabs(@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y))) elseif @V=="OM1" b=log(cabs(@p1*y-sin(x)+3*y^2+flip(@p2*x^2+cos(y)-3*x))) elseif @V=="OM2" b=log(cabs(@p1+@p2*y*x+y^2+flip(pz+@p3*x^2+y^3))) elseif @V=="OM3" b=log(cabs(@p1*y^2+x-3*x*y+flip(x-3*@p2*x^3-y))) elseif @V=="OM4" b=log(cabs(y-x^2/3+2*@p1*x*y+flip(x^3+2*y+@p2/2))) elseif @V=="OM5" b=log(cabs(y-@p1*x*sin(2*y)+0.001*cos(x)+flip(@p2*y*cos(2*x)+0.001*cos(y)))) elseif @V=="OM6" b=log(cabs(x*sin(2*y)+@p1*cos(x)+flip(y*cos(2*x)+@p2*cos(y)))) elseif @V=="OM7" b=log(cabs(sin(y)+y^3-x/2+flip(@p1*x-x^2-0.3*@p2*y))) elseif @V=="OM8" b=log(cabs(@p1*sinh((x^2-y^2)+2*sqrt(-1)*x*y+@p2-1))) elseif @V=="OM9" b=log(cabs(@p1*x+y+x^2-2*y^2+flip(-x+@p1*y+x^2-x^3))) elseif @V=="OM10" b=log(cabs((x*(1-x)+y*cos(@p1-x)/(@p1+x))/@p2+flip(x-y))) elseif @V=="OM11" b=log(cabs(|sin(@p1*y)|+(sin(@p1*x))^2+flip(|sin(@p2*x)|+(sin(@p2*y))^2))) elseif @V=="OM12" b=log(cabs(1-@p1*y^2-acosh(x)+flip(@p2*x))) elseif @V=="OM13" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sin(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM14" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM15" b=log(cabs(x-y-cotanh(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM16" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-flip(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM17" b=log(cabs(x-y-log(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sqrt(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM18" b=log(cabs(x-y-tan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM19" b=log(cabs(@p1*x+cos(y)+x^2-2*y^2+flip(-cos(x)+@p1*y+x^2-x^3))) elseif @V=="OM20" b=log(cabs(@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2)))) elseif @V=="OM21" b=log(cabs(@p1*(3*y+1)*x*(1-x)+flip((3*y+1)*y*(@p2-y)+@p3))) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif else if i>=0 && i<=1E20 pz=(fn2(fn1(pz))-@center)/@p5 float x=sqrt(@p6)*real(pz) float y=1/sqrt(@p6)*imag(pz) if @V=="Bogdanov" b=log(cabs(flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y)) elseif @V=="Bogdanov-Takens" b=log(cabs(y+flip(@p1+@p2*x+x^2-x*y))) elseif @V=="Brusselator" b=log(cabs((1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3))) elseif @V=="Buckling Column Model" b=log(cabs(y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4))) elseif @V=="Burgers" b=log(cabs(@p1*x-y^2+flip(@p2*y+x*y))) elseif @V=="Cao-Lai" b=log(cabs(@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)))) elseif @V=="Cat" b=log(cabs((2*x+y)%1+flip((x+y)%1))) elseif @V=="Cathala" b=log(cabs(@p1*x+y+flip(@p2/2+x^2))) elseif @V=="Cathala 2" b=log(cabs((1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3))) elseif @V=="Chip" b=log(cabs(y-(x/cabs(x))*cos(sqr(log(abs(@p2*x-@p3))))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Chirikov Mod" b=log(cabs(x+y+(@p1/2*pi)*sin(2*pi*x)+flip(y+(@p1/2*pi)*sin(2*pi*x)))) elseif @V=="Coupled Logistic" b=log(cabs((1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)))) elseif @V=="de Jong" b=log(cabs(sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)))) elseif @V=="Duffing" b=log(cabs(y+flip(-@p2*x+@p1*y-y^3))) elseif @V=="Garrote-Mira" b=log(cabs(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)))) elseif @V=="Gingerbread" b=log(cabs(1-y+cabs(x)+flip(x))) elseif @V=="Gumowski-Mira" b=log(cabs(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y+ \ flip(-x+@p1*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y) \ +2*(1-@p1)*(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+ \ @p2*(1-@p3*y^2)*y)^2/(1+(y+@p1*x+2*(1-@p1)*x^2/(1+x^2)+@p2*(1-@p3*y^2)*y)^2)))) elseif @V=="Gumowski-Mira 2" b=log(cabs(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)+flip \ (-x+@p3*(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2)) \ +2*(1-@p3)*(y+ @p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2 \ /(1+(y+@p1*(1-@p2*y^2)*y+@p3*x+2*(1-@p3)*x^2/(1+x^2))^2)))) elseif @V=="Gumowski-Mira Mod" b=log(cabs((1-@p1)*x+y+flip(y+@p2*x+2*(1-@p2)*x^2*(1+x^2)^(-2)))) elseif @V=="Hamilton" b=log(cabs(x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))))) elseif @V=="HCA" b=log(cabs(1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)))) elseif @V=="Henon" b=log(cabs(1-@p1*x^2+y+flip(@p2*x))) elseif @V=="Hopalong" b=log(cabs(y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x))) elseif @V=="Horsthemke-Lefever" b=log(cabs(@p1*x*(1-x/@p3)-@p2*x*y+flip(-@p2*x*y+@p4*(@p7-y)))) elseif @V=="Ikeda" b=log(cabs(@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))))) elseif @V=="Ilhem-Amel" b=log(cabs(x^3+@p1*x+@p2+y+flip(@p3*x))) elseif @V=="Kam Torus" b=log(cabs(x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)))) elseif @V=="Latoocarfian" b=log(cabs(sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)))) elseif @V=="Lozi" b=log(cabs(1+y-@p1*cabs(x)+flip(@p2*x))) elseif @V=="Marotto-Lorenz" b=log(cabs((1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x))) elseif @V=="Martin" b=log(cabs(y+sin(x)+flip(@p1-x))) elseif @V=="Mira" b=log(cabs(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)))) elseif @V=="Mira 2" b=log(cabs(x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2))) elseif @V=="Mira 3" b=log(cabs((1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3))) elseif @V=="Modified Lozi" b=log(cabs(1+@p1*(cabs(x)-y^2)+y+flip(@p2*x))) elseif @V=="Nowicki-Swirszcz" b=log(cabs(3*x*((x-y)^2-@p1)/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)))) elseif @V=="Multifold Henon" b=log(cabs(1-@p1*sin(x)+@p2*y+flip(x))) elseif @V=="Oscillating Chemical Reaction" b=log(cabs((@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)))) elseif @V=="Pickover 1" b=log(cabs(sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p2*x)+@p4*cos(@p2*y)))) elseif @V=="Pickover 2" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3))) elseif @V=="Pickover 3" b=log(cabs(sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2))) elseif @V=="Pickover 4" b=log(cabs(cabs(sin(@p1*y))+(sin(@p1*x))^2+flip(cabs(sin(@p2*x))+(sin(@p2*y))^2))) elseif @V=="Polyharmonic Pendulum" b=log(cabs(y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)))) elseif @V=="Popcorn" b=log(cabs(@p1*sin(y+tan(@p2*y))+flip(@p1*sin(x+tan(@p2*x))))) elseif @V=="Popcorn 2" b=log(cabs(x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))))) elseif @V=="Quadruptwo" b=log(cabs(y-(x/cabs(x))*sin(log(abs(@p2*x-@p3)))*atan(sqr(log(abs(@p3*x-@p2))))+flip(@p1-x))) elseif @V=="Rayleigh" b=log(cabs(y+flip(-(x+@p2*y^3-@p1*y)/@p3))) elseif @V=="Sine" b=log(cabs(y+flip(@p1*sin(x)+@p2*y))) elseif @V=="Sine-Sine" b=log(cabs(sin(x)-sin(2*y)+flip(x))) elseif @V=="Sprott" b=log(cabs((1+@p1*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2))) elseif @V=="Sprott-Elhadj" b=log(cabs(@p1*x/(1+y^2)+flip(x+@p2*y))) elseif @V=="Standard Map" b=log(cabs(x+@p1*sin(y)+flip(y+x+@p1*sin(y)))) elseif @V=="Strelkova-Anishchenko" b=log(cabs(1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)))) elseif @V=="Svensson" b=log(cabs(@p4*sin(@p1*x)-sin(@p2*y)+flip(@p3*cos(@p1*x)+cos(@p2*y)))) elseif @V=="Threeply" b=log(cabs(y-(x/cabs(x))*(abs(sin(x)*cos(@p2)+@p3-x*sin(@p1+@p2+@p3)))+flip(@p1-x))) elseif @V=="Tinkerbell" b=log(cabs(x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y))) elseif @V=="Ushiki" b=log(cabs((@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y))) elseif @V=="Van der Pol" b=log(cabs(@p1*(x-x^3/3-y)+flip(x/@p1))) elseif @V=="Van der Pol 2" b=log(cabs(y+flip(@p1*(1-x^2)*y-x))) elseif @V=="Volterra-Lotka" b=log(cabs(@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y))) elseif @V=="OM1" b=log(cabs(@p1*y-sin(x)+3*y^2+flip(@p2*x^2+cos(y)-3*x))) elseif @V=="OM2" b=log(cabs(@p1+@p2*y*x+y^2+flip(pz+@p3*x^2+y^3))) elseif @V=="OM3" b=log(cabs(@p1*y^2+x-3*x*y+flip(x-3*@p2*x^3-y))) elseif @V=="OM4" b=log(cabs(y-x^2/3+2*@p1*x*y+flip(x^3+2*y+@p2/2))) elseif @V=="OM5" b=log(cabs(y-@p1*x*sin(2*y)+0.001*cos(x)+flip(@p2*y*cos(2*x)+0.001*cos(y)))) elseif @V=="OM6" b=log(cabs(x*sin(2*y)+@p1*cos(x)+flip(y*cos(2*x)+@p2*cos(y)))) elseif @V=="OM7" b=log(cabs(sin(y)+y^3-x/2+flip(@p1*x-x^2-0.3*@p2*y))) elseif @V=="OM8" b=log(cabs(@p1*sinh((x^2-y^2)+2*sqrt(-1)*x*y+@p2-1))) elseif @V=="OM9" b=log(cabs(@p1*x+y+x^2-2*y^2+flip(-x+@p1*y+x^2-x^3))) elseif @V=="OM10" b=log(cabs((x*(1-x)+y*cos(@p1-x)/(@p1+x))/@p2+flip(x-y))) elseif @V=="OM11" b=log(cabs(|sin(@p1*y)|+(sin(@p1*x))^2+flip(|sin(@p2*x)|+(sin(@p2*y))^2))) elseif @V=="OM12" b=log(cabs(1-@p1*y^2-acosh(x)+flip(@p2*x))) elseif @V=="OM13" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sin(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM14" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM15" b=log(cabs(x-y-cotanh(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotanh(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM16" b=log(cabs(x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-flip(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM17" b=log(cabs(x-y-log(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sqrt(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM18" b=log(cabs(x-y-tan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)))) elseif @V=="OM19" b=log(cabs(@p1*x+cos(y)+x^2-2*y^2+flip(-cos(x)+@p1*y+x^2-x^3))) elseif @V=="OM20" b=log(cabs(@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2)))) elseif @V=="OM21" b=log(cabs(@p1*(3*y+1)*x*(1-x)+flip((3*y+1)*y*(@p2-y)+@p3))) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p8 index=1000*a else m_Solid=true endif else if 1000*a>@p8 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a int i float b float b2 float index default: title="Attraktor Traps 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Trap" enum="Bogdanov""Bogdanov-Takens""Brusselator""Buckling Column Model""Burgers""Cao-Lai""Cat""Cathala""Cathala 2"\ "Chip""Chirikov Mod""Coupled Logistic""de Jong""Duffing"\ "Garrote-Mira""Gingerbread""Gumowski-Mira""Gumowski-Mira 2""Gumowski-Mira Mod"\ "Hamilton""HCA""Henon""Hopalong""Horsthemke-Lefever""Ikeda""Ilhem-Amel""Kam Torus""Latoocarfian""Lozi"\ "Marotto-Lorenz""Martin""Mira""Mira 2""Mira 3""Modified Lozi""Nowicki-Swirszcz""Multifold Henon""Oscillating Chemical Reaction""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Polyharmonic Pendulum""Popcorn""Popcorn 2""Quadruptwo""Rayleigh""Sine"\ "Sine-Sine""Sprott""Sprott-Elhadj""Standard Map""Strelkova-Anishchenko""Svensson"\ "Threeply""Tinkerbell""Ushiki""Van der Pol""Van der Pol 2""Volterra-Lotka"\ "OM1""OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21" default=7 endparam func fn1 default=sqr() endfunc func fn2 default=ident() endfunc param p1 caption="Trap Parameter 1" default=(1,0) visible=@V!="Cat" && @V!="Gingerbread" && @V!="Sine-Sine" endparam param p2 caption="Trap Parameter 2" default=(1,0) visible=@V!="Martin" && @V!="Cat" && @V!="Chirikov Mod" && @V!="Gingerbread" \ && @V!="Kam Torus" && @V!="Van der Pol" && @V!="Van der Pol 2" && @V!="Sine-Sine" \ && @V!="OM9" && @V!="OM19" && @V!="OM20" && @V!="Standard Map" endparam param p3 caption="Trap Parameter 3" default=(1,0) visible=@V=="Brusselator" || @V=="Buckling Column Model" || @V=="Rayleigh" || @V=="Hopalong" \ || @V=="Ushiki" || @V=="de Jong" || @V=="Pickover 1" || @V=="Svensson" \ || @V=="Chip" || @V=="Quadruptwo" || @V=="Ikeda" || @V=="Gumowski-Mira" \ || @V=="Gumowski-Mira 2" || @V=="Bogdanov" || @V=="Mira 3" || @V=="Threeply" \ || @V=="Tinkerbell" || @V=="OM2" || @V=="Cathala 2" || @V=="Ilhem-Amel" \ || @V=="Latoocarfian" || @V=="Pickover 2" || @V=="Horsthemke-Lefever" || @V=="OM13" \ || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" || @V=="OM18" || @V=="OM21" \ || @V=="Volterra-Lotka" || @V=="Polyharmonic Pendulum" || @V=="Nowicki-Swirszcz" endparam param p4 caption="Trap Parameter 4" default=(1,0) visible=@V=="Buckling Column Model" || @V=="Ushiki" || @V=="de Jong" \ || @V=="Pickover 1" || @V=="Svensson" || @V=="Ikeda" || @V=="Tinkerbell" \ || @V=="Latoocarfian" || @V=="Horsthemke-Lefever" || @V=="OM13" \ || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" || @V=="OM18" \ || @V=="Volterra-Lotka" || @V=="Polyharmonic Pendulum" || @V=="Nowicki-Swirszcz" endparam param p7 caption="Trap Parameter 5" default=(1,0) visible=@V=="Horsthemke-Lefever" endparam param p5 caption="Parameter 1" default=-2.9 endparam param p6 caption="Parameter 2" default=1.0 endparam param f caption="Parameter 3" default=1.0 endparam param center caption="Parameter 4" default=(0,0) endparam param pow1 caption="Exponent 1" default=.2 endparam param pow2 caption="Exponent2" default=1.0 endparam param S caption="Symmetrise" default=false endparam param @solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=0.14 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Broubly(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="asinh" pz=asinh(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="third" pz=pz/3 elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif pz=@p3*pz+@p4 if @V=="1" pz=fn3(pz*(@p1-pz)+@p2) elseif @V=="2" pz=fn3(pz+@p1*pz/(pz+(@p2+1))^3) elseif @V=="3" pz=fn3(@p1*pz*exp((@p2+1)-exp(pz))) elseif @V=="4" pz=fn3(pz+@p1*abs(flip(pz))+@p2) elseif @V=="5" pz=fn3(pz+@p1*1i*cos(pz)+@p2) elseif @V=="6" pz=fn3(pz+@p1*1i*abs(tanh(pz))+@p2) elseif @V=="7" pz=fn3(pz+@p1*cotanh(flip(pz))+@p2) elseif @V=="8" pz=fn3(pz-@p1*(pz^4-1)/(4*pz^3)+@p2) elseif @V=="9" pz=fn3(pz+@p1*cosh(pz)+@p2) elseif @V=="10" pz=fn3(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2) elseif @V=="11" if |pz|<1 pz=pz/|pz| endif pz=@p1*fn3(pz)+@p2 elseif @V=="12" pz=fn3((pz-@p1)/(pz+@p1)+@p2) elseif @V=="13" pz=pz+@p1/fn3(pz)+@p2 elseif @V=="14" pz=pz+@p1*1i/fn3(pz)+@p2 elseif @V=="15" pz=fn3(pz+@p1*flip(pz)+@p2) elseif @V=="16" pz=fn3(pz+@p1*1i*sqr(pz)+@p2) elseif @V=="17" pz=fn3(pz+@p1*flip(sqr(pz))+@p2) elseif @V=="18" pz=fn3(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2) elseif @V=="19" pz=fn3(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2) elseif @V=="20" pz=fn3(pz+@p1*conj(pz)+@p2) elseif @V=="21" pz=fn3(pz+@p1*1i*flip(pz)+@p2) elseif @V=="22" pz=fn3(pz+@p1*conj(exp(pz))+@p2) elseif @V=="23" pz=fn3(pz+@p1*1i*sqr(sqr(pz))+@p2) elseif @V=="24" pz=fn3(pz+@p1*conj(sqr(pz))+@p2) elseif @V=="25" pz=fn3(@p1*pz*cosh(pz^2)+@p2) elseif @V=="26" pz=fn3(@p1*pz*cos(pz^2)+@p2) elseif @V=="27" pz=fn3(pz*(@p1*1i-pz)+@p2) elseif @V=="28" pz=fn3(@p1*pz*sqrt((@p2+1)-cabs(pz))) elseif @V=="29" pz=fn3(pz+@p1*abs(cotan(pz))+@p2) elseif @V=="30" pz=fn3(pz+@p1*flip(tan(pz))+@p2) elseif @V=="31" pz=fn3(pz+@p1*flip(cosh(pz))+@p2) elseif @V=="32" pz=fn3(pz+@p1*conj(cos(pz))+@p2) elseif @V=="33" pz=@p1*fn3(@p1/(pz-(@p2+1)))+(@p2+1) elseif @V=="34" pz=fn3(pz+@p1*cosh(flip(pz))+@p2) elseif @V=="35" pz=fn3(((pz^2+@p1-1)/(2*pz+@p1-2))^2+(@p2-0.5)) elseif @V=="36" pz=fn3(pz+@p1*cosh(sin(pz))+@p2) elseif @V=="37" pz=fn3(pz+@p1*1i*flip(sinh(pz))+@p2) elseif @V=="38" pz=fn3(pz+@p1*conj(log(pz))+@p2) elseif @V=="39" pz=fn3(pz^2*(pz-4)/(@p1+4*pz)+@p2) elseif @V=="40" pz=fn3(pz+@p1*abs(exp(pz))+@p2) elseif @V=="41" pz=fn3(@p1*pz*log(pz^2)+@p2) elseif @V=="42" pz=fn3(pz+@p1*exp(conj(pz))+@p2) elseif @V=="43" pz=fn3(pz+@p1*flip(sinh(pz))+@p2) elseif @V=="44" pz=fn3(pz-@p1*(pz^3-1)/(3*pz^2)+@p2) elseif @V=="45" pz=fn3(pz+@p1*cabs(tan(pz))+@p2) elseif @V=="46" pz=fn3(pz+@p1*1i*cos(sinh(pz))+@p2) elseif @V=="47" pz=fn3(pz+@p1*1i*cosh(conj(pz))+@p2) elseif @V=="48" pz=fn3(@p1*pz*fn3((@p2+1)-sqrt(pz))) elseif @V=="49" pz=fn3(pz+@p1*1i*cabs(tanh(pz))+@p2) elseif @V=="50" pz=fn3(pz+@p1*1i*flip(cotan(pz))+@p2) elseif @V=="51" pz=fn3(pz+@p1*1i*sqr(sinh(pz))+@p2) elseif @V=="52" pz=fn3((pz-@p1*1i)/(pz+@p1*1i)+@p2) elseif @V=="53" pz=fn3(pz+@p1*1i*cosh(abs(pz))+@p2) elseif @V=="54" pz=fn3(pz+@p1*1i*flip(cos(pz))+@p2) elseif @V=="55" pz=fn3(pz+@p1*1i*abs(sqr(pz))+@p2) elseif @V=="56" pz=fn3(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2) elseif @V=="57" pz=fn3(pz+@p1*1i*flip(recip(pz))+@p2) elseif @V=="58" pz=fn3(pz+@p1*1i*cotan(cosh(pz))+@p2) elseif @V=="59" pz=fn3(pz+@p1*1i*sqr(tan(pz))+@p2) elseif @V=="60" pz=fn3(pz+@p1*1i*sin(cos(pz))+@p2) endif if @Fs2=="sin" pz=sin(pz) elseif @Fs2=="sinh" pz=sinh(pz) elseif @Fs2=="asinh" pz=asinh(pz) elseif @Fs2=="cos" pz=cos(pz) elseif @Fs2=="cosh" pz=cosh(pz) elseif @Fs2=="acosh" pz=acosh(pz) elseif @Fs2=="tan" pz=tan(pz) elseif @Fs2=="tanh" pz=tanh(pz) elseif @Fs2=="atan" pz=atan(pz) elseif @Fs2=="atanh" pz=atanh(pz) elseif @Fs2=="cotan" pz=cotan(pz) elseif @Fs2=="cotanh" pz=cotanh(pz) elseif @Fs2=="sqr" pz=sqr(pz) elseif @Fs2=="sqrt" pz=sqrt(pz) elseif @Fs2=="log" pz=log(pz) elseif @Fs2=="exp" pz=exp(pz) elseif @Fs2=="ident" pz=ident(pz) elseif @Fs2=="recip" pz=recip(pz) elseif @Fs2=="versin" pz=1-cos(pz) elseif @Fs2=="aversin" pz=acos(1-pz) elseif @Fs2=="haversin" pz=(1-cos(pz))/2 elseif @Fs2=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs2=="coversin" pz=1-sin(pz) elseif @Fs2=="acoversin" pz=asin(1-pz) elseif @Fs2=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs2=="vercos" pz=1+cos(pz) elseif @Fs2=="avercos" pz=acos(1+pz) elseif @Fs2=="havercos" pz=(1+cos(pz))/2 elseif @Fs2=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs2=="covercos" pz=1+sin(pz) elseif @Fs2=="acovercos" pz=asin(1+pz) elseif @Fs2=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs2=="acotan" pz=atan(1/(pz)) elseif @Fs2=="acotanh" pz=atanh(1/(pz)) elseif @Fs2=="sec" pz=1/cos(pz) elseif @Fs2=="sech" pz=1/cosh(pz) elseif @Fs2=="asech" pz=acosh(1/pz) elseif @Fs2=="cosec" pz=1/sin(pz) elseif @Fs2=="cosech" pz=1/sinh(pz) elseif @Fs2=="acosec" pz=asin(1/pz) elseif @Fs2=="acosech" pz=asinh(1/pz) elseif @Fs2=="exsec" pz=1/cos(pz)-1 elseif @Fs2=="aexsec" pz= acos(1/(pz+1)) elseif @Fs2=="excosec" pz=1/sin(pz)-1 elseif @Fs2=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs2=="crd" pz=2*sin(pz/2) elseif @Fs2=="gd" pz=asin(tanh(pz)) elseif @Fs2=="agd" pz=asinh(tan(pz)) elseif @Fs2=="sinc" pz=sin(pz)/(pz) elseif @Fs2=="sinhc" pz=sinh(pz)/(pz) elseif @Fs2=="cosc" pz=cos(pz)/(pz) elseif @Fs2=="coshc" pz=cosh(pz)/(pz) elseif @Fs2=="tanc" pz=tan(pz)/(pz) elseif @Fs2=="tanhc" pz=tanh(pz)/(pz) elseif @Fs2=="cotanc" pz=cotan(pz)/(pz) elseif @Fs2=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs2=="secc" pz=1/(pz*cos(pz)) elseif @Fs2=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs2=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs2=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs2=="cube" pz=pz^3 elseif @Fs2=="cuberoot" pz=pz^(1/3) elseif @Fs2=="colog" pz=-log(pz) elseif @Fs2=="logit" pz= log(pz/(1-pz)) elseif @Fs2=="expit" pz=1/(1+exp(-pz)) elseif @Fs2=="gauss" pz=exp(-sqr(pz)) elseif @Fs2=="softplus" pz=log(1+exp(pz)) elseif @Fs2=="primecount" pz=pz/log(pz) elseif @Fs2=="sqr+" pz=sqr(pz)+pz elseif @Fs2=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs2=="sin+" pz=sin(pz)+pz elseif @Fs2=="cos+" pz=cos(pz)+pz elseif @Fs2=="tan+" pz=tan(pz)+pz elseif @Fs2=="cotan+" pz=cotan(pz)+pz elseif @Fs2=="sec+" pz=1/cos(pz)+pz elseif @Fs2=="cosec+" pz=1/sin(pz)+pz elseif @Fs2=="sin*" pz=sin(pz)*pz elseif @Fs2=="cos*" pz=cos(pz)*pz elseif @Fs2=="tan*" pz=tan(pz)*pz elseif @Fs2=="cotan*" pz=cotan(pz)*pz elseif @Fs2=="sec*" pz=pz/cos(pz) elseif @Fs2=="cosec*" pz=pz/sin(pz) elseif @Fs2=="loglog" pz=log(log(pz)) elseif @Fs2=="sinsin" pz=sin(sin(pz)) elseif @Fs2=="coscos" pz=cos(cos(pz)) elseif @Fs2=="+pixel" pz=pz+pixel elseif @Fs2=="-pixel" pz=pz-pixel elseif @Fs2=="*pixel" pz=pz*pixel elseif @Fs2=="/pixel" pz=pz/pixel elseif @Fs2=="third" pz=pz/3 elseif @Fs2=="half" pz=pz/2 elseif @Fs2=="double" pz=pz*2 elseif @Fs2=="triple" pz=pz*3 elseif @Fs2=="ceil" pz=ceil(pz) elseif @Fs2=="floor" pz=floor(pz) elseif @Fs2=="trunc" pz=trunc(pz) else pz=round(pz) endif float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) if @solid if @invert if (atan(c)+1)*0.5<@p7 index=(atan(c)+1)*0.5 else m_Solid=true endif else if (atan(c)+1)*0.5>@p7 index=(atan(c)+1)*0.5 else m_Solid=true endif endif else index=(atan(c)+1)*0.5 endif return index endfunc private: float c float index default: title="Broubly" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param @p2 caption="Variant Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param adj caption="Adjustment" default=1.5 endparam param Fs caption="Z Function" enum="asinh""acosh""atan"\ "sqr""sqrt""log""abs""cabs""conj"\ "flip""ident""recip""avercos"\ "asec""asech""acosec""acosech""aexsec"\ "aexcosec""crd""gd""cosc""coshc"\ "cube""colog""logit""softplus"\ "sqr+""cube+"\ "+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple" default=10 endparam param Fs2 caption="Loop Function" enum="sin""sinh""asinh""cos""cosh""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp"\ "ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""third""half""double""triple"\ "ceil""floor""trunc""round" default=16 endparam func fn3 caption="Variant Function" default=ident() endfunc param @solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.55 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Tontinibla(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=1.0 c=0.0 d=0.0 f=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @v==0 pz=pz^(10*@pow) elseif @v==1 pz=exp(pz)^(10*@pow) elseif @v==2 pz=sqrt(pz)^(10*@pow) elseif @v==3 pz=sqr(pz)^(10*@pow) elseif @v==4 pz=atan(pz)^(10*@pow) elseif @v==5 pz=tanh(pz)^(10*@pow) elseif @v==6 pz=cos(pz)^(10*@pow) elseif @v==7 pz=asinh(pz)^(10*@pow) elseif @v==8 pz=recip(pz)^(10*@pow) elseif @v==9 pz=trunc(pz)^(10*@pow) elseif @v==10 pz=round(pz)^(10*@pow) elseif @v==11 pz=atan(pz+pz^2)^(10*@pow) elseif @v==12 pz=tanh(pz+pz^2)^(10*@pow) elseif @v==13 pz=tan(pz+pz^2)^(10*@pow) elseif @v==14 pz=cos(pz+pz^2)^(10*@pow) elseif @v==15 pz=asin(pz+pz^2)^(10*@pow) elseif @v==16 pz=sin(pz+pz^2)^(10*@pow) elseif @v==17 pz=trunc(pz+pz^2)^(10*@pow) elseif @v==18 pz=round(pz+pz^2)^(10*@pow) elseif @v==19 pz=cotanh(pz+1/pz)^(10*@pow) elseif @v==20 pz=cotan(pz+1/pz)^(10*@pow) elseif @v==21 pz=atan(pz+1/pz)^(10*@pow) elseif @v==22 pz=tanh(pz+1/pz)^(10*@pow) elseif @v==23 pz=cos(pz+1/pz)^(10*@pow) elseif @v==24 pz=sin(pz+1/pz)^(10*@pow) elseif @v==25 pz=recip(pz+1/pz)^(10*@pow) elseif @v==26 pz=exp(pz-pz^2)^(10*@pow) elseif @v==27 pz=exp(pz-1/pz)^(10*@pow) elseif @v==28 pz=atanh(pz-1/pz)^(10*@pow) elseif @v==29 pz=tan(pz-1/pz)^(10*@pow) elseif @v==30 pz=cosh(pz-1/pz)^(10*@pow) elseif @v==31 pz=sinh(pz-1/pz)^(10*@pow) elseif @v==32 pz=(exp(pz)*tan(pz))^(10*@pow) elseif @v==33 pz=(tanh(pz)*recip(pz))^(10*@pow) elseif @v==34 pz=(cosh(pz)*cos(pz))^(10*@pow) elseif @v==35 pz=(cos(pz)*ceil(pz))^(10*@pow) elseif @v==36 pz=(cos(pz)*round(pz))^(10*@pow) else pz=(sinh(pz)*recip(pz))^(10*@pow) endif pz=pz+@p1*100 float g=cabs(pz) float h=g if g<0 h=-g endif b=b/((h/128)^2+1.0) float m=0.25*f c=c+cos(m)*b d=d+sin(m)*b f=f+10*@p2 endfunc float func ResultIndex(complex pz) float n=cabs(c+1i*d)+@p3 if @solid if @invert if n/(2.0*@p3)>@p7 index=n/(2.0*@p3) else m_Solid=true endif else if n/(2.0*@p3)<@p7 index=n/(2.0*@p3) else m_Solid=true endif endif else index=n/(2.0*@p3) endif return index endfunc private: float b float c float d float f float index default: title="Tontinibla" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param p1 default=(0,0) endparam param p2 caption="Parameter 2" default=0.01 endparam param p3 caption="Parameter 3" default=3.142 endparam param pow caption="Exponent" default=(2,0) endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=1.725 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=cabs(ppixel) d=1/log(@adj1) f=0.0 g=log(log(@adj2*100000000)/2.0) h=0.0 k=0.0 m=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=a pz=@p1*fn1(pz)+@p2 x=real(pz) y=imag(pz) if @v=="Astroid" h=cabs(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @v=="Atriphthaloid" h=cabs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @v=="Cardioid" h=cabs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @v=="Cissoid of Diocles" h=cabs(y^2-x^3/(2*@a-x)) elseif @v=="Cissoid of Diocles 2" h=cabs(y^2*(2*@a-x)-x^8) elseif @v=="Cissoid of Zahradnik" h=cabs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @v=="Clinoid" h=cabs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @v=="Cochleoid" h=cabs((x^2+y^2)*atan(y/x)-@a*y) elseif @v=="Conchoid of a Circle" h=cabs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @v=="Conchoid of Nicomedes" h=cabs((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @v=="Conchoid of de Sluze" h=cabs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @v=="Cornoid" h=cabs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @v=="Cornoid 2" h=cabs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @v=="Coscoid" h=cabs(y-@a*cos(x)/x) elseif @v=="Cosecantoid" h=cabs(y-@a/sin(x/@a2)) elseif @v=="Cosinusoid" h=cabs(y-@a*cos(x/@a2)) elseif @v=="Cotangentoid" h=cabs(y-@a*cotan(x/@a2)) elseif @v=="Cycloid" h=cabs(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y))) elseif @v=="Deltoid" h=cabs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @v=="Deltoid 2" h=cabs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @v=="Durer's Conchoid" h=cabs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @v=="Durer's Conchoid 2" h=cabs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @v=="Focal Conic Conchoid" h=cabs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @v=="Hyperbolic Cosecantoid" h=cabs(y-@a/sinh(x/@a2)) elseif @v=="Hyperbolic Cosinusoid" h=cabs(y-@a*cosh(x/@a2)) elseif @v=="Hyperbolic Cotangentoid" h=cabs(y-@a*cotanh(x/@a2)) elseif @v=="Hyperbolic Secantoid" h=cabs(y-@a/cosh(x/@a2)) elseif @v=="Hyperbolic Sinusoid" h=cabs(y-@a*sinh(x/@a2)) elseif @v=="Hyperbolic Tangentoid" h=cabs(y-tanh(@a*x)) elseif @v=="Inverse Nephroid" h=cabs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @v=="Kieroid" h=cabs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @v=="Logarithmic Sinusoid" h=cabs(y-log(sqrt(1-x^2))) elseif @v=="Nephroid" h=cabs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @v=="Nephroid of Freeth" h=cabs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @v=="Oblique Cissoid" h=cabs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @v=="Oblique Strophoid" h=cabs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @v=="Right Strophoid" h=cabs(y^2-x^2*(@a-x)/(@a+x)) elseif @v=="Scyphoid" h=cabs(x^4-y^4-4*@a*x*y^2) elseif @v=="Secantoid" h=cabs(y-@a/cos(x/@a2)) elseif @v=="Seccoid" h=cabs(y-@a2/(x*cos(x))) elseif @v=="Sincoid" h=cabs(y-@a*sin(x)/x) elseif @v=="Sinusoid" h=cabs(y-@a*sin(x/@a2)) elseif @v=="Tancoid" h=cabs(y-@a*tan(x)/x) elseif @v=="Tangentoid" h=cabs(y-@a*tan(x/@a2)) endif if !m k=abs(h-c) a=a+(h-k)/(h+c-k) else m=false endif endfunc float func ResultIndex(complex pz) a=a/(m_Iterations) b=b/(m_Iterations-1) f=d*g-d*log(log(cabs(h))) if @solid if @invert if b+(a-b)*(f+1)<@p7 index=b+(a-b)*(f+1) else m_Solid=true endif else if b+(a-b)*(f+1)>@p7 index=b+(a-b)*(f+1) else m_Solid=true endif endif else index=b+(a-b)*(f+1) endif return index endfunc private: float a float b float c float d float f float g float h float k bool m float index default: title="Oidery" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(1,0) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=20.0 endparam param adj2 caption="Adjustment 2" default=0.0000001 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.35 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery2(common.ulb:GradientColoring) { public: float func ResultIndex(complex pz) pz=@p1*fn1(pz)+@p2 float x=real(pz) float y=imag(pz) if @v=="Astroid" float a=atan2(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @v=="Atriphthaloid" float a=atan2(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @v=="Cardioid" float a=atan2((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @v=="Cissoid of Diocles" float a=atan2(y^2-x^3/(2*@a-x)) elseif @v=="Cissoid of Diocles 2" float a=atan2(y^2*(2*@a-x)-x^8) elseif @v=="Cissoid of Zahradnik" float a=atan2(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @v=="Clinoid" float a=atan2(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @v=="Cochleoid" float a=atan2((x^2+y^2)*atan(y/x)-@a*y) elseif @v=="Conchoid of a Circle" float a=atan2((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @v=="Conchoid of Nicomedes" float a=atan2((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @v=="Conchoid of de Sluze" float a=atan2(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @v=="Cornoid" float a=atan2((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @v=="Cornoid 2" float a=atan2(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @v=="Coscoid" float a=atan2(y-@a*cos(x)/x) elseif @v=="Cosecantoid" float a=atan2(y-@a/sin(x/@a2)) elseif @v=="Cosinusoid" float a=atan2(y-@a*cos(x/@a2)) elseif @v=="Cotangentoid" float a=atan2(y-@a*cotan(x/@a2)) elseif @v=="Cycloid" float a=atan2(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y))) elseif @v=="Deltoid" float a=atan2((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @v=="Deltoid 2" float a=atan2((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @v=="Durer's Conchoid" float a=atan2((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @v=="Durer's Conchoid 2" float a=atan2(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @v=="Focal Conic Conchoid" float a=atan2((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @v=="Hyperbolic Cosecantoid" float a=atan2(y-@a/sinh(x/@a2)) elseif @v=="Hyperbolic Cosinusoid" float a=atan2(y-@a*cosh(x/@a2)) elseif @v=="Hyperbolic Cotangentoid" float a=atan2(y-@a*cotanh(x/@a2)) elseif @v=="Hyperbolic Secantoid" float a=atan2(y-@a/cosh(x/@a2)) elseif @v=="Hyperbolic Sinusoid" float a=atan2(y-@a*sinh(x/@a2)) elseif @v=="Hyperbolic Tangentoid" float a=atan2(y-tanh(@a*x)) elseif @v=="Inverse Nephroid" float a=atan2((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @v=="Kieroid" float a=atan2(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @v=="Logarithmic Sinusoid" float a=atan2(y-log(sqrt(1-x^2))) elseif @v=="Nephroid" float a=atan2((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @v=="Nephroid of Freeth" float a=atan2((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @v=="Oblique Cissoid" float a=atan2((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @v=="Oblique Strophoid" float a=atan2(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @v=="Right Strophoid" float a=atan2(y^2-x^2*(@a-x)/(@a+x)) elseif @v=="Scyphoid" float a=atan2(x^4-y^4-4*@a*x*y^2) elseif @v=="Secantoid" float a=atan2(y-@a/cos(x/@a2)) elseif @v=="Seccoid" float a=atan2(y-@a2/(x*cos(x))) elseif @v=="Sincoid" float a=atan2(y-@a*sin(x)/x) elseif @v=="Sinusoid" float a=atan2(y-@a*sin(x/@a2)) elseif @v=="Tancoid" float a=atan2(y-@a*tan(x)/x) else float a=atan2(y-@a*tan(x/@a2)) endif if @solid if @invert if 0.01*m_Iterations+(a+pi)/(2*pi)<@p7 index=0.01*m_Iterations+(a+pi)/(2*pi) else m_Solid=true endif else if 0.01*m_Iterations+(a+pi)/(2*pi)>@p7 index=0.01*m_Iterations+(a+pi)/(2*pi) else m_Solid=true endif endif else index=0.01*m_Iterations+(a+pi)/(2*pi) endif return index endfunc private: float index default: title="Oidery 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(0.5,0.5) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.6 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_LegendrePolynomialTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=@adj3/10 b=20*@adj4 c=(b-1)/@adj1 d=0.0 i=0 f=254.0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="3" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="5" if |pz|>1 pz=pz/|pz| endif elseif @Va=="6" pz=pz-1/pz elseif @Va=="7" pz=pz-pz^2 elseif @Va=="8" pz=pz+pz^2 elseif @Va=="9" pz=pz^2*(pz-2)/(1-2*pz) elseif @Va=="10" pz=(pz-1i)/(pz+1i) elseif @Va=="11" pz=pz-(pz^3-1)/(3*pz^2) elseif @Va=="12" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) pz=pz+trunc(pz) elseif @Va=="13" pz=pz^2*(pz^3-1)/(3*pz^2) elseif @Va=="14" pz=real(pz)-imag(pz)*cotan(imag(pz)) elseif @Va=="15" pz=cos(2*real(pz)+flip(2*imag(pz))) elseif @Va=="16" pz=(real(pz)^2-imag(pz)^2)*(real(pz)^2+imag(pz)^2)^2-2*real(pz)*imag(pz)*(real(pz)-1) else pz=-sin(imag(pz))*3+flip(sin(-2*real(pz))) endif if @v=="2" pz=fn2((3*pz^2-1)/2) elseif @v=="3" pz=fn2((5*pz^3-3*pz)/2) elseif @v=="4" pz=fn2((35*pz^4-30*pz^2+3)/8) elseif @v=="5" pz=fn2((63*pz^5-70*pz^3+15*pz)/8) elseif @v=="6" pz=fn2((231*pz^6-315*pz^4+105*pz^2-5)/16) elseif @v=="7" pz=fn2((429*pz^7-693*pz^5+315*pz^3-35*pz)/16) elseif @v=="8" pz=fn2((6435*pz^8-12012*pz^6+6930*pz^4-1260*pz^2+35)/128) elseif @v=="9" pz=fn2((12155*pz^9-25740*pz^7+18018*pz^5-4620*pz^3+315*pz)/128) elseif @v=="10" pz=fn2((46189*pz^10-109395*pz^8+90090*pz^6-30030*pz^4+3465*pz^2-63)/256) endif float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) if !g && (k<@adj1) && (i>=@adj2) g=true d=i%a f=c*k+d*b endif i=i+1 endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if ((real(f)+1)%256)/256>@p7 index=((real(f)+1)%256)/256 else m_Solid=true endif else if ((real(f)+1)%256)/256<@p7 index=((real(f)+1)%256)/256 else m_Solid=true endif endif else index=((real(f)+1)%256)/256 endif return index endfunc private: float a float b float c float d int i float f bool g float index default: title="Legendre Polynomial Traps" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17" default=0 endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8""9""10" default=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=0 endparam param adj3 caption="Adjustment 3" default=20.0 endparam param adj4 caption="Adjustment 4" default=6.25 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.8 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Oidery3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) a=a+0.02 b=b+0.01 pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" pz=pz+cos(pz) elseif @Va=="5" pz=pz-1/exp(pz) elseif @Va=="6" pz=pz+cosh(pz) elseif @Va=="7" if |pz|<1 pz=pz/|pz| endif elseif @Va=="8" if |pz|>1 pz=pz/|pz| endif elseif @Va=="9" pz=pz+0.3*cotanh(pz) elseif @Va=="10" pz=pz+cotan(pz) elseif @Va=="11" pz=pz+0.3*cosh(pz) elseif @Va=="12" pz=pz-1/pz elseif @Va=="13" pz=pz-0.3/exp(pz) elseif @Va=="14" pz=pz-1/log(pz) elseif @Va=="15" pz=pz+0.3*cos(pz) elseif @Va=="16" pz=pz-0.3/sqrt(pz) elseif @Va=="17" pz=pz-1/sqrt(pz) elseif @Va=="18" pz=pz-0.3/sqr(pz) elseif @Va=="19" pz=pz-1/cos(pz) elseif @Va=="20" pz=pz-0.3/log(pz) elseif @Va=="21" pz=pz-0.3/pz elseif @Va=="22" pz=pz+cotanh(pz) elseif @Va=="23" pz=pz+sqrt(pz) elseif @Va=="24" pz=pz+log(pz) elseif @Va=="25" pz=pz-1/sqr(pz) elseif @Va=="26" pz=pz-0.3/cos(pz) elseif @Va=="27" pz=pz+0.3*sqr(pz) elseif @Va=="28" pz=pz+0.3*log(pz) elseif @Va=="29" pz=pz+sqr(pz) elseif @Va=="30" pz=pz+exp(pz) elseif @Va=="31" pz=pz-0.3*cotanh(pz) elseif @Va=="32" pz=pz-cosh(pz) elseif @Va=="33" pz=pz-cos(pz) elseif @Va=="34" pz=pz+1/pz elseif @Va=="35" pz=pz+1/exp(pz) elseif @Va=="36" pz=pz+1/log(pz) elseif @Va=="37" pz=pz-0.3*sqr(pz) elseif @Va=="38" pz=pz-sqrt(pz) elseif @Va=="39" pz=pz-log(pz) elseif @Va=="40" pz=pz-exp(pz) elseif @Va=="41" pz=pz-0.3*log(pz) elseif @Va=="42" pz=pz-sqr(pz) elseif @Va=="43" pz=pz-cotanh(pz) elseif @Va=="44" pz=pz-cotan(pz) elseif @Va=="45" pz=pz-0.3*cosh(pz) elseif @Va=="46" pz=pz-0.3*cos(pz) elseif @Va=="47" pz=pz+0.3/exp(pz) elseif @Va=="48" pz=pz+0.3/log(pz) elseif @Va=="49" pz=pz+1/sqrt(pz) elseif @Va=="50" pz=pz+0.3/sqrt(pz) elseif @Va=="51" pz=pz+1/sqr(pz) elseif @Va=="52" pz=pz+0.3/sqr(pz) elseif @Va=="53" pz=pz+1/cos(pz) elseif @Va=="54" pz=pz+0.3/cos(pz) elseif @Va=="55" if |pz|<1 pz=pz/|pz| endif pz=-cos(pz) elseif @Va=="56" if |pz|<1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="57" if |pz|<1 pz=pz/|pz| endif pz=cosh(pz) elseif @Va=="58" if |pz|<1 pz=pz/|pz| endif pz=sin(pz) endif x=real(pz) y=imag(pz) if @v=="Astroid" pz=@p3*log(x^(2/3)+y^(2/3)-@a^(2/3))+@p4 elseif @v=="Atriphthaloid" pz=@p3*log(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2)+@p4 elseif @v=="Cardioid" pz=@p3*log((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2))+@p4 elseif @v=="Cissoid of Diocles" pz=@p3*log(y^2-x^3/(2*@a-x))+@p4 elseif @v=="Cissoid of Diocles 2" pz=@p3*log(y^2*(2*@a-x)-x^8)+@p4 elseif @v=="Cissoid of zahradnik" pz=@p3*log(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y)+@p4 elseif @v=="Clinoid" pz=@p3*log(y-@a2*e^(x/@a)-@a3*e^(-x/@a))+@p4 elseif @v=="Cochleoid" pz=@p3*log((x^2+y^2)*atan(y/x)-@a*y)+@p4 elseif @v=="Conchoid of a Circle" pz=@p3*log((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2)+@p4 elseif @v=="Conchoid of Nicomedes" pz=@p3*log((x-@a2)^2*(x^2+y^2)-@a^2*x^2)+@p4 elseif @v=="Conchoid of de Sluze" pz=@p3*log(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2)+@p4 elseif @v=="Cornoid" pz=@p3*log((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6)+@p4 elseif @v=="Cornoid 2" pz=@p3*log(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4)+@p4 elseif @v=="Coscoid" pz=@p3*log(y-@a*cos(x)/x)+@p4 elseif @v=="Cosecantoid" pz=@p3*log(y-@a/sin(x/@a2))+@p4 elseif @v=="Cosinusoid" pz=@p3*log(y-@a*cos(x/@a2))+@p4 elseif @v=="Cotangentoid" pz=@p3*log(y-@a*cotan(x/@a2))+@p4 elseif @v=="Cycloid" pz=@p3*log(x-@a*recip(cos(1-y/@a))+sqrt(y*(2^@a-y)))+@p4 elseif @v=="Deltoid" pz=@p3*log((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3)+@p4 elseif @v=="Deltoid 2" pz=@p3*log((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2))+@p4 elseif @v=="Durer's Conchoid" pz=@p3*log((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2)+@p4 elseif @v=="Durer's Conchoid 2" pz=@p3*log(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2))+@p4 elseif @v=="Focal Conic Conchoid" pz=@p3*log((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2)+@p4 elseif @v=="Hyperbolic Cosecantoid" pz=@p3*log(y-@a/sinh(x/@a2))+@p4 elseif @v=="Hyperbolic Cosinusoid" pz=@p3*log(y-@a*cosh(x/@a2))+@p4 elseif @v=="Hyperbolic Cotangentoid" pz=@p3*log(y-@a*cotanh(x/@a2))+@p4 elseif @v=="Hyperbolic Secantoid" pz=@p3*log(y-@a/cosh(x/@a2))+@p4 elseif @v=="Hyperbolic Sinusoid" pz=@p3*log(y-@a*sinh(x/@a2))+@p4 elseif @v=="Hyperbolic Tangentoid" pz=@p3*log(y-tanh(@a*x))+@p4 elseif @v=="Inverse Nephroid" pz=@p3*log((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2))+@p4 elseif @v=="Kieroid" pz=@p3*log(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2)+@p4 elseif @v=="Logarithmic Sinusoid" pz=@p3*log(y-log(sqrt(1-x^2)))+@p4 elseif @v=="Nephroid" pz=@p3*log((x^2+y^2-4*@a^2)^3-108*@a^4*x^2)+@p4 elseif @v=="Nephroid of Freeth" pz=@p3*log((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2)+@p4 elseif @v=="Oblique Cissoid" pz=@p3*log((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2)+@p4 elseif @v=="Oblique Strophoid" pz=@p3*log(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y)+@p4 elseif @v=="Right Strophoid" pz=@p3*log(y^2-x^2*(@a-x)/(@a+x))+@p4 elseif @v=="Scyphoid" pz=@p3*log(x^4-y^4-4*@a*x*y^2)+@p4 elseif @v=="Secantoid" pz=@p3*log(y-@a/cos(x/@a2))+@p4 elseif @v=="Seccoid" pz=@p3*log(y-@a2/(x*cos(x)))+@p4 elseif @v=="Sincoid" pz=@p3*log(y-@a*sin(x)/x)+@p4 elseif @v=="Sinusoid" pz=@p3*log(y-@a*sin(x/@a2))+@p4 elseif @v=="Tancoid" pz=@p3*log(y-@a*tan(x)/x)+@p4 else pz=@p3*log(y-@a*tan(x/@a2))+@p4 endif c=c+real(atanh(|pz|*a))*@adj/b endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if (c%1000)/1000<@p7 index=(c%1000)/1000 else m_Solid=true endif else if (c%1000)/1000>@p7 index=(c%1000)/1000 else m_Solid=true endif endif else index=(c%1000)/1000 endif return index endfunc private: float a float b float c float index default: title="Oidery 3" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58" endparam param V caption="Curve" enum="Astroid""Atriphthaloid""Cardioid""Cissoid of Diocles""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clinoid""Cochleoid""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Cornoid""Cornoid 2""Coscoid"\ "Cosecantoid""Cosinusoid""Cotangentoid""Cycloid""Deltoid""Deltoid 2""Durer's Conchoid"\ "Durer's Conchoid 2""Focal Conic Conchoid""Hyperbolic Cosecantoid"\ "Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Secantoid"\ "Hyperbolic Sinusoid""Hyperbolic Tangentoid""Inverse Nephroid""Kieroid"\ "Logarithmic Sinusoid""Nephroid""Nephroid of Freeth""Oblique Cissoid"\ "Oblique Strophoid""Right Strophoid""Scyphoid""Secantoid""Seccoid""Sincoid"\ "Sinusoid""Tancoid""Tangentoid" endparam param a caption="Oidparam 1" default=(1,0) visible=@v!="Cornoid 2" && @v!="Logarithmic Sinusoid" endparam param a2 caption="Oidparam 2" default=(1,0) visible=@v=="Conchoid of de Sluze" || @v=="Oblique Strophoid" || @v=="Oblique Cissoid" \ || @v=="Cissoid of Zahradnik" || @v=="Conchoid of Nicomedes" || @v=="Durer's Conchoid" \ || @v=="Durer's Conchoid 2" || @v=="Sinusoid" || @v=="Atriphthaloid" \ || @v=="Clinoid" || @v=="Kieroid" || @v=="Tangentoid" || @v=="Secantoid" \ || @v=="Hyperbolic Secantoid" || @v=="Cotangentoid" || @v=="Cosinusoid" \ || @v=="Hyperbolic Cosinusoid" || @v=="Cosecantoid" || @v=="Hyperbolic Cosecantoid" \ || @v=="Hyperbolic Sinusoid" || @v=="Hyperbolic Cotangentoid" || @v=="Focal Conic Conchoid" \ || @v=="Conchoid of a Circle" endparam param a3 caption="Oidparam 3" default=(1,0) visible=@v=="Cissoid of Zahradnik" || @v=="Clinoid" || @v=="Kieroid" \ || @v=="Conchoid of a Circle" endparam param a4 caption="Oidparam 4" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param a5 caption="Oidparam 5" default=(1,0) visible=@v=="Cissoid of Zahradnik" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param p3 caption="Log Curve Parameter 1" default=1.0 endparam param p4 caption="Log Curve Parameter 2" default=0.0 endparam param adj caption="Adjustment" default=2.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.075 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Suvercuys(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 if @Fs=="sin" z=sin(pz) elseif @Fs=="sinh" z=sinh(pz) elseif @Fs=="asin" z=asin(pz) elseif @Fs=="asinh" z=asinh(pz) elseif @Fs=="cos" z=cos(pz) elseif @Fs=="cosh" z=cosh(pz) elseif @Fs=="acos" z=acos(pz) elseif @Fs=="acosh" z=acosh(pz) elseif @Fs=="tan" z=tan(pz) elseif @Fs=="tanh" z=tanh(pz) elseif @Fs=="atan" z=atan(pz) elseif @Fs=="atanh" z=atanh(pz) elseif @Fs=="cotan" z=cotan(pz) elseif @Fs=="cotanh" z=cotanh(pz) elseif @Fs=="sqr" z=sqr(pz) elseif @Fs=="sqrt" z=sqrt(pz) elseif @Fs=="log" z=log(pz) elseif @Fs=="exp" z=exp(pz) elseif @Fs=="abs" z=abs(pz) elseif @Fs=="cabs" z=cabs(pz) elseif @Fs=="conj" z=conj(pz) elseif @Fs=="flip" z=flip(pz) elseif @Fs=="ident" z=ident(pz) elseif @Fs=="recip" z=recip(pz) elseif @Fs=="versin" z=1-cos(pz) elseif @Fs=="aversin" z=acos(1-pz) elseif @Fs=="haversin" z=(1-cos(pz))/2 elseif @Fs=="ahaversin" z=2*asin(sqrt(pz)) elseif @Fs=="coversin" z=1-sin(pz) elseif @Fs=="acoversin" z=asin(1-pz) elseif @Fs=="hacoversin" z=(1-sin(pz))/2 elseif @Fs=="vercos" z=1+cos(pz) elseif @Fs=="avercos" z=acos(1+pz) elseif @Fs=="havercos" z=(1+cos(pz))/2 elseif @Fs=="ahavercos" z=2*acos(sqrt(pz)) elseif @Fs=="covercos" z=1+sin(pz) elseif @Fs=="acovercos" z=asin(1+pz) elseif @Fs=="hacovercos" z=(1+sin(pz))/2 elseif @Fs=="acotan" z=atan(1/(pz)) elseif @Fs=="acotanh" z=atanh(1/(pz)) elseif @Fs=="sec" z=1/cos(pz) elseif @Fs=="sech" z=1/cosh(pz) elseif @Fs=="asec" z=acos(1/pz) elseif @Fs=="asech" z=acosh(1/pz) elseif @Fs=="cosec" z=1/sin(pz) elseif @Fs=="cosech" z=1/sinh(pz) elseif @Fs=="acosec" z=asin(1/pz) elseif @Fs=="acosech" z=asinh(1/pz) elseif @Fs=="exsec" z=1/cos(pz)-1 elseif @Fs=="aexsec" z= acos(1/(pz+1)) elseif @Fs=="excosec" z=1/sin(pz)-1 elseif @Fs=="aexcosec" z=asin(1/(pz+1)) elseif @Fs=="crd" z=2*sin(pz/2) elseif @Fs=="acrd" z=2*asin(pz/2) elseif @Fs=="gd" z=asin(tanh(pz)) elseif @Fs=="agd" z=asinh(tan(pz)) elseif @Fs=="sinc" z=sin(pz)/(pz) elseif @Fs=="sinhc" z=sinh(pz)/(pz) elseif @Fs=="cosc" z=cos(pz)/(pz) elseif @Fs=="coshc" z=cosh(pz)/(pz) elseif @Fs=="tanc" z=tan(pz)/(pz) elseif @Fs=="tanhc" z=tanh(pz)/(pz) elseif @Fs=="cotanc" z=cotan(pz)/(pz) elseif @Fs=="cotanhc" z=cotanh(pz)/(pz) elseif @Fs=="secc" z=1/(pz*cos(pz)) elseif @Fs=="sechc" z=1/(pz*cosh(pz)) elseif @Fs=="cosecc" z= 1/(pz*sin(pz)) elseif @Fs=="cosechc" z=1/(pz*sinh(pz)) elseif @Fs=="cube" z=pz^3 elseif @Fs=="cuberoot" z=pz^(1/3) elseif @Fs=="colog" z=-log(pz) elseif @Fs=="logit" z= log(pz/(1-pz)) elseif @Fs=="expit" z=1/(1+exp(-pz)) elseif @Fs=="gauss" z=exp(-sqr(pz)) elseif @Fs=="softplus" z=log(1+exp(pz)) elseif @Fs=="primecount" z=pz/log(pz) elseif @Fs=="sqr+" z=sqr(pz)+pz elseif @Fs=="cube+" z=pz^3+sqr(pz)+pz elseif @Fs=="sin+" z=sin(pz)+pz elseif @Fs=="cos+" z=cos(pz)+pz elseif @Fs=="tan+" z=tan(pz)+pz elseif @Fs=="cotan+" z=cotan(pz)+pz elseif @Fs=="sec+" z=1/cos(pz)+pz elseif @Fs=="cosec+" z=1/sin(pz)+pz elseif @Fs=="sin*" z=sin(pz)*pz elseif @Fs=="cos*" z=cos(pz)*pz elseif @Fs=="tan*" z=tan(pz)*pz elseif @Fs=="cotan*" z=cotan(pz)*pz elseif @Fs=="sec*" z=pz/cos(pz) elseif @Fs=="cosec*" z=pz/sin(pz) elseif @Fs=="loglog" z=log(log(pz)) elseif @Fs=="sinsin" z=sin(sin(pz)) elseif @Fs=="coscos" z=cos(cos(pz)) elseif @Fs=="+pixel" z=pz+pixel elseif @Fs=="-pixel" z=pz-pixel elseif @Fs=="*pixel" z=pz*pixel elseif @Fs=="/pixel" z=pz/pixel elseif @Fs=="ceil" z=ceil(pz) elseif @Fs=="floor" z=floor(pz) elseif @Fs=="trunc" z=trunc(pz) else z=round(pz) endif x=real(fn2(fn3(z))) y=imag(fn2(fn3(z))) if @trap=="Alain Curve" d=cabs((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2+@p1) elseif @trap=="Ampersand Curve" d=cabs((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2+@p1) elseif @trap=="Arcs of Samothrace" d=cabs(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)+@p1) elseif @trap=="Astroid" d=cabs(x^(2/3)+y^(2/3)-@a^(2/3)+@p1) elseif @trap=="Atriphthaloid" d=cabs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2+@p1) elseif @trap=="Bean Curve" d=cabs((x^2+y^2)^2-x^3-y^3+@p1) elseif @trap=="Bean Curve 2" d=cabs(x^4+x^2*y^2+y^4-x*(x^2+y^2)+@p1) elseif @trap=="Beetle" d=cabs((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2+@p1) elseif @trap=="Biaxial Eight Reverse" d=cabs(@a^2*y^2-x^2*(y^2-x^2)+@p1) elseif @trap=="Bicorn" d=cabs(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2+@p1) elseif @trap=="Bicuspid" d=cabs((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2+@p1) elseif @trap=="Biquartic" d=cabs(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)+@p1) elseif @trap=="Blade's Cubic" d=cabs(x^3+y^3-@a^3+@p1) elseif @trap=="Bolza" d=cabs(y^2-x^5+x+@p1) elseif @trap=="Bow Curve" d=cabs(x^4-(@a+1)*x^2*y+y^3+@p1) elseif @trap=="Bullet-Nose Curve" d=cabs((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2+@p1) elseif @trap=="Butterfly Curve" d=cabs(x^6+y^6-x^2+@p1) elseif @trap=="Butterfly Knot" d=cabs((x^2+y^2)*x^4-(x^2-y^2)^2+@p1) elseif @trap=="Cardioid" d=cabs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)+@p1) elseif @trap=="Cartesian Oval" d=cabs((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4+@p1) elseif @trap=="Cassinian Ovals" d=cabs((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4+@p1) elseif @trap=="Catenary" d=cabs(y-@a*cosh(x/@a)+@p1) elseif @trap=="Cayley's Sextic" d=cabs(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2+@p1) elseif @trap=="Cayley's Sextic 2" d=cabs(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)+@p1) elseif @trap=="Ceva's Trisectrix" d=cabs((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2+@p1) elseif @trap=="Chasles Cubic" d=cabs(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3+@p1) elseif @trap=="Circle" d=cabs(x^2+y^2-@a^2+@p1) elseif @trap=="Circular Cubic" d=cabs(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5+@p1) elseif @trap=="Cissoid of Diocles" d=cabs(y^2-x^3/(2*@a-x)+@p1) elseif @trap=="Cissoid of Diocles 2" d=cabs(y^2*(2*@a-x)-x^8+@p1) elseif @trap=="Cissoid of Zahradnik" d=cabs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y+@p1) elseif @trap=="Clairaut Curve" d=cabs((x^2+y^2)^((@a2+1)/2)-@a*y^@a2+@p1) elseif @trap=="Clinoid" d=cabs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)+@p1) elseif @trap=="Cochleoid" d=cabs((x^2+y^2)*atan(y/x)-@a*y+@p1) elseif @trap=="Conchoid of a Circle" d=cabs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2+@p1) elseif @trap=="Conchoid of Nicomedes" d=cabs((x-@a2)^2*(x^2+y^2)-@a^2*x^2+@p1) elseif @trap=="Conchoid of de Sluze" d=cabs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2+@p1) elseif @trap=="Conic Sections" d=cabs(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2+@p1) elseif @trap=="Cornoid" d=cabs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6+@p1) elseif @trap=="Cornoid 2" d=cabs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4+@p1) elseif @trap=="Coscoid" d=cabs(y-@a*cos(x)/x+@p1) elseif @trap=="Cosecantoid" d=cabs(y-@a/sin(x/@a2)+@p1) elseif @trap=="Cosinusoid" d=cabs(y-@a*cos(x/@a2)+@p1) elseif @trap=="Cotangentoid" d=cabs(y-@a*cotan(x/@a2)+@p1) elseif @trap=="Cross Curve" d=cabs(@a^2*y^2+@a2^2*x^2-x^2*y^2+@p1) elseif @trap=="Cubic Joint" d=cabs(y^2*x-@a*y^2-@a2*x^2+@p1) elseif @trap=="Cubic of Apollonius" d=cabs((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))+@p1) elseif @trap=="Curve of Cramer" d=cabs(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2+@p1) elseif @trap=="Curve of Jefabek" d=cabs((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2+@p1) elseif @trap=="Curve of Loriga" d=cabs(3*x^2-y^2-@a^2+@p1) elseif @trap=="Curve of Rosillo" d=cabs(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)+@p1) elseif @trap=="Deltoid" d=cabs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3+@p1) elseif @trap=="Deltoid 2" d=cabs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)+@p1) elseif @trap=="Devil's Curve" d=cabs(y^4-x^4+@a*y^2+@a2*x^2+@p1) elseif @trap=="Devil's Curve 2" d=cabs(y^4-x^4-@a^2*y^2+@a2^2*x^2+@p1) elseif @trap=="Dipole Curve" d=cabs((x^2+y^2)^3-@a^4*x^2+@p1) elseif @trap=="Double Egg" d=cabs((x^2+y^2)^3-@a^2*x^4+@p1) elseif @trap=="Double Egg 2" d=cabs(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2+@p1) elseif @trap=="Double Folium" d=cabs((x^2+y^2)^2-4*@a*x*y^2+@p1) elseif @trap=="Double U" d=cabs(y^2*(@a^2-x^2)-@a^4+@p1) elseif @trap=="Dumbbell Curve" d=cabs(@a2^4*y^2-x^4*(@a^2-x^2)+@p1) elseif @trap=="Duplicatrix Cubic" d=cabs(@a*y^2-x^2*(x-@a)+@p1) elseif @trap=="Durer's Conchoid" d=cabs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2+@p1) elseif @trap=="Durer's Conchoid 2" d=cabs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)+@p1) elseif @trap=="Dwulistne" d=cabs((x^2+y^2)^2-(@a*x+@a2*y)*x^2+@p1) elseif @trap=="Egg of Columbus" d=cabs(y^4+10*y^2*x^2+5*x^4-y+@p1) elseif @trap=="Egg of Granville" d=cabs(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)+@p1) elseif @trap=="Egg of Granville 2" d=cabs(x^2*y^2-(x-(@a+0.5))*(1-x)+@p1) elseif @trap=="Egg of Kepler" d=cabs((x^2+y^2)^2-@a*x^3+@p1) elseif @trap=="Eight Curve" d=cabs(x^4-@a^2*(x^2-y^2)+@p1) elseif @trap=="Elkies Trinomial Curve" d=cabs(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)+@p1) elseif @trap=="Ellipse" d=cabs(x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="Fish Curve" d=cabs((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)+@p1) elseif @trap=="Focal Conic Conchoid" d=cabs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2+@p1) elseif @trap=="Folium" d=cabs((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2+@p1) elseif @trap=="Folium of Descartes" d=cabs(x^3+y^3-3*@a*x*y+@p1) elseif @trap=="Folium of Durer" d=cabs((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2+@p1) elseif @trap=="Frequency Curve" d=cabs(y-sqrt(2*pi)*exp(-x^2/2)+@p1) elseif @trap=="Heart Curve" d=cabs((x^3+y^2-1)^3-x^2*y^3+@p1) elseif @trap=="Heart of Eugene Beutel" d=cabs((x^2+y^2-1)^3-x^2*y^3+@p1) elseif @trap=="Heart of Raphael Laporte" d=cabs(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6+@p1) elseif @trap=="Hippopede" d=cabs((x^2+y^2)^2-@a*x^2-@a2*y^2+@p1) elseif @trap=="Hippopede of Proclus" d=cabs((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2+@p1) elseif @trap=="Hoerl Curve" d=cabs(y-x^@a*e^x+@p1) elseif @trap=="Humbert's Cubic" d=cabs(x^3-3*x*y^2-@a^3+@p1) elseif @trap=="Hyperbola" d=cabs(x^2/@a^2-y^2/@a2^2-1+@p1) elseif @trap=="Hyperbola 2" d=cabs(x^2/@a^2-y^2/@a2^2+1+@p1) elseif @trap=="Hyperbolic Cosecantoid" d=cabs(y-@a/sinh(x/@a2)+@p1) elseif @trap=="Hyperbolic Cosinusoid" d=cabs(y-@a*cosh(x/@a2)+@p1) elseif @trap=="Hyperbolic Cotangentoid" d=cabs(y-@a*cotanh(x/@a2)+@p1) elseif @trap=="Hyperbolic Secantoid" d=cabs(y-@a/cosh(x/@a2)+@p1) elseif @trap=="Hyperbolic Sinusoid" d=cabs(y-@a*sinh(x/@a2)+@p1) elseif @trap=="Hyperbolic Tangentoid" d=cabs(y-tanh(@a*x)+@p1) elseif @trap=="Hyperelliptic Curve" d=cabs(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)+@p1) elseif @trap=="Illumination Curve" d=cabs(y^2-recip((x^2+1)^3)+@p1) elseif @trap=="Inverse Nephroid" d=cabs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)+@p1) elseif @trap=="Isoptic Curve" d=cabs(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x+@p1) elseif @trap=="Kampyle of Eudoxus" d=cabs(@a^2*x^4-@a2^4*(x^2+y^2)+@p1) elseif @trap=="Kappa Curve" d=cabs(y^2*(x^2+y^2)-@a^2*x^2+@p1) elseif @trap=="Kepler's Folium" d=cabs(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2+@p1) elseif @trap=="Kiepert Curve" d=cabs((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)+@p1) elseif @trap=="Kieroid" d=cabs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2+@p1) elseif @trap=="Kiss Curve" d=cabs(@a^4*y^2-(@a^2-x^2)^3+@p1) elseif @trap=="Klein Quartic" d=cabs((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)+@p1) elseif @trap=="Kulp Quartic" d=cabs(x^2*y^2-@a^2*(@a^2-y^2)+@p1) elseif @trap=="Lemniscate of Bernoulli" d=cabs((x^2+y^2)^2-@a^2*(x^2-y^2)+@p1) elseif @trap=="Lemniscate of Booth" d=cabs((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2+@p1) elseif @trap=="Limacon of Pascal" d=cabs((x^2+y^2-@a*y)^2-(x^2+y^2)+@p1) elseif @trap=="Limacon of Pascal 2" d=cabs((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)+@p1) elseif @trap=="Links Curve" d=cabs((x^2+y^2-3*x)^2-4*x^2*(2-x)+@p1) elseif @trap=="Lissajous Curve" d=cabs(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)+@p1) elseif @trap=="Lissajous Curve 2" d=cabs(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)+@p1) elseif @trap=="Lissajous Quadratic" d=cabs(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4+@p1) elseif @trap=="Logarithmic Lemniscate" d=cabs(y^2-x^2*log(@a^2/x^2)+@p1) elseif @trap=="Logarithmic Sinusoid" d=cabs(y-log(sqrt(1-x^2))+@p1) elseif @trap=="Logistic Growth Curve" d=cabs(y-recip(1+@a*e^x)+@p1) elseif @trap=="Maltese Cross Curve" d=cabs(x*y*(x^2-y^2)-x^2-y^2+@p1) elseif @trap =="Neile's Semi-Cubical Parabola" d=cabs(y^3-@a*x^2+@p1) elseif @trap =="Neile's Semi-Cubical Parabola 2" d=cabs((x-0.5)^3-3*y^2+@p1) elseif @trap=="Nephroid" d=cabs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2+@p1) elseif @trap=="Nephroid of Freeth" d=cabs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2+@p1) elseif @trap=="Newton's Diverging Parabolas" d=cabs(@a*y^2-x*(x^2-2*@a2*x+@a3)+@p1) elseif @trap=="Newton's Diverging Parabolas 2" d=cabs(y^2-x*(x^2+2*@a*x+@a2)+@p1) elseif @trap=="Nodal Curve" d=cabs(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2+@p1) elseif @trap=="Oblique Bifolium" d=cabs((x^2+y^2)^2-x^2*(@a*x+@a2*y)+@p1) elseif @trap=="Oblique Cappa" d=cabs((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2+@p1) elseif @trap=="Oblique Cissoid" d=cabs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2+@p1) elseif @trap=="Oblique Pancappa" d=cabs((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2+@p1) elseif @trap=="Oblique Strophoid" d=cabs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y+@p1) elseif @trap=="Ophiuride" d=cabs(x*(x^2+y^2)-@a2*x*y-@a*y^2+@p1) elseif @trap=="Parabola" d=cabs(4*@a*(x-@a2)-(y-@a3)^2+@p1) elseif @trap=="Parabola 2" d=cabs(x-@a*(y-@a2)^2-@a3+@p1) elseif @trap=="Parabola 3" d=cabs(y-@a*x^2-@a2*x-@a3+@p1) elseif @trap=="Parabolic Trifolium" d=cabs(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)+@p1) elseif @trap=="Pear-Shaped Quartic" d=cabs(@a2^2*y^2-x^3*(@a-x)+@p1) elseif @trap=="Pearls of Sluze" d=cabs(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5+@p1) elseif @trap=="Pursuit Curve" d=cabs(y-@a*x^2+log(x)+@p1) elseif @trap=="Pursuit Curve 2" d=cabs(y-@a*x+log(x)+@p1) elseif @trap=="Quadratix of Hippias" d=cabs(x-y*cotan(y/@a)+@p1) elseif @trap=="Quadrifolium" d=cabs((x^2+y^2)^3-4*@a^2*x^2*y^2+@p1) elseif @trap=="Regular Trifolium" d=cabs((x^2+y^2)^2-@a*x*(x^2-3*y^2)+@p1) elseif @trap=="Right Strophoid" d=cabs(y^2-x^2*(@a-x)/(@a+x)+@p1) elseif @trap=="Rose Curve" d=cabs(x-@a*sin(@a2*y)+@p1) elseif @trap=="Rose Curve 2" d=cabs(x-@a*cos(@a2*y)+@p1) elseif @trap=="Satchel" d=cabs((x^2-@a2*y)^2-@a^2*(x^2-y^2)+@p1) elseif @trap=="Scarab" d=cabs((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2+@p1) elseif @trap=="Scyphoid" d=cabs(x^4-y^4-4*@a*x*y^2+@p1) elseif @trap=="Secantoid" d=cabs(y-@a/cos(x/@a2)+@p1) elseif @trap=="Seccoid" d=cabs(y-@a2/(x*cos(x))+@p1) elseif @trap=="Semi-Trident" d=cabs(x*y^2-@a*x+@p1) elseif @trap=="Serpentine Curve" d=cabs(y-@a*@a2*x/(x^2+@a^2)+@p1) elseif @trap=="Sincoid" d=cabs(y-@a*sin(x)/x+@p1) elseif @trap=="Sinus Chain" d=cabs(y^2-abs(sin(x)+0.1*sin(2*x))+@p1) elseif @trap=="Sinusoid" d=cabs(y-@a*sin(x/@a2)+@p1) elseif @trap=="Spiric Curve" d=cabs((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4+@p1) elseif @trap=="Spiric of Perseus" d=cabs((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3+@p1) elseif @trap=="Spiric Sections" d=cabs((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)+@p1) elseif @trap=="Superellipse" d=cabs((x/@a)^@a3+(y/@a2)^@a3-1+@p1) elseif @trap=="Superellipse 2" d=cabs(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1+@p1) elseif @trap=="Swastika Curve" d=cabs(2*x*y-x^4+y^4+@p1) elseif @trap=="Syntractrix" d=cabs(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)+@p1) elseif @trap=="Szego Curve" d=cabs(x^2+y^2-e^(2*x-2)+@p1) elseif @trap=="Tancoid" d=cabs(y-@a*tan(x)/x+@p1) elseif @trap=="Tangentoid" d=cabs(y-@a*tan(x/@a2)+@p1) elseif @trap=="Tetracuspid" d=cabs(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2+@p1) elseif @trap=="Torpedo" d=cabs((x^2+y^2)^2-@a*x*(x^2-y^2)+@p1) elseif @trap=="Tractrix" d=cabs(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)+@p1) elseif @trap=="Trident" d=cabs(y-x^2-@a/x+@p1) elseif @trap=="Trident 2" d=cabs(x*y+@a*x^3+@a2*x^2+@a3*x-@a4+@p1) elseif @trap=="Trifolium" d=cabs((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)+@p1) elseif @trap=="Trifolium 2" d=cabs((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)+@p1) elseif @trap=="Trisectrix of Delange" d=cabs((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)+@p1) elseif @trap=="Trisectrix of Maclaurin" d=cabs(y^2*(@a+x)-x^2*(3*@a-x)+@p1) elseif @trap=="Trisectrix of Maclaurin 2" d=cabs(2*x^3+2*x*y^2-3*x^2+y^2+@p1) elseif @trap=="Trott Curve" d=cabs(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81+@p1) elseif @trap=="Tschirnhaus' Cubic" d=cabs(3*@a*y^2-x*(x-@a)^2+@p1) elseif @trap=="Tschirnhaus' Cubic 2" d=cabs(27*@a*y^2-(@a-x)*(x+8*@a)^2+@p1) elseif @trap=="Visiera" d=cabs(x*(x^2+y^2)-@a*(x^2+2*y^2)+@p1) elseif @trap=="Viviani's Curve" d=cabs(y^2-x^2*(@a^2-x^2)+@p1) elseif @trap=="Watt's Curve" d=cabs((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)+@p1) elseif @trap=="Witch of Agnesi" d=cabs(y-8*@a^3/(x^2+4*@a^2)+@p1) elseif @trap=="OM1" d=cabs((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)+@p1) elseif @trap=="OM2" d=cabs((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)+@p1) elseif @trap=="OM3" d=cabs(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)+@p1) elseif @trap=="OM4" d=cabs(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)+@p1) elseif @trap=="OM5" d=cabs(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5+@p1) elseif @trap=="OM6" d=cabs(sin(x)^3+sin(y)^3-@a) elseif @trap=="OM7" d=cabs(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3+@p1) elseif @trap=="OM8" d=cabs((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2+@p1) elseif @trap=="OM9" d=cabs((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3+@p1) elseif @trap=="OM10" d=cabs((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2+@p1) elseif @trap=="OM11" d=cabs(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1+@p1) elseif @trap=="OM12" d=cabs((x^2+y^2)^2-@a/(x^2-y^2)+@p1) elseif @trap=="OM13" d=cabs((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)+@p1) elseif @trap=="OM14" d=cabs((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)+@p1) elseif @trap=="OM15" d=cabs((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y+@p1) elseif @trap=="OM16" d=cabs(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))+@p1) elseif @trap=="OM17" d=cabs((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)+@p1) elseif @trap=="OM18" d=cabs(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)+@p1) elseif @trap=="OM19" d=cabs(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))+@p1) elseif @trap=="OM20" d=cabs(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))+@p1) elseif @trap=="OM21" d=cabs(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4+@p1) elseif @trap=="OM22" d=cabs(y-x*(x^4-@a)*(x^2+y^2)^2+@p1) elseif @trap=="OM23" d=cabs((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)+@p1) elseif @trap=="OM24" d=cabs(@a*fn2(fn3(z))+@p1) elseif @trap=="OM25" d=cabs(@a*z+x^2+y^3+@p1) elseif @trap=="OM26" d=cabs(@a*z^2+x^2+y^3+@p1) elseif @trap=="OM27" d=cabs((x^2+y^2)*sin(z)-2*@a*x*y+@p1) elseif @trap=="OM28" d=cabs((x^2+y^2)*log(z)-2*@a*x*y+@p1) elseif @trap=="OM29" d=cabs(sinh(z)+x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="OM30" d=cabs(cotanh(z)+x^2/@a^2+y^2/@a2^2-1+@p1) elseif @trap=="OM31" d=cabs(sqr(z)-@a2*sin(@a3)+y-@a*cos(@a3)+x+@p1) elseif @trap=="OM32" d=cabs(cosh(z)-@a2*sin(@a3)+y-@a*cos(@a3)+x+@p1) elseif @trap=="OM33" d=cabs((x^2+y^2+z^2)^2-@a^2*(x^2+y^2)+x^2+y^2-@a*x+@p1) elseif @trap=="OM34" d=cabs((x^2+y^2+flip(z)^2)^2-@a^2*(x^2+y^2)+x^2+y^2-@a*x+@p1) elseif @trap=="OM35" d=cabs(x*y+y*cos(z)+cos(z)*x-@a*(x+y+cos(z))+1+@p1) elseif @trap=="OM36" d=cabs(x*y+y*cosh(z)+cosh(z)*x-@a*(x+y+cosh(z))+1+@p1) elseif @trap=="OM37" d=cabs(x^2+(exp(z)-@a3)^2-@a^2+y^2+(exp(z)-@a3)^2-@a2^2+@p1) elseif @trap=="OM38" d=cabs(x^2+(cos(z)-@a3)^2-@a^2+y^2+(cos(z)-@a3)^2-@a2^2+@p1) elseif @trap=="OM39" d=cabs(x^2+sin(z)^2-2*@a*x+@a2*sin(z)-x*y+@p1) elseif @trap=="OM40" d=cabs(x^2+y^2+(cos(z)-@a*tan(@a2/2))^2-@a^2/cos(@a2/2)^2+@p1) elseif @trap=="OM41" d=cabs(x^2+y^2+(atanh(z)-@a*tan(@a2/2))^2-@a^2/cos(@a2/2)^2+@p1) elseif @trap=="OM42" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+sin(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*sin(z)-x^2-y^2+@p1) elseif @trap=="OM43" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+sqr(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*sqr(z)-x^2-y^2+@p1) elseif @trap=="OM44" d=cabs(x+@a*tan(3*@a2)*(cos(@a3)+@a3*sin(@a3))+y+@a*tan(3*@a2)*(sin(@a3)\ +@a3*cos(@a3))+exp(z)+@a*tan(3*@a2)^2*(1+@a3^2)-2*@a*exp(z)-x^2-y^2+@p1) elseif @trap=="OM45" d=cabs(2*x^2+2*y^2+sin(z)^2-@a^2-@a*@a2+@p1) elseif @trap=="OM46" d=cabs(2*x^2+2*y^2+flip(z)^2-@a^2-@a*@a2+@p1) elseif @trap=="OM47" d=cabs(x^2+2*y^2+sqr(z)^2-@a2^2+(x-@a)^2-(@a2-@a)^2+@p1) elseif @trap=="OM48" d=cabs(x^2+y^2+acosh(z)^2*@a2^2/(1+@a2^2)-2*@a*x*y+@p1) elseif @trap=="OM49" d=cabs(@a*y-x^2+@a^2*z-x^3+@p1) elseif @trap=="OM50" d=cabs(x^2+y^2-sqr(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM51" d=cabs(x^2+y^2-atanh(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM52" d=cabs(x^2+y^2-tan(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM53" d=cabs(x^2+y^2-sqrt(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM54" d=cabs(x^2+y^2-cos(z)^2*(@a2+1)^2/(1-(@a2+1)^2)-4*@a^2*(@a2+1)^2/(1-(@a2+1)^2)^2+@p1) elseif @trap=="OM55" d=cabs(@a*y-x^2+@a^2*asin(z)-x^3+@p1) elseif @trap=="OM56" d=cabs(@a^2*y^2*z^2*(1/(@a2+1)^2+1/@a3^2)^2+(@a2+1)^2*z^2*x^2*(1/@a3^2+1/@a^2)^2-@a3^2*x^2*y^2*(1/@a^2-1/(@a2+1)^2)^2+@p1) elseif @trap=="OM57" d=cabs(z-@a*(x^2-y^2)/sqrt(x^2+y^2)+@p1) elseif @trap=="OM58" d=cabs(sqr(z)-x*cos(y)/(@a-sin(y))+@p1) endif if d>=@p2 && d<=@p3 && a==0 a=b c=(d-@p2)*(@p4/(@p3-@p2)) endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Suvercuys" int param version caption="Version" default=100 visible=@version<100 endparam param trap caption="Trapshape" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18"\ "OM19""OM20""OM21""OM22""OM23""OM24""OM25""OM26""OM27""OM28""OM29""OM30""OM31""OM32""OM33""OM34""OM35"\ "OM36""OM37""OM38""OM39""OM40""OM41""OM42""OM43""OM44""OM45""OM46""OM47""OM48""OM49""OM50""OM51""OM52""OM53""OM54""OM55" \ "OM56""OM57""OM58" endparam param a caption="Trapshape Parameter" default=1.0 visible=@trap!="Frequency Curve" \ && @trap!="Arcs of Samothrace" && @trap!="Illumination Curve" \ && @trap!="Logarithmic Sinusoid" \ && @trap!="Elkies Trinomial Curve" && @trap!="Bolza" \ && @trap!="Hyperelliptic Curve" \ && @trap!="Maltese Cross Curve" && @trap!="Ampersand Curve" \ && @trap!="Heart of Eugene Beutel" && @trap!="Heart of Raphael Laporte" \ && @trap!="Butterfly Knot" && @trap!="Trott Curve" && @trap!="Swastika Curve" \ && @trap!="Biquartic" && @trap!="Butterfly Curve" && @trap!="Bean Curve" \ && @trap!="Bean Curve 2" && @trap!="Egg of Columbus" && @trap!="Sinus Chain" \ && @trap!="Szego Curve" && @trap!="Links Curve" && @trap!="Double Egg 2" \ && @trap!="Heart Curve" && @trap!="Cornoid 2" \ && @trap!="Nodal Curve" && @trap!="Trisectrix of Maclaurin 2" \ && @trap!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Trapshape Parameter 2" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Conchoid of de Sluze" \ || @trap=="Ellipse" || @trap=="Folium" || @trap=="Kampyle of Eudoxus" \ || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" \ || @trap=="Bullet-Nose Curve" \ || @trap=="Dwulistne" || @trap=="Cubic Joint" || @trap=="Syntractrix" \ || @trap=="Oblique Strophoid" || @trap=="Superellipse 2" || @trap=="Oblique Cissoid" \ || @trap=="Hippopede" || @trap=="Oblique Pancappa" || @trap=="Oblique Cappa" \ || @trap=="Oblique Bifolium" || @trap=="Lemniscate of Booth" \ || @trap=="Curve of Jefabek" || @trap=="Curve of Cramer" \ || @trap=="OM3" || @trap=="OM4" || @trap=="OM5" || @trap=="Hippopede of Proclus" \ || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Rose Curve" || @trap=="Rose Curve 2" || @trap=="Cassinian Ovals" \ || @trap=="Conchoid of Nicomedes" || @trap=="Devil's Curve" || @trap=="Durer's Conchoid" \ || @trap=="Devil's Curve 2" || @trap=="Durer's Conchoid 2" || @trap=="Hyperbola" \ || @trap=="Parabola" || @trap=="Hyperbola 2" \ || @trap=="Pear-Shaped Quartic" || @trap=="Serpentine Curve" || @trap=="Sinusoid"\ || @trap=="Trident 2" || @trap=="Atriphthaloid" || @trap=="Clairaut Curve" || @trap=="Clinoid" \ || @trap=="Cross Curve" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" || @trap=="Circular Cubic" \ || @trap=="Dumbbell Curve" || @trap=="Kieroid"\ || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" || @trap=="OM13" || @trap=="Ophiuride" \ || @trap=="Klein Quartic" || @trap=="Tangentoid" || @trap=="Beetle" || @trap=="Secantoid" || @trap=="Hyperbolic Secantoid" \ || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" || @trap=="Tetracuspid" || @trap=="Trifolium" \ || @trap=="Trifolium 2" || @trap=="OM14" || @trap=="OM10" || @trap=="Isoptic Curve" || @trap=="Cotangentoid" \ || @trap=="Cosinusoid" || @trap=="Hyperbolic Cosinusoid" || @trap=="Cosecantoid" || @trap=="Hyperbolic Cosecantoid" \ || @trap=="Hyperbolic Sinusoid" || @trap=="Hyperbolic Cotangentoid" || @trap=="OM16" || @trap=="Alain Curve" \ || @trap=="OM19" || @trap=="OM20" || @trap=="Focal Conic Conchoid" || @trap=="Conchoid of a Circle" || @trap=="Satchel" \ || @trap=="Kepler's Folium" || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Scarab" || @trap=="Lissajous Quadratic" \ || @trap=="Watt's Curve" || @trap=="Limacon of Pascal 2" || @trap=="Newton's Diverging Parabolas 2" || @trap=="OM29" \ || @trap=="OM30" || @trap=="OM31" || @trap=="OM32" || @trap=="OM37" || @trap=="OM38" || @trap=="OM39" || @trap=="OM40" \ || @trap=="OM41" || @trap=="OM42" || @trap=="OM43" || @trap=="OM44" || @trap=="OM45" || @trap=="OM46" || @trap=="OM47" \ || @trap=="OM48" || @trap=="OM50" || @trap=="OM51" || @trap=="OM52" || @trap=="OM53" || @trap=="OM54" || @trap=="OM56" endparam param a3 caption="Trapshape Parameter 3" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" || @trap=="Superellipse 2" \ || @trap=="Oblique Pancappa" || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Parabola" \ || @trap=="Trident 2" || @trap=="Clinoid" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Kieroid" || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" \ || @trap=="Klein Quartic" || @trap=="Beetle" || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" \ || @trap=="Trifolium" || @trap=="OM16" || @trap=="OM19" || @trap=="OM20" || @trap=="Conchoid of a Circle" \ || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Watt's Curve" || @trap=="OM31" || @trap=="OM32" \ || @trap=="OM37" || @trap=="OM38" || @trap=="OM42" || @trap=="OM43" || @trap=="OM44" || @trap=="OM56" endparam param a4 caption="Trapshape Parameter 4" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Superellipse 2" || @trap=="Cissoid of Zahradnik" \ || @trap=="Trident 2" || @trap=="Cartesian Oval" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Spiric Curve" endparam param a5 caption="Trapshape Parameter 5" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Cissoid of Zahradnik" \ || @trap=="Circular Cubic" endparam heading endheading param Fs caption="Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 default=ident() endfunc func fn3 default=ident() endfunc heading endheading param p1 caption="Parameter 1" default=1.0 endparam param p2 caption="Parameter 2" default=0.1 endparam param p3 caption="Parameter 3" default=1.0 endparam param p4 caption="Parameter 4" default=2.0 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.965 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_LegendrePolynomialTraps2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="6" pz=pz+cos(pz) elseif @Va=="7" pz=pz+flip(pz) elseif @Va=="8" pz=pz+conj(pz) elseif @Va=="9" pz=pz+cabs(pz) elseif @Va=="10" pz=pz+abs(pz) elseif @Va=="11" pz=pz+exp(pz) elseif @Va=="12" pz=pz+sqr(pz) elseif @Va=="13" pz=pz+cotanh(pz) elseif @Va=="14" pz=pz+tan(pz) elseif @Va=="15" pz=pz+cosh(pz) elseif @Va=="16" pz=pz-conj(pz) elseif @Va=="17" pz=pz-cabs(pz) elseif @Va=="18" pz=pz-abs(pz) elseif @Va=="19" pz=pz-exp(pz) elseif @Va=="20" pz=pz-sqr(pz) elseif @Va=="21" pz=pz-cotanh(pz) elseif @Va=="22" pz=pz-tanh(pz) elseif @Va=="23" pz=pz-tan(pz) elseif @Va=="24" pz=pz-cosh(pz) elseif @Va=="25" pz=pz-cos(pz) elseif @Va=="26" pz=pz-sinh(pz) elseif @Va=="27" pz=pz-sin(pz) elseif @Va=="28" pz=pz-recip(pz) endif pz=flip(pz) pz=@p1*fn2(pz)+@p2 if @v=="2" pz=cabs((3*pz^2-1)/2) elseif @v=="3" pz=cabs((5*pz^3-3*pz)/2) elseif @v=="4" pz=cabs((35*pz^4-30*pz^2+3)/8) elseif @v=="5" pz=cabs((63*pz^5-70*pz^3+15*pz)/8) elseif @v=="6" pz=cabs((231*pz^6-315*pz^4+105*pz^2-5)/16) elseif @v=="7" pz=cabs((429*pz^7-693*pz^5+315*pz^3-35*pz)/16) elseif @v=="8" pz=cabs((6435*pz^8-12012*pz^6+6930*pz^4-1260*pz^2+35)/128) elseif @v=="9" pz=cabs((12155*pz^9-25740*pz^7+18018*pz^5-4620*pz^3+315*pz)/128) elseif @v=="10" pz=cabs((46189*pz^10-109395*pz^8+90090*pz^6-30030*pz^4+3465*pz^2-63)/256) endif pz=log(pz) float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if (log(c)+@adj2)*0.5<@p7 index=(log(c)+@adj2)*0.5 else m_Solid=true endif else if (log(c)+@adj2)*0.5>=@p7 index=(log(c)+@adj2)*0.5 else m_Solid=true endif endif else index=(log(c)+@adj2)*0.5 endif return index endfunc private: float c float index default: title="Legendre Polynomial Traps 2" int param version caption="Version" default=100 visible=@version<100 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" default=0 endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8""9""10" default=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param adj caption="Adjustment 1" default=1.5 endparam param adj2 caption="Adjustment 2" default=1.0 endparam param Fs caption="Z Function 1" enum="acos""acosh""atan"\ "sqr""sqrt""log""abs""cabs""conj"\ "flip""ident""recip"\ "asec""asech""aexsec"\ "crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "cube""colog""softplus"\ "sqr+""cube+""sin+""cos+""sin*""cos*"\ "+pixel""-pixel"\ "*pixel""/pixel""double""triple" default=10 endparam func fn2 caption="Z Function 2" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.57 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_OrgumaLocus2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) b=(0,0) c=(0,0) d=0.0 fpixel=pz f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if f if @V=="ident" a=@p1*fn1(pz)+@p2 elseif @V=="+pixel" a=@p1*fn1(pz+fpixel)+@p2 elseif @V=="*pixel" a=@p1*fn1(pz*fpixel)+@p2 elseif @V=="sqr+pixel" a=@p1*fn1(pz^2+fpixel)+@p2 elseif @V=="loglog" a=@p1*fn1(log(log(pz)))+@p2 elseif @V=="sin" a=@p1*fn1(sin(pz))+@p2 elseif @V=="sinh" a=@p1*fn1(sinh(pz))+@p2 elseif @V=="cosh" a=@p1*fn1(cosh(pz))+@p2 elseif @V=="acos" a=@p1*fn1(acos(pz))+@p2 elseif @V=="tan" a=@p1*fn1(tan(pz))+@p2 elseif @V=="cotanh" a=@p1*fn1(cotanh(pz))+@p2 elseif @V=="sqrt" a=@p1*fn1(sqrt(pz))+@p2 elseif @V=="exp" a=@p1*fn1(exp(pz))+@p2 elseif @V=="flip" a=@p1*fn1(flip(pz))+@p2 elseif @V=="recip" a=@p1*fn1(recip(pz))+@p2 elseif @V=="third" a=@p1*fn1(pz/3)+@p2 elseif @V=="half" a=@p1*fn1(pz/2)+@p2 elseif @V=="double" a=@p1*fn1(2*pz)+@p2 elseif @V=="triple" a=@p1*fn1(3*pz)+@p2 elseif @V=="mf1" a=@p1*fn1(sqr(pz)+2*pz)+@p2 elseif @V=="mf2" a=@p1*fn1(pz^3+2*sqr(pz)+3*pz)+@p2 elseif @V=="mf3" a=@p1*fn1(pz-(pz^3-1)/(3*pz^2))+@p2 elseif @V=="mf4" a=@p1*fn1(conj(1/(pz-1))+1)+@p2 elseif @V=="mf5" a=@p1*fn1(pz^2*(pz-2)/(1-2*pz))+@p2 elseif @V=="mf6" a=@p1*fn1(((pz^2-0.5)/(2*pz-1.5))^2)+@p2 elseif @V=="mf7" a=@p1*fn1(pz^3+3*pz^2+3*pz+1)+@p2 elseif @V=="mf8" a=@p1*fn1((pz^3-0.5)/(3*pz^2))+@p2 elseif @V=="mf9" a=@p1*fn1((3*pz^2)/(pz^3-1))+@p2 elseif @V=="sin+" a=@p1*fn1(sin(pz)+pz)+@p2 elseif @V=="sin*" a=@p1*fn1(sin(pz)*pz)+@p2 elseif @V=="sinc" a=@p1*fn1(sin(pz)/pz)+@p2 elseif @V=="cosh+" a=@p1*fn1(cosh(pz)+pz)+@p2 elseif @V=="cosh*" a=@p1*fn1(cosh(pz)*pz)+@p2 elseif @V=="coshc" a=@p1*fn1(cosh(pz)/pz)+@p2 elseif @V=="tan+" a=@p1*fn1(tan(pz)+pz)+@p2 elseif @V=="tan*" a=@p1*fn1(tan(pz)*pz)+@p2 elseif @V=="tanc" a=@p1*fn1(tan(pz)/pz)+@p2 elseif @V=="sec" a=@p1*fn1(1/cos(pz))+@p2 elseif @V=="sec+" a=@p1*fn1(1/cos(pz)+pz)+@p2 elseif @V=="sec*" a=@p1*fn1(pz/cos(pz))+@p2 elseif @V=="secc" a=@p1*fn1(1/(pz*cos(pz)))+@p2 endif d=cabs(a) c=a/d d=recip(sqrt(imag(c)^(-2))) b=d*c d=20*sqr(cabs(sqr(fn2(b-a)))) if d<1 f=false endif endif endfunc float func ResultIndex(complex pz) if f m_Solid=true else if |a|>|b| d=1+d else d=1-d endif index=d/2 endif return index endfunc private: complex a complex b complex c float d bool f complex fpixel float index default: title="Orguma Locus 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Function 1" enum="ident""+pixel""*pixel""sqr+pixel""loglog"\ "sin""sinh""cosh""acos""tan""cotanh"\ "sqrt""exp""flip""recip""third""half""double""triple"\ "mf1""mf2""mf3""mf4""mf5""mf6""mf7""mf8""mf9""sin+""sin*""sinc""cosh+""cosh*""coshc"\ "tan+""tan*""tanc""sec" "sec+""sec*""secc" endparam func fn1 caption="Function 2" default=ident () endfunc func fn2 caption="Function 3" default=ident() endfunc param p1 default=(1,0) endparam param p2 default=(0,0) endparam } class OM_OrgumaLocus3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) b=(0,0) c=(0,0) d=(0,0) f=0 g=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if g if @V=="1" b=fn2(log(pz+@p3/fn3(pz))) elseif @V=="2" b=fn2(log(pz+@p3*fn3(pz))) elseif @V=="3" b=fn2(log(pz^2*fn3((pz-(@p3+1))/(1-(@p3+1)*pz)))) elseif @V=="4" b=fn2(log(pz^2*fn3((pz-4)/(@p3+4*pz)))) elseif @V=="5" if |pz|<1 pz=pz/|pz| endif b=fn2(log(-@p3*fn3(pz))) elseif @V=="6" if |pz|>1 pz=pz/|pz| endif b=fn2(log(@p3*fn3(pz))) elseif @V=="7" if real(pz)imag(pz) pz=flip(pz) endif b=fn2(log(@p3*fn3(pz))) elseif @V=="9" b=fn2(log(-@p3*fn3((pz-1i)/(pz+1i)))) elseif @V=="10" b=fn2(log(-@p3*fn3((pz-1)/(pz+1)))) elseif @V=="11" b=fn2(log(pz-@p3*(fn3(pz)^3-1)/(3*fn3(pz)^2))) elseif @V=="12" b=fn2(log(fn3((pz^2-@p3-1)/(2*pz-@p3-2))^2)) endif b=(b-@p1)*@p4 f=cabs(fn1(b)) if f>1e-10 d=b/f f=@p2*0.5/(0.25+(@p2^2-0.25)*imag(d)^2) c=f*d f=cabs((c-b)^3)/0.05 if f<=1 g=false endif endif endif endfunc float func ResultIndex(complex pz) if g m_Solid=true else if |b|>|c| f=1+f else f=1-f endif endif index=f/2 return index endfunc private: complex b complex c complex d float f bool g float index default: title="Orguma Locus 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12" endparam func fn1 default=recip() endfunc func fn2 default=ident() endfunc func fn3 default=ident() endfunc param p1 default=(0,0) endparam param p2 caption="Parameter 2" default=0.5 endparam param p3 default=(1,0) endparam param p4 caption="Parameter 4" default=1.0 endparam } class OM_GromShigLumati(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=cabs(d)/cabs(cos(tanh(fn1(pz)))) d=pz+1-sin(fn2(pz)) if b<1 && f>0 g=true c=(imag(@adj1)-1)*b+a*imag(@adj1) endif f=f+1 a=f%real(@adj1) endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if g index=((real(c)+1)%@adj2)/@adj2 else m_Solid=true endif else index=((real(c)+1)%@adj2)/@adj2 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Grom Shig Lumati" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func fn1 caption="GSL Function 1" default=ident() endfunc func fn2 caption="GSL Function 2" default=ident() endfunc param adj1 caption="Adjustment 1" default=(3.5,1.03) endparam param adj2 caption="Adjustment 2" default=0.15 endparam param solid caption="Solid Color" default=true endparam } class OM_MagmaGrolthius(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=|d|/|fn1(fn2(tanh(pz+@p1)))| d=pz if b<@adj2&&f>0 g=true c=((imag(@adj1)-1)/@adj2)*b+a*imag(@adj1) endif f=f+1 a=f%real(@adj1) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%@adj3)/@adj3 else m_Solid=true endif else index=((real(c)+1)%@adj3)/@adj3 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc func fn1 caption="MG Function 1" default=ident() endfunc func fn2 caption="MG Function 2" default=sqr() endfunc param p1 caption="MG Parameter" default=(0,0) endparam param adj1 caption="Adjustment 1" default=(-25,132) endparam param adj2 caption="Adjustment 2" default=0.2 endparam param adj3 caption="Adjustment 3" default=289.0 endparam param solid caption="Solid Color" default=true endparam } class OM_MagmaGrolthius2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if !g b=|d|/|fn1(sin(pz))+@p1| if @F2=="sqr" d=fn3(sqr(pz))+@p2 elseif @F2=="sqr+" d=fn3(sqr(pz)+pz)+@p2 elseif @F2=="flip+" d=fn3(pz+flip(pz))+@p2 elseif @F2=="conj+" d=fn3(pz+conj(pz))+@p2 elseif @F2=="cabs+" d=fn3(pz+cabs(pz))+@p2 elseif @F2=="abs+" d=fn3(pz+abs(pz))+@p2 elseif @F2=="trunc+" d=fn3(pz+trunc(pz))+@p2 elseif @F2=="conj-" d=fn3(pz-conj(pz))+@p2 elseif @F2=="cabs-" d=fn3(pz-cabs(pz))+@p2 elseif @F2=="sqrt-" d=fn3(pz-sqrt(pz))+@p2 elseif @F2=="cotanh-" d=fn3(pz-cotanh(pz))+@p2 elseif @F2=="round-" d=fn3(pz-round(pz))+@p2 elseif @F2=="cube+" d=fn3(pz^3+sqr(pz)+pz)+@p2 elseif @F2=="+pixel" d=fn3(pz+pixel)+@p2 elseif @F2=="*pixel" d=fn3(pz*pixel)+@p2 elseif @F2=="/pixel" d=fn3(pz/pixel)+@p2 elseif @F2=="exp" d=fn3(exp(pz))+@p2 elseif @F2=="asinh" d=fn3(asinh(pz))+@p2 elseif @F2=="sqrexp" d=fn3(sqr(exp(pz)))+@p2 elseif @F2=="sqrtan" d=fn3(sqr(tan(pz)))+@p2 elseif @F2=="sqrtanh" d=fn3(sqr(tanh(pz)))+@p2 elseif @F2=="sqrsqr" d=fn3(sqr(sqr(pz)))+@p2 elseif @F2=="sqrlog" d=fn3(sqr(log(pz)))+@p2 elseif @F2=="recipcabs+" d=fn3(pz+recip(cabs(pz)))+@p2 elseif @F2=="recipabs+" d=fn3(pz+recip(abs(pz)))+@p2 elseif @F2=="reciplog+" d=fn3(pz+recip(log(pz)))+@p2 elseif @F2=="recipconj-" d=fn3(pz-recip(conj(pz)))+@p2 elseif @F2=="recipacosh-" d=fn3(pz-recip(acosh(pz)))+@p2 elseif @F2=="mf1" d=fn3(pz-(pz^3-1)/(3*pz^2))+@p2 elseif @F2=="mf2" d=fn3(conj(1/(pz-1))+1)+@p2 elseif @F2=="mf3" d=fn3(pz^2/(pz-1))+@p2 elseif @F2=="mf4" d=fn3(pz^2/(pz^3-1))+@p2 elseif @F2=="mf5" d=fn3(pz^3*(pz-3)/(1-3*pz))+@p2 elseif @F2=="mf6" d=fn3((pz-0.5i)/(pz+0.5i))+@p2 endif if b<@adj && f>0 g=true c=((imag((-50,150)-1))/@adj)*b+a*imag((-50,150)) endif f=f+1 a=f%(-50) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%300)/300 else m_Solid=true endif else index=((real(c)+1)%300)/300 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius 2" int param version caption="Version" default=100 visible=@version<100 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param F2 caption="MG Function 1" enum="sqr""sqr+""flip+""conj+""cabs+""abs+""trunc+""cube+"\ "conj-""cabs-""sqrt-""cotanh-""round-""+pixel""*pixel""/pixel"\ "exp""asinh""sqrexp""sqrtan""sqrtanh""sqrsqr""sqrlog"\ "recipcabs+""recipabs+""reciplog+""recipconj-""recipacosh-"\ "mf1""mf2""mf3""mf4""mf5""mf6" endparam func fn1 caption="MG Function 2" default=ident() endfunc func fn3 caption="MG Function 3" default=ident() endfunc param p1 caption="MG Parameter 1" default=(0,0) endparam param p2 caption="MG Parameter 2" default=(0,0) endparam param adj caption="Adjustment" default=0.2 endparam param solid caption="Solid Color" default=true endparam } class OM_TormSpaw(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz a=0.0 c=0.01 d=(0,0) f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v=="1" d=pz+@p3*fn2(pz)+@p4 elseif @v=="2" d=pz+@p3/fn2(pz)+@p4 elseif @v=="3" d=pz^2*fn2((pz-(@p3+1))/(1-(@p3+1)*pz))+@p4 elseif @v=="4" d=pz^2*fn2((pz-4)/(@p3+4*pz))+@p4 elseif @v=="5" d=fn2((pz^2+@p3-1)/(2*pz+@p3-2))^2+@p4 elseif @v=="6" d=fn2((pz^2+@p3-1i)/(2*pz+@p3-2i))^2+@p4 elseif @v=="7" d=pz^2*fn2((pz-(@p3+1))/(1i-(@p3+1)*pz))+@p4 elseif @v=="8" d=pz+@p3*fn2(pz)^3+@p4 elseif @v=="9" if real(pz)imag(pz) pz=flip(pz) endif d=@p3*fn2(pz)+@p4 elseif @v=="13" d=@p3*fn2((pz^3-3)/(3*pz^2))+@p4 elseif @v=="14" d=@p3*fn2(pz-(pz^3-1)/(3*pz^2))+@p4 elseif @v=="15" d=@p3*fn2((pz-1i)/(pz+1i))+@p4 elseif @v=="16" d=@p3*fn2((pz+0.5i)/(pz-0.5i))+@p4 elseif @v=="17" d=@p3*fn2((2*pz-1i)/(pz-1i))+@p4 elseif @v=="18" d=@p3*fn2((-0.1*pz-1i)/(pz-1i))+@p4 elseif @v=="19" d=@p3*fn2((pz-fpixel)/(pz+fpixel))+@p4 elseif @v=="20" d=@p3*fn2((pz-1i)/(pz+fpixel))+@p4 elseif @v=="21" d=@p3*fn2((pz-1)/(pz+1))+@p4 elseif @v=="22" d=@p3*fn2((pz+1)/(pz-1))+@p4 elseif @v=="23" if |pz|<1 pz=pz/|pz| endif if real(pz)1 pz=pz/|pz| endif d=@p3*fn2(2*pz)+@p4 elseif @v=="53" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+exp(pz))+@p4 elseif @v=="54" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+log(pz))+@p4 elseif @v=="55" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+sqrt(pz))+@p4 elseif @v=="56" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+cotan(pz))+@p4 elseif @v=="57" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+atanh(pz))+@p4 elseif @v=="58" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+acosh(pz))+@p4 elseif @v=="59" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+cosh(pz))+@p4 elseif @v=="60" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz+round(pz))+@p4 elseif @v=="61" if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz-log(pz))+@p4 else if |pz|>1 pz=pz/|pz| endif d=@p3*fn2(pz-cosh(pz))+@p4 endif a=cabs(d-@p5*fpixel) if f && 1@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float a float c complex d bool f complex fpixel float index default: title="Torm Spaw" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Variant Parameter 1" default=(1,0) endparam param p4 caption="Variant Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Variant Function" default=ident() endfunc param p5 default=(0,0) endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Kozmod2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) c=0.0 d=0.0 i=0 f=0.0 k=false h=1e20 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) a=pz pz=@p1*fn2(pz)+@p2 if @V=="1" pz=pz elseif @V=="2" pz=pz+sqrt(pz) elseif @V=="3" pz=pz+acosh(pz) elseif @V=="4" pz=pz+cos(pz) elseif @V=="5" pz=pz+cabs(pz) elseif @V=="6" pz=pz+tanh(pz) elseif @V=="7" pz=pz+exp(pz) elseif @V=="8" pz=pz+conj(pz) elseif @V=="9" pz=pz+abs(pz) elseif @V=="10" pz=pz+log(pz) elseif @V=="11" pz=pz+sqr(pz) elseif @V=="12" pz=pz+tan(pz) elseif @V=="13" pz=pz+cosh(pz) else pz=pz+trunc(pz) endif if @V2=="1" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="2" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="3" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="4" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="5" c=@adj1*real(cos(10*cos(imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="6" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(10*cos(real(fn3(pz)))))+@adj2 elseif @V2=="7" c=@adj1*real(cos(cos(10*cos(imag(fn3(pz))))))+@adj2 d=@adj1*real(cos(10*real(fn3(pz))))+@adj2 elseif @V2=="8" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(10*cos(real(fn3(pz)))))+@adj2 elseif @V2=="9" c=@adj1*real(cos(10*cos(imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="10" c=@adj1*real(cos(10*imag(fn3(pz))))+@adj2 d=@adj1*real(cos(cos(10*cos(real(fn3(pz))))))+@adj2 elseif @V2=="11" c=@adj1*real(cos(cos(10*cos(imag(fn3(pz))))))+@adj2 d=@adj1*real(cos(cos(10*real(fn3(pz)))))+@adj2 elseif @V2=="12" c=@adj1*real(cos(cos(10*imag(fn3(pz)))))+@adj2 d=@adj1*real(cos(cos(10*cos(real(fn3(pz))))))+@adj2 endif j=c+flip(d) f=cabs(a-j) if i>=@adj3 if !k && f<=@adj4 k=true h=f endif endif i=i+1 endfunc float func ResultIndex(complex pz) if @solid if !k m_Solid=true else index=h endif else index=h endif return index endfunc private: complex a float c float d int i float f bool k float h float index default: title="Kozmod 2" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn2 caption="Z Function" default=ident() endfunc param V caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param V2 caption="Kozmod Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12" endparam func fn3 caption="Kozmod Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=0.5 endparam param adj2 caption="Adjustment 2" default=0.0 endparam param adj3 caption="Adjustment 3" default=0 endparam param adj4 caption="Adjustment 4" default=0.75 endparam param solid caption="Solid Color" default=true endparam } class OM_EulerPolynomialTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz a=0.0 b=0.0 c=0.01 d=(0,0) f=true endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @pzv==0 pz=pz elseif @pzv==1 pz=pz+exp(pz) elseif @pzv==2 pz=pz+sqrt(pz) elseif @pzv==3 pz=pz+sqr(pz) elseif @pzv==4 pz=pz+acos(pz) elseif @pzv==5 pz=pz+cos(pz) elseif @pzv==6 pz=pz+flip(pz) elseif @pzv==7 pz=pz+acosh(pz) elseif @pzv==8 pz=pz+conj(pz) elseif @pzv==9 pz=pz-1/acosh(pz) elseif @pzv==10 pz=pz-cabs(pz) elseif @pzv==11 pz=pz-ceil(pz) elseif @pzv==12 pz=pz-asinh(pz) elseif @pzv==13 pz=pz-abs(pz) elseif @pzv==14 pz=pz-sin(pz) elseif @pzv==15 pz=pz-acosh(pz) elseif @pzv==16 pz=pz+ceil(pz) elseif @pzv==17 pz=pz+floor(pz) elseif @pzv==18 pz=pz+trunc(pz) elseif @pzv==19 pz=pz+1/cos(pz) elseif @pzv==20 pz=pz+1/pz elseif @pzv==21 pz=pz+1/cabs(pz) elseif @pzv==22 pz=pz+1/log(pz) elseif @pzv==23 pz=pz+1/sqr(pz) elseif @pzv==24 pz=pz+1/cotanh(pz) elseif @pzv==25 pz=pz+1/tan(pz) elseif @pzv==26 pz=pz+1/acosh(pz) elseif @pzv==27 pz=pz+1/acos(pz) elseif @pzv==28 pz=pz+1/cosh(pz) elseif @pzv==29 pz=pz-1/cos(pz) elseif @pzv==30 pz=pz-1/pz elseif @pzv==31 pz=pz-1/conj(pz) elseif @pzv==32 pz=pz-1/exp(pz) elseif @pzv==33 pz=pz-1/log(pz) elseif @pzv==34 pz=pz-1/cotanh(pz) elseif @pzv==35 pz=pz-1/cotan(pz) elseif @pzv==36 pz=pz-1/tanh(pz) else pz=pz-1/tan(pz) endif if @v=="2" d=@p3*fn2(pz^2-pz)+@p4 elseif @v=="3" d=@p3*fn2(pz^3-1.5*pz^2+0.25)+@p4 elseif @v=="4" d=@p3*fn2(pz^4-2*pz^3+pz)+@p4 elseif @v=="5" d=@p3*fn2(pz^5-2.5*pz^4+2.5*pz^2-0.5)+@p4 elseif @v=="6" d=@p3*fn2(pz^6-3*pz^5+5*pz^3-3*pz)+@p4 elseif @v=="7" d=@p3*fn2(pz^7-3.5*pz^6+8.75*pz^4-10.5*pz^2+2.125)+@p4 else d=@p3*fn2(pz^8-4*pz^7+14*pz^5-28 *pz^3+17*pz)+@p4 endif a=cabs(fn3(d)-fn3(fpixel)) b=cabs(fn4(d)-@fn5(fpixel)) if f && @adj1=@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float a float b float c complex d bool f complex fpixel float index default: title="Euler Polynomial Traps" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param pzv caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param V caption="Polynomial" enum="2""3""4""5""6""7""8" endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(1,0) endparam func fn2 caption="Polynomial Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=1.7 endparam func fn3 default=ident() endfunc func fn4 default=ident() endfunc func fn5 caption="Function 5" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Blengrundesiwo(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 d=cabs(fn1(fn2(pz)*cabs(pz))-@p1) if d>=@p2 && d<=1 && a==0 a=b c=cabs((d-@p2)*(2/(pz-@p2))) endif endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Blengrundesiwo" int param version caption="Version" default=100 visible=@version<100 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc param p1 default=(1,0) endparam param p2 caption="Parameter 2" default=0.75 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Blengrundesiwo2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0 b=1 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) b=b+1 if @V=="1" pz=@p3*sqr(pz) elseif @V=="2" pz=@p3*pz elseif @V=="3" pz=@p3*flip(pz) elseif @V=="4" pz=@p3*atanh(pz) elseif @V=="5" pz=@p3*atan(pz) elseif @V=="6" pz=@p3*tanh(pz) elseif @V=="7" pz=@p3*tan(pz) elseif @V=="8" pz=@p3*sin(pz) elseif @V=="9" pz=@p3*sinh(pz) elseif @V=="10" pz=@p3*asinh(pz) elseif @V=="11" pz=@p3*flip(sqr(pz)) elseif @V=="12" pz=@p3*sqr(sqr(pz)) elseif @V=="13" pz=@p3*atanh(sqr(pz)) elseif @V=="14" pz=@p3*atan(sqr(pz)) elseif @V=="15" pz=@p3*tanh(sqr(pz)) elseif @V=="16" pz=@p3*tan(sqr(pz)) elseif @V=="17" pz=@p3*asinh(sqr(pz)) elseif @V=="18" pz=@p3*sqr(tan(pz)) elseif @V=="19" pz=@p3*sinh(sqr(pz)) elseif @V=="20" pz=@p3*sin(sqr(pz)) elseif @V=="21" pz=@p3*sqr(atanh(pz)) elseif @V=="22" pz=@p3*sqr(atan(pz)) elseif @V=="23" pz=@p3*(sqr(pz)/flip(pz)) elseif @V=="24" pz=@p3*(sqr(pz)/conj(pz)) elseif @V=="25" pz=@p3*(sqr(pz)/cabs(pz)) elseif @V=="26" pz=@p3*(sqr(pz)/log(pz)) elseif @V=="27" pz=@p3*(pz*abs(pz)/flip(pz)) elseif @V=="28" pz=@p3*(pz*abs(pz)/cosh(pz)) elseif @V=="29" pz=@p3*(pz*abs(pz)/cos(pz)) elseif @V=="30" pz=@p3*(pz^3/abs(pz)) elseif @V=="31" pz=@p3*(pz^3/tanh(pz)) elseif @V=="32" pz=@p3*(pz^3/cos(pz)) elseif @V=="33" pz=@p3*(pz*tanh(pz)/flip(pz)) elseif @V=="34" pz=@p3*(pz*tanh(pz)/conj(pz)) elseif @V=="35" pz=@p3*(pz*tanh(pz)/log(pz)) elseif @V=="36" pz=@p3*(pz*tanh(pz)/atanh(pz)) elseif @V=="37" pz=@p3*(pz*tanh(pz)/tan(pz)) elseif @V=="38" pz=@p3*(pz*tanh(pz)/asinh(pz)) elseif @V=="39" pz=@p3*(pz*tanh(pz)/sin(pz)) elseif @V=="40" pz=@p3*(pz*tan(pz)/flip(pz)) elseif @V=="41" pz=@p3*(pz*tan(pz)/conj(pz)) elseif @V=="42" pz=@p3*(pz*tan(pz)/cabs(pz)) elseif @V=="43" pz=@p3*(pz*tan(pz)/tanh(pz)) elseif @V=="44" pz=@p3*(pz*flip(pz)/atan(pz)) elseif @V=="45" pz=@p3*(pz*flip(pz)/tanh(pz)) elseif @V=="46" pz=@p3*(pz*flip(pz)/tan(pz)) elseif @V=="47" pz=@p3*(pz*flip(pz)/cos(pz)) elseif @V=="48" pz=@p3*(pz*flip(pz)/sinh(pz)) elseif @V=="49" pz=@p3*(pz*flip(pz)/sin(pz)) elseif @V=="50" pz=@p3*(pz*sqrt(pz)/cabs(pz)) elseif @V=="51" pz=@p3*(pz*sqrt(pz)/cos(pz)) elseif @V=="52" pz=@p3*(pz*atanh(pz)/cabs(pz)) else pz=@p3*(pz*tan(pz)/cabs(pz)) endif d=cabs(fn2(pz)*fn1(pz)+1) if d>=@p2 && d<=1 && a==0 a=b c=cabs((d-@p2)*(2/(pz-@p2))) endif endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@p7 index=c else m_Solid=true endif else if a>@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: int a int b float c float d float index default: title="Blengrundesiwo 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53" endparam func fn1 default=cabs() endfunc func fn2 default=ident() endfunc param p3 caption="Parameter 1" default=(-1,0) endparam param p2 caption="Parameter 2" default=0.75 endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Krommen(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e20 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v2==0 pz=pz elseif @v2==1 pz=pz+sqr(pz) elseif @v2==2 pz=pz-sqr(pz) elseif @v2==3 pz=pz+pz^3 elseif @v2==4 pz=pz-pz^3 elseif @v2==5 pz=pz+conj(pz) elseif @v2==6 pz=pz+cabs(pz) elseif @v2==7 pz=pz+exp(pz) elseif @v2==8 pz=pz+log(pz) elseif @v2==9 pz=pz+sqrt(pz) elseif @v2==10 pz=pz+atanh(pz) elseif @v2==11 pz=pz+atan(pz) elseif @v2==12 pz=pz+tanh(pz) elseif @v2==13 pz=pz+tan(pz) elseif @v2==14 pz=pz+cosh(pz) elseif @v2==15 pz=pz+cos(pz) elseif @v2==16 pz=pz+sinh(pz) elseif @v2==17 pz=pz+sin(pz) elseif @v2==18 pz=pz+ceil(pz) elseif @v2==19 pz=pz+floor(pz) elseif @v2==20 pz=pz-conj(pz) elseif @v2==21 pz=pz-cabs(pz) elseif @v2==22 pz=pz-exp(pz) elseif @v2==23 pz=pz-sqrt(pz) elseif @v2==24 pz=pz-cotanh(pz) elseif @v2==25 pz=pz-tan(pz) elseif @v2==26 pz=pz-cos(pz) elseif @v2==27 pz=pz-ceil(pz) elseif @v2==28 pz=pz-round(pz) elseif @v2==29 pz=pz+1/flip(pz) elseif @v2==30 pz=pz+1/cabs(pz) elseif @v2==31 pz=pz+1/abs(pz) elseif @v2==32 pz=pz+1/sqrt(pz) elseif @v2==33 pz=pz+1/sqr(pz) elseif @v2==34 pz=pz+1/acos(pz) elseif @v2==35 pz=pz+1/cosh(pz) elseif @v2==36 pz=pz+1/cos(pz) elseif @v2==37 pz=pz-1/pz elseif @v2==38 pz=pz-1/conj(pz) elseif @v2==39 pz=pz-1/exp(pz) elseif @v2==40 pz=pz-1/cosh(pz) elseif @v2==41 pz=pz-1/cos(pz) elseif @v2==42 pz=pz-1/sin(pz) else pz=pz-1/round(pz) endif x=real(pz) y=imag(pz) if @V=="Alain Curve" pz=((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2) elseif @V=="Ampersand Curve" pz=((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2) elseif @V=="Arcs of Samothrace" pz=(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)) elseif @V=="Astroid" pz=(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @V=="Atriphthaloid" pz=(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @V=="Bean Curve" pz=((x^2+y^2)^2-x^3-y^3) elseif @V=="Bean Curve 2" pz=(x^4+x^2*y^2+y^4-x*(x^2+y^2)) elseif @V=="Beetle" pz=((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2) elseif @V=="Biaxial Eight Reverse" pz=(@a^2*y^2-x^2*(y^2-x^2)) elseif @V=="Bicorn" pz=(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2) elseif @V=="Bicuspid" pz=((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2) elseif @V=="Biquartic" pz=(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)) elseif @V=="Blade's Cubic" pz=(x^3+y^3-@a^3) elseif @V=="Bolza" pz=(y^2-x^5+x) elseif @V=="Bow Curve" pz=(x^4-(@a+1)*x^2*y+y^3) elseif @V=="Bullet-Nose Curve" pz=((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2) elseif @V=="Butterfly Curve" pz=(x^6+y^6-x^2) elseif @V=="Butterfly Knot" pz=((x^2+y^2)*x^4-(x^2-y^2)^2) elseif @V=="Cardioid" pz=((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @V=="Cartesian Oval" pz=((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4) elseif @V=="Cassinian Ovals" pz=((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4) elseif @V=="Catenary" pz=(y-@a*cosh(x/@a)) elseif @V=="Cayley's Sextic" pz=(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2) elseif @V=="Cayley's Sextic 2" pz=(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)) elseif @V=="Ceva's Trisectrix" pz=((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2) elseif @V=="Chasles Cubic" pz=(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3) elseif @V=="Circle" pz=(x^2+y^2-@a^2) elseif @V=="Circular Cubic" pz=(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5) elseif @V=="Cissoid of Diocles" pz=(y^2-x^3/(2*@a-x)) elseif @V=="Cissoid of Diocles 2" pz=(y^2*(2*@a-x)-x^8) elseif @V=="Cissoid of zahradnik" pz=(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @V=="Clairaut Curve" pz=((x^2+y^2)^((@a2+1)/2)-@a*y^@a2) elseif @V=="Clinoid" pz=(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @V=="Cochleoid" pz=((x^2+y^2)*atan(y/x)-@a*y) elseif @V=="Conchoid of a Circle" pz=((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @V=="Conchoid of Nicomedes" pz=((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @V=="Conchoid of de Sluze" pz=(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @V=="Conic Sections" pz=(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2) elseif @V=="Cornoid" pz=((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @V=="Cornoid 2" pz=(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @V=="Coscoid" pz=(y-@a*cos(x)/x) elseif @V=="Cosecantoid" pz=(y-@a/sin(x/@a2)) elseif @V=="Cosinusoid" pz=(y-@a*cos(x/@a2)) elseif @V=="Cotangentoid" pz=(y-@a*cotan(x/@a2)) elseif @V=="Cross Curve" pz=(@a^2*y^2+@a2^2*x^2-x^2*y^2) elseif @V=="Cubic Joint" pz=(y^2*x-@a*y^2-@a2*x^2) elseif @V=="Cubic of Apollonius" pz=((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))) elseif @V=="Curve of Cramer" pz=(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2) elseif @V=="Curve of Jefabek" pz=((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2) elseif @V=="Curve of Loriga" pz=(3*x^2-y^2-@a^2) elseif @V=="Curve of Rosillo" pz=(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)) elseif @V=="Deltoid" pz=((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @V=="Deltoid 2" pz=((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @V=="Devil's Curve" pz=(y^4-x^4+@a*y^2+@a2*x^2) elseif @V=="Devil's Curve 2" pz=(y^4-x^4-@a^2*y^2+@a2^2*x^2) elseif @V=="Dipole Curve" pz=((x^2+y^2)^3-@a^4*x^2) elseif @V=="Double Egg" pz=((x^2+y^2)^3-@a^2*x^4) elseif @V=="Double Egg 2" pz=(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2) elseif @V=="Double Folium" pz=((x^2+y^2)^2-4*@a*x*y^2) elseif @V=="Double U" pz=(y^2*(@a^2-x^2)-@a^4) elseif @V=="Dumbbell Curve" pz=(@a2^4*y^2-x^4*(@a^2-x^2)) elseif @V=="Duplicatrix Cubic" pz=(@a*y^2-x^2*(x-@a)) elseif @V=="Durer's Conchoid" pz=((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @V=="Durer's Conchoid 2" pz=(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @V=="Dwulistne" pz=((x^2+y^2)^2-(@a*x+@a2*y)*x^2) elseif @V=="Egg of Columbus" pz=(y^4+10*y^2*x^2+5*x^4-y) elseif @V=="Egg of Granville" pz=(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)) elseif @V=="Egg of Granville 2" pz=(x^2*y^2-(x-(@a+0.5))*(1-x)) elseif @V=="Egg of Kepler" pz=((x^2+y^2)^2-@a*x^3) elseif @V=="Eight Curve" pz=(x^4-@a^2*(x^2-y^2)) elseif @V=="Elkies Trinomial Curve" pz=(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)) elseif @V=="Ellipse" pz=(x^2/@a^2+y^2/@a2^2-1) elseif @V=="Fish Curve" pz=((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)) elseif @V=="Focal Conic Conchoid" pz=((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @V=="Folium" pz=((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2) elseif @V=="Folium of Descartes" pz=(x^3+y^3-3*@a*x*y) elseif @V=="Folium of Durer" pz=((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2) elseif @V=="Frequency Curve" pz=(y-sqrt(2*pi)*exp(-x^2/2)) elseif @V=="Heart Curve" pz=((x^3+y^2-1)^3-x^2*y^3) elseif @V=="Heart of Eugene Beutel" pz=((x^2+y^2-1)^3-x^2*y^3) elseif @V=="Heart of Raphael Laporte" pz=(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6) elseif @V=="Hippopede" pz=((x^2+y^2)^2-@a*x^2-@a2*y^2) elseif @V=="Hippopede of Proclus" pz=((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2) elseif @V=="Hoerl Curve" pz=(y-x^@a*e^x) elseif @V=="Humbert's Cubic" pz=(x^3-3*x*y^2-@a^3) elseif @V=="Hyperbola" pz=(x^2/@a^2-y^2/@a2^2-1) elseif @V=="Hyperbola 2" pz=(x^2/@a^2-y^2/@a2^2+1) elseif @V=="Hyperbolic Cosecantoid" pz=(y-@a/sinh(x/@a2)) elseif @V=="Hyperbolic Cosinusoid" pz=(y-@a*cosh(x/@a2)) elseif @V=="Hyperbolic Cotangentoid" pz=(y-@a*cotanh(x/@a2)) elseif @V=="Hyperbolic Secantoid" pz=(y-@a/cosh(x/@a2)) elseif @V=="Hyperbolic Sinusoid" pz=(y-@a*sinh(x/@a2)) elseif @V=="Hyperbolic Tangentoid" pz=(y-tanh(@a*x)) elseif @V=="Hyperelliptic Curve" pz=(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)) elseif @V=="Illumination Curve" pz=(y^2-recip((x^2+1)^3)) elseif @V=="Inverse Nephroid" pz=((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @V=="Isoptic Curve" pz=(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x) elseif @V=="Kampyle of Eudoxus" pz=(@a^2*x^4-@a2^4*(x^2+y^2)) elseif @V=="Kappa Curve" pz=(y^2*(x^2+y^2)-@a^2*x^2) elseif @V=="Kepler's Folium" pz=(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2) elseif @V=="Kiepert Curve" pz=((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)) elseif @V=="Kieroid" pz=(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @V=="Kiss Curve" pz=(@a^4*y^2-(@a^2-x^2)^3) elseif @V=="Klein Quartic" pz=((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)) elseif @V=="Kulp Quartic" pz=(x^2*y^2-@a^2*(@a^2-y^2)) elseif @V=="Lemniscate of Bernoulli" pz=((x^2+y^2)^2-@a^2*(x^2-y^2)) elseif @V=="Lemniscate of Booth" pz=((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2) elseif @V=="Limacon of Pascal" pz=((x^2+y^2-@a*y)^2-(x^2+y^2)) elseif @V=="Limacon of Pascal 2" pz=((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)) elseif @V=="Links Curve" pz=((x^2+y^2-3*x)^2-4*x^2*(2-x)) elseif @V=="Lissajous Curve" pz=(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)) elseif @V=="Lissajous Curve 2" pz=(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)) elseif @V=="Lissajous Quadratic" pz=(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4) elseif @V=="Logarithmic Lemniscate" pz=(y^2-x^2*log(@a^2/x^2)) elseif @V=="Logarithmic Sinusoid" pz=(y-log(sqrt(1-x^2))) elseif @V=="Logistic Growth Curve" pz=(y-recip(1+@a*e^x)) elseif @V=="Maltese Cross Curve" pz=(x*y*(x^2-y^2)-x^2-y^2) elseif @V=="Neile's Semi-Cubical Parabola" pz=(y^3-@a*x^2) elseif @V=="Neile's Semi-Cubical Parabola 2" pz=((x-0.5)^3-3*y^2) elseif @V=="Nephroid" pz=((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @V=="Nephroid of Freeth" pz=((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @V=="Newton's Diverging Parabolas" pz=(@a*y^2-x*(x^2-2*@a2*x+@a3)) elseif @V=="Newton's Diverging Parabolas 2" pz=(y^2-x*(x^2+2*@a*x+@a2)) elseif @V=="Nodal Curve" pz=(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2) elseif @V=="Oblique Bifolium" pz=((x^2+y^2)^2-x^2*(@a*x+@a2*y)) elseif @V=="Oblique Cappa" pz=((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2) elseif @V=="Oblique Cissoid" pz=((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @V=="Oblique Pancappa" pz=((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2) elseif @V=="Oblique Strophoid" pz=(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @V=="Ophiuride" pz=(x*(x^2+y^2)-@a2*x*y-@a*y^2) elseif @V=="Parabola" pz=(4*@a*(x-@a2)-(y-@a3)^2) elseif @V=="Parabola 2" pz=(x-@a*(y-@a2)^2-@a3) elseif @V=="Parabola 3" pz=(y-@a*x^2-@a2*x-@a3) elseif @V=="Parabolic Trifolium" pz=(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)) elseif @V=="Pear-Shaped Quartic" pz=(@a2^2*y^2-x^3*(@a-x)) elseif @V=="Pearls of Sluze" pz=(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5) elseif @V=="Pursuit Curve" pz=(y-@a*x^2+log(x)) elseif @V=="Pursuit Curve 2" pz=(y-@a*x+log(x)) elseif @V=="Quadratix of Hippias" pz=(x-y*cotan(y/@a)) elseif @V=="Quadrifolium" pz=((x^2+y^2)^3-4*@a^2*x^2*y^2) elseif @V=="Regular Trifolium" pz=((x^2+y^2)^2-@a*x*(x^2-3*y^2)) elseif @V=="Right Strophoid" pz=(y^2-x^2*(@a-x)/(@a+x)) elseif @V=="Rose Curve" pz=(x-@a*sin(@a2*y)) elseif @V=="Rose Curve 2" pz=(x-@a*cos(@a2*y)) elseif @V=="Satchel" pz=((x^2-@a2*y)^2-@a^2*(x^2-y^2)) elseif @V=="Scarab" pz=((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2) elseif @V=="Scyphoid" pz=(x^4-y^4-4*@a*x*y^2) elseif @V=="Secantoid" pz=(y-@a/cos(x/@a2)) elseif @V=="Seccoid" pz=(y-@a2/(x*cos(x))) elseif @V=="Semi-Trident" pz=(x*y^2-@a*x) elseif @V=="Serpentine Curve" pz=(y-@a*@a2*x/(x^2+@a^2)) elseif @V=="Sincoid" pz=(y-@a*sin(x)/x) elseif @V=="Sinus Chain" pz=(y^2-abs(sin(x)+0.1*sin(2*x))) elseif @V=="Sinusoid" pz=(y-@a*sin(x/@a2)) elseif @V=="Spiric Curve" pz=((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4) elseif @V=="Spiric of Perseus" pz=((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3) elseif @V=="Spiric Sections" pz=((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)) elseif @V=="Superellipse" pz=((x/@a)^@a3+(y/@a2)^@a3-1) elseif @V=="Superellipse 2" pz=(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1) elseif @V=="Swastika Curve" pz=(2*x*y-x^4+y^4) elseif @V=="Syntractrix" pz=(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)) elseif @V=="Szego Curve" pz=(x^2+y^2-e^(2*x-2)) elseif @V=="Tancoid" pz=(y-@a*tan(x)/x) elseif @V=="Tangentoid" pz=(y-@a*tan(x/@a2)) elseif @V=="Tetracuspid" pz=(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2) elseif @V=="Torpedo" pz=((x^2+y^2)^2-@a*x*(x^2-y^2)) elseif @V=="Tractrix" pz=(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)) elseif @V=="Trident" pz=(y-x^2-@a/x) elseif @V=="Trident 2" pz=(x*y+@a*x^3+@a2*x^2+@a3*x-@a4) elseif @V=="Trifolium" pz=((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)) elseif @V=="Trifolium 2" pz=((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)) elseif @V=="Trisectrix of Delange" pz=((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)) elseif @V=="Trisectrix of Maclaurin" pz=(y^2*(@a+x)-x^2*(3*@a-x)) elseif @V=="Trisectrix of Maclaurin 2" pz=(2*x^3+2*x*y^2-3*x^2+y^2) elseif @V=="Trott Curve" pz=(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81) elseif @V=="Tschirnhaus' Cubic" pz=(3*@a*y^2-x*(x-@a)^2) elseif @V=="Tschirnhaus' Cubic 2" pz=(27*@a*y^2-(@a-x)*(x+8*@a)^2) elseif @V=="Visiera" pz=(x*(x^2+y^2)-@a*(x^2+2*y^2)) elseif @V=="Viviani's Curve" pz=(y^2-x^2*(@a^2-x^2)) elseif @V=="Watt's Curve" pz=((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)) elseif @V=="Witch of Agnesi" pz=(y-8*@a^3/(x^2+4*@a^2)) elseif @V=="OM1" pz=((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)) elseif @V=="OM2" pz=((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)) elseif @V=="OM3" pz=(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)) elseif @V=="OM4" pz=(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)) elseif @V=="OM5" pz=(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5) elseif @V=="OM6" pz=(sin(x)^3+sin(y)^3-@a) elseif @V=="OM7" pz=(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3) elseif @V=="OM8" pz=((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2) elseif @V=="OM9" pz=((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3) elseif @V=="OM10" pz=((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2) elseif @V=="OM11" pz=(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1) elseif @V=="OM12" pz=((x^2+y^2)^2-@a/(x^2-y^2)) elseif @V=="OM13" pz=((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)) elseif @V=="OM14" pz=((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)) elseif @V=="OM15" pz=((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y) elseif @V=="OM16" pz=(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))) elseif @V=="OM17" pz=((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)) elseif @V=="OM18" pz=(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)) elseif @V=="OM19" pz=(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))) elseif @V=="OM20" pz=(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))) elseif @V=="OM21" pz=(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4) elseif @V=="OM22" pz=(y-x*(x^4-@a)*(x^2+y^2)^2) elseif @V=="OM23" pz=((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)) endif if @v3==0 float b=|pz|+cabs(pz) elseif @v3==1 float b=|pz|+real(pz) elseif @v3==2 float b=|pz|+sqr(real(exp(pz))) elseif @v3==3 float b=|pz|+sqr(real(recip(pz))) elseif @v3==4 float b=|pz|+cabs(log(pz)) elseif @v3==5 float b=|pz|+sqr(imag(log(pz))) elseif @v3==6 float b=|pz|+cabs(pz)*real(pz)+imag(pz) elseif @v3==7 float b=cabs(log(pz))*cabs(pz) elseif @v3==8 float b=|pz|*|cotan(pz)|+real(pz) elseif @v3==9 float b=|pz|*real(atanh(pz))+real(pz) elseif @v3==10 float b=|pz|*real(recip(pz))+real(pz) elseif @v3==11 float b=cabs(log(pz))+|imag(pz)*real(pz)| elseif @v3==12 float b=cabs(sqrt(pz))+|imag(pz)*real(pz)| elseif @v3==13 float b=cabs(cotanh(pz))+|imag(pz)*real(pz)| elseif @v3==14 float b=|cotan(pz)|+cabs(pz) elseif @v3==15 float b=real(log(pz))*real(pz) elseif @v3==16 float b=|tanh(pz)|+imag(pz) else float b=|recip(pz)|+imag(pz) endif if b=@p7 index=3^(@adj2*m_Iterations+@adj1*a) else m_Solid=true endif endif else index=3^(@adj2*m_Iterations+@adj1*a) endif return index endfunc private: float a float index default: title="Krommen" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param V caption="Curve" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22""OM23" endparam param v2 caption="Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44" endparam param v3 caption="Variant 2" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param a caption="Curve Parameter" default=(1,0) visible=@V!="Frequency Curve" \ && @V!="Arcs of Samothrace" && @V!="Illumination Curve" \ && @V!="Logarithmic Sinusoid" \ && @V!="Elkies Trinomial Curve" && @V!="Bolza" \ && @V!="Hyperelliptic Curve" \ && @V!="Maltese Cross Curve" && @V!="Ampersand Curve" \ && @V!="Heart of Eugene Beutel" && @V!="Heart of Raphael Laporte" \ && @V!="Butterfly Knot" && @V!="Trott Curve" && @V!="Swastika Curve" \ && @V!="Biquartic" && @V!="Butterfly Curve" && @V!="Bean Curve" \ && @V!="Bean Curve 2" && @V!="Egg of Columbus" && @V!="Sinus Chain" \ && @V!="Szego Curve" && @V!="Links Curve" && @V!="Double Egg 2" \ && @V!="Heart Curve" && @V!="Cornoid 2" \ && @V!="Nodal Curve" && @V!="Trisectrix of Maclaurin 2" \ && @V!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Curve Parameter 2" default=(1,0) visible=@V=="Cartesian Oval" || @V=="Conchoid of de Sluze" \ || @V=="Ellipse" || @V=="Folium" || @V=="Kampyle of Eudoxus" \ || @V=="Superellipse" || @V=="Newton's Diverging Parabolas" \ || @V=="Pearls of Sluze" || @V=="Spiric Sections" \ || @V=="Bullet-Nose Curve" \ || @V=="Dwulistne" || @V=="Cubic Joint" || @V=="Syntractrix" \ || @V=="Oblique Strophoid" || @V=="Superellipse 2" || @V=="Oblique Cissoid" \ || @V=="Hippopede" || @V=="Oblique Pancappa" || @V=="Oblique Cappa" \ || @V=="Oblique Bifolium" || @V=="Lemniscate of Booth" \ || @V=="Curve of Jefabek" || @V=="Curve of Cramer" \ || @V=="OM3" || @V=="OM4" || @V=="OM5" || @V=="Hippopede of Proclus" \ || @V=="OM11" || @V=="Cissoid of Zahradnik" \ || @V=="Rose Curve" || @V=="Rose Curve 2" || @V=="Cassinian Ovals" \ || @V=="Conchoid of Nicomedes" || @V=="Devil's Curve" || @V=="Durer's Conchoid" \ || @V=="Devil's Curve 2" || @V=="Durer's Conchoid 2" || @V=="Hyperbola" \ || @V=="Parabola" || @V=="Hyperbola 2" \ || @V=="Pear-Shaped Quartic" || @V=="Serpentine Curve" || @V=="Sinusoid"\ || @V=="Trident 2" || @V=="Atriphthaloid" || @V=="Clairaut Curve" || @V=="Clinoid" \ || @V=="Cross Curve" || @V=="Cubic of Apollonius" || @V=="Chasles Cubic" || @V=="Circular Cubic" \ || @V=="Dumbbell Curve" || @V=="Kieroid"\ || @V=="Egg of Granville" || @V=="Curve of Rosillo" || @V=="OM13" || @V=="Ophiuride" \ || @V=="Klein Quartic" || @V=="Tangentoid" || @V=="Beetle" || @V=="Secantoid" || @V=="Hyperbolic Secantoid" \ || @V=="Spiric Curve" || @V=="Spiric of Perseus" || @V=="Tetracuspid" || @V=="Trifolium" \ || @V=="Trifolium 2" || @V=="OM14" || @V=="OM10" || @V=="Isoptic Curve" || @V=="Cotangentoid" \ || @V=="Cosinusoid" || @V=="Hyperbolic Cosinusoid" || @V=="Cosecantoid" || @V=="Hyperbolic Cosecantoid" \ || @V=="Hyperbolic Sinusoid" || @V=="Hyperbolic Cotangentoid" || @V=="OM16" || @V=="Alain Curve" \ || @V=="OM19" || @V=="OM20" || @V=="Focal Conic Conchoid" || @V=="Conchoid of a Circle" || @V=="Satchel" \ || @V=="Kepler's Folium" || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Scarab" || @V=="Lissajous Quadratic" \ || @V=="Watt's Curve" || @V=="Limacon of Pascal 2" || @V=="Newton's Diverging Parabolas 2" endparam param a3 caption="Curve Parameter 3" default=(1,0) visible=@V=="Cartesian Oval" || @V=="Superellipse" || @V=="Newton's Diverging Parabolas" \ || @V=="Pearls of Sluze" || @V=="Spiric Sections" || @V=="Superellipse 2" \ || @V=="Oblique Pancappa" || @V=="OM11" || @V=="Cissoid of Zahradnik" \ || @V=="Parabola" \ || @V=="Trident 2" || @V=="Clinoid" || @V=="Cubic of Apollonius" || @V=="Chasles Cubic" \ || @V=="Circular Cubic" || @V=="Kieroid" || @V=="Egg of Granville" || @V=="Curve of Rosillo" \ || @V=="Klein Quartic" || @V=="Beetle" || @V=="Spiric Curve" || @V=="Spiric of Perseus" \ || @V=="Trifolium" || @V=="OM16" || @V=="OM19" || @V=="OM20" || @V=="Conchoid of a Circle" \ || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Watt's Curve" endparam param a4 caption="Curve Parameter 4" default=(1,0) visible=@V=="Pearls of Sluze" || @V=="Superellipse 2" || @V=="Cissoid of Zahradnik" \ || @V=="Trident 2" || @V=="Cartesian Oval" || @V=="Chasles Cubic" \ || @V=="Circular Cubic" || @V=="Spiric Curve" endparam param a5 caption="Curve Parameter 5" default=(1,0) visible=@V=="Pearls of Sluze" || @V=="Cissoid of Zahradnik" \ || @V=="Circular Cubic" endparam param adj1 caption="Adjustment 1" default=-0.8 endparam param @adj2 caption="Adjustment 2" default=0.01 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.035 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_FristobensDanxoda(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 i=-1 i2=-1 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="ident" pz=ident(pz) elseif @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="log" pz=log(pz) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+cabs(pz) elseif @v==2 pz=pz+exp(pz) elseif @v==3 pz=pz+sqr(pz) elseif @v==4 pz=pz+atanh(pz) elseif @v==5 pz=pz+atan(pz) elseif @v==6 pz=pz+cosh(pz) elseif @v==7 pz=pz+cos(pz) elseif @v==8 pz=pz-cabs(pz) elseif @v==9 pz=pz-exp(pz) elseif @v==10 pz=pz-sqrt(pz) elseif @v==11 pz=pz-sqr(pz) elseif @v==12 pz=pz-atanh(pz) elseif @v==13 pz=pz-atan(pz) elseif @v==14 pz=pz-cos(pz) elseif @v==15 pz=pz-cosh(pz) elseif @v==16 pz=pz-round(pz) elseif @v==17 pz=pz+1/exp(pz) elseif @v==18 pz=pz+1/log(pz) elseif @v==19 pz=pz+1/sqr(pz) elseif @v==20 pz=pz+1/cos(pz) elseif @v==21 pz=pz-1/pz elseif @v==22 pz=pz-1/conj(pz) elseif @v==23 pz=pz-1/exp(pz) elseif @v==24 pz=pz-1/log(pz) elseif @v==25 pz=pz-1/acosh(pz) elseif @v==26 pz=pz-1/acos(pz) elseif @v==27 pz=pz-1/cosh(pz) elseif @v==28 pz=pz-1/cos(pz) endif pz=abs(pz) x=real(pz) y=imag(pz) i=i+1 float b=|x+@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x))| if b@p7 index=@adj*a*i2/28 else m_Solid=true endif endif else index=@adj*a*i2/28 endif return index endfunc private: float a int i int i2 float index default: title="Fristobens Danxoda" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29" endparam param Fs caption="Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="FD Parameter 1" default=(1,0) endparam param p2 caption="FD Parameter 2" default=(1,0) endparam param p3 caption="FD Parameter 3" default=(1,0) endparam param adj caption="Adjustment" default=1.0 endparam param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.04 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_MagmaGrolthius4(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if !g if @V2=="1" b=@p5*|d|/|fn2(pz)|+@p6 elseif @V2=="2" b=@p5*|d|/|fn2(pz+0.65/exp(pz))|+@p6 elseif @V2=="3" b=@p5*|d|/|fn2(pz-0.5/conj(pz))|+@p6 elseif @V2=="4" b=@p5*|d|/|fn2(pz-2*tanh(pz))|+@p6 elseif @V2=="5" b=@p5*|d|/|fn2(pz-cotanh(pz))|+@p6 elseif @V2=="6" b=@p5*|d|/|fn2(pz+flip(pz))|+@p6 elseif @V2=="7" b=@p5*|d|/|fn2(pz+cosh(pz))|+@p6 elseif @V2=="8" b=@p5*|d|/|fn2(pz+0.3/sqr(pz))|+@p6 elseif @V2=="9" b=@p5*|d|/|fn2(pz-cotan(pz))|+@p6 elseif @V2=="10" b=@p5*|d|/|fn2(pz+0.5/abs(pz))|+@p6 elseif @V2=="11" b=@p5*|d|/|fn2(pz-2*sinh(pz))|+@p6 elseif @V2=="12" b=@p5*|d|/|fn2(pz+1/cosh(pz))|+@p6 elseif @V2=="13" b=@p5*|d|/|fn2(pz+1/cos(pz))|+@p6 elseif @V2=="14" b=@p5*|d|/|fn2(pz-cosh(pz))|+@p6 elseif @V2=="15" b=@p5*|d|/|fn2(pz-1/pz)|+@p6 elseif @V2=="16" b=@p5*|d|/|fn2(pz+cos(pz))|+@p6 elseif @V2=="17" b=@p5*|d|/|fn2(pz-exp(pz))|+@p6 elseif @V2=="18" b=@p5*|d|/|fn2(pz+0.5/flip(pz))|+@p6 elseif @V2=="19" b=@p5*|d|/|fn2(pz-cos(pz))|+@p6 elseif @V2=="20" b=@p5*|d|/|fn2(pz-0.3/sqr(pz))|+@p6 elseif @V2=="21" b=@p5*|d|/|fn2(pz-1/cos(pz))|+@p6 elseif @V2=="22" b=@p5*|d|/|fn2(pz+cotanh(pz))|+@p6 elseif @V2=="23" b=@p5*|d|/|fn2(pz-1/cosh(pz))|+@p6 elseif @V2=="24" b=@p5*|d|/|fn2(pz+conj(pz))|+@p6 elseif @V2=="25" b=@p5*|d|/|fn2(pz+1/exp(pz))|+@p6 elseif @V2=="26" b=@p5*|d|/|fn2(pz-0.5/abs(pz))|+@p6 elseif @V2=="27" b=@p5*|d|/|fn2(pz+cotan(pz))|+@p6 elseif @V2=="28" b=@p5*|d|/|fn2(pz-2*tan(pz))|+@p6 elseif @V2=="29" b=@p5*|d|/|fn2(pz-2*sin(pz))|+@p6 elseif @V2=="30" b=@p5*|d|/|fn2(pz+1/pz)|+@p6 elseif @V2=="31" b=@p5*|d|/|fn2(pz+0.3/exp(pz))|+@p6 endif if @V=="1" d=pz+@p1*sqr(fn1(pz)) elseif @V=="2" d=pz+@p1*sqr(fn1(pz-pz^2)) elseif @V=="3" d=pz+@p1*sqr(fn1(pz+pz^2)) elseif @V=="4" d=pz+@p1*sqr(fn1(pz+flip(pz))) elseif @V=="5" d=pz+@p1*sqr(fn1(pz+abs(pz))) elseif @V=="6" d=pz+@p1*sqr(fn1(pz-cosh(pz))) elseif @V=="7" d=pz+@p1*sqr(fn1(flip(pz)/pz)) elseif @V=="8" d=pz+@p1*sqr(fn1(conj(pz)/pz)) elseif @V=="9" d=pz+@p1*sqr(fn1(pz^3)) elseif @V=="10" d=pz+@p1*sqr(fn1(conj(pz)*pz)) elseif @V=="11" d=pz+@p1*sqr(fn1(abs(pz)*pz)) elseif @V=="12" d=pz+@p1*sqr(fn1(exp(pz)*pz)) elseif @V=="13" d=pz+@p1*sqr(fn1(pz+3.4*pz*flip(pz))) elseif @V=="14" d=pz+@p1*sqr(fn1(pz+1.5*pz*conj(pz))) elseif @V=="15" d=pz+@p1*sqr(fn1(pz+2.25*pz*abs(pz))) elseif @V=="16" d=pz+@p1*sqr(fn1(pz-0.65*pz*exp(pz))) elseif @V=="17" d=pz+@p1*sqr(fn1(pz-2.67*pz^3)) elseif @V=="18" d=pz+@p1*sqr(fn1(pz-0.67*pz*cotan(pz))) elseif @V=="19" d=pz+@p1*sqr(fn1(pz-2.8*pz*tanh(pz))) elseif @V=="20" d=pz+@p1*sqr(fn1(pz-2.8*pz*cosh(pz))) elseif @V=="21" d=pz+@p1*sqr(fn1(pz-2.8*pz*cos(pz))) elseif @V=="22" d=pz+@p1*sqr(fn1((flip(pz)+0.3)/(1+0.3*flip(pz)))) elseif @V=="23" d=pz+@p1*sqr(fn1((conj(pz)+0.8)/(1+0.8*conj(pz)))) elseif @V=="24" d=pz+@p1*sqr(fn1((abs(pz)-0.9)/(1-0.9*abs(pz)))) elseif @V=="25" d=pz+@p1*sqr(fn1((exp(pz)-0.55)/(1-0.55*exp(pz)))) elseif @V=="26" d=pz+@p1*sqr(fn1((sqr(pz)+0.45)/(1+0.45*sqr(pz)))) elseif @V=="27" d=pz+@p1*sqr(fn1((cotanh(pz)+3.5)/(1+3.5*cotanh(pz)))) elseif @V=="28" d=pz+@p1*sqr(fn1((recip(pz)+2)/(1+2*recip(pz)))) endif if b<@adj2 && f>0 g=true c=((imag(@adj1*100)-1)/@adj2)*b+a*imag(@adj1*100) endif f=f+1 a=f%real(@adj1*100) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1)%(@adj3*289))/(@adj3*289) else m_Solid=true endif else index=((real(c)+1)%(@adj3*289))/(@adj3*289) endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Magma Grolthius 4" int param version caption="Version" default=100 visible=@version<100 endparam param V2 caption="MG Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30""31" endparam param V caption="MG Variant 2" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" endparam func fn2 caption="MG Function 1" default=ident() endfunc func fn1 caption="MG Function 2" default=ident() endfunc param p5 caption="MG Parameter 1" default=1.0 endparam param p6 caption="MG Parameter 2" default=0.0 endparam param p1 caption="MG Parameter 3" default=(1,0) endparam param adj1 caption="Adjustment 1" default=(-0.25,1.32) endparam param adj2 caption="Adjustment 2" default=0.5 endparam param adj3 caption="Adjustment 3" default=1.0 endparam param solid caption="Solid Color" default=true endparam } class OM_NIC(common.ulb:GradientColoring) { ;Normalized iteration count, as given here: ;http://math.unipa.it/~grim/Jbarrallo.PDF ;Try Sqrt, CubeRoot, Log or Arctan transfer function. ;This does not seem to work well with the default Linear public: float func ResultIndex(complex pz) z=@p1*fn1(pz)^@pow+@p2 a=m_Iterations+(log(log(@p3))-log(log(cabs(z))))/log(2) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: complex z float a float index default: title="NIC" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc param pow caption="Z Exponent" default=(1,0) endparam param p3 caption="Adjustment" default=7.5 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.85 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Chettre(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p3*fn1(pz)+@p4 if k2<=k1 if @V=="1" d=cabs(fn2(pz*(@p1-pz)+@p2)) elseif @V =="2" d=cabs(fn2(pz*(@p1*1i-pz)+@p2)) elseif @V=="3" d=cabs(fn2(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2)) elseif @V=="4" d=cabs(fn2(pz^2*(pz-4)/(@p1+4*pz)+@p2)) elseif @V=="5" d=cabs(fn2(((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p2)) elseif @V=="6" d=cabs(fn2(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2)) elseif @V=="7" d=cabs(fn2(pz-@p1*(pz^3-1)/(3*pz^2)+@p2)) elseif @V=="8" d=cabs(fn2(pz-@p1*(pz^4-1)/(4*pz^3)+@p2)) elseif @V=="9" d=cabs(fn2(pz+pz^2/(pz+@p1)+@p2)) elseif @V=="10" d=cabs(fn2(pz+pz^2/(pz+@p1*1i)+@p2)) elseif @V=="11" d=cabs(fn2((pz-@p1*1i)/(pz+@p1*1i)+@p2)) elseif @V=="12" d=cabs(fn2((pz-@p1)/(pz+@p1)+@p2)) elseif @V=="13" d=cabs(pz+@p1/fn2(pz)+@p2) elseif @V=="14" d=cabs(pz+@p1*1i/fn2(pz)+@p2) elseif @V=="15" d=cabs(pz+@p1*fn2(pz)+@p2) elseif @V=="16" d=cabs(pz+@p1*1i*fn2(pz)+@p2) elseif @V=="17" d=cabs(@p1*fn2(@p1/(pz-(@p2+1)))+(@p2+1)) elseif @V=="18" d=cabs(fn2(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2)) elseif @V=="19" d=cabs(fn2(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2)) elseif @V=="20" d=cabs(fn2((pz^2-@p1*1i)/(pz^2+@p1*1i)+@p2)) elseif @V=="21" d=cabs(fn2((pz^2-@p1)/(pz^2+@p1)+@p2)) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Chettre" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(0,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Variant Function" default=ident() endfunc param p5 caption="Detail" default=3 endparam param p6 caption="Fuzziness" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Breplumou(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 i=0 b=0.0 b2=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if i>=0 && i<=1E20 if @S==true pz=(abs(fn2(fn1(pz)))-@p3)/@p5 else pz=(fn2(fn1(pz))-@p3)/@p5 endif if @V=="1" b=log(cabs(fn3(pz*(@p1-pz)+@p2))) elseif @V=="2" b=log(cabs(fn3(pz*(@p1*1i-pz)+@p2))) elseif @V=="3" b=log(cabs(fn3(pz^2*(pz-(@p1+1))/(1-(@p1+1)*pz)+@p2))) elseif @V=="4" b=log(cabs(fn3(pz^2*(pz-4)/(@p1+4*pz)+@p2))) elseif @V=="5" b=log(cabs(fn3(((pz^2+@p1-1)/(2*pz+@p1-2))^2+(@p2-0.5)))) elseif @V=="6" b=log(cabs(fn3(((pz^2+@p1-1i)/(2*pz+@p1-2i))^2+@p2))) elseif @V=="7" b=log(cabs(fn3(pz-@p1*(pz^3-1)/(3*pz^2)+@p2))) elseif @V=="8" b=log(cabs(fn3(pz-@p1*(pz^4-1)/(4*pz^3)+@p2))) elseif @V=="9" b=log(cabs(fn3(pz+pz^2/(pz+@p1)+@p2))) elseif @V=="10" b=log(cabs(fn3(pz+pz^2/(pz+@p1*1i)+@p2))) elseif @V=="11" b=log(cabs(fn3((pz-@p1*1i)/(pz+@p1*1i)+@p2))) elseif @V=="12" b=log(cabs(fn3((pz-@p1)/(pz+@p1)+@p2))) elseif @V=="13" b=log(cabs(pz+@p1/fn3(pz)+@p2)) elseif @V=="14" b=log(cabs(pz+@p1*1i/fn3(pz)+@p2)) elseif @V=="15" b=log(cabs(pz+@p1*fn3(pz)+@p2)) elseif @V=="16" b=log(cabs(pz+@p1*1i*fn3(pz)+@p2)) elseif @V=="17" b=log(cabs(@p1*fn3(@p1/(pz-(@p2+1)))+(@p2+1))) elseif @V=="18" b=log(cabs(fn3(sqr((pz^3+3*(@p1-0.5)*pz+(@p1-0.5)*(@p1-1.5))/(3*pz^2+3*(@p1-1.5)*pz+(@p1-0.5)*(@p1-1.5)+1))+@p2))) elseif @V=="19" b=log(cabs(fn3(sqr((pz^3+3*(@p1-1i)*pz+(@p1-1i)*(@p1-2i))/(3*pz^2+3*(@p1-2i)*pz+(@p1-1i)*(@p1-2i)+1))+@p2))) elseif @V=="20" b=log(cabs(fn3((pz^2-@p1*1i)/(pz^2+@p1*1i)+@p2))) elseif @V=="21" b=log(cabs(fn3((pz^2-@p1)/(pz^2+@p1)+@p2))) elseif @V=="22" b=log(cabs(fn3(@p1*pz^3/(pz^2+@p2)))) elseif @V=="23" b=log(cabs(fn3(@p1*1i*pz^3/(pz^2-@p2)))) endif b2=cabs(pz)+1 b=abs(b^0.002-b2^0.01)^2 a=b/(cabs(pz)+1)+a endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p7 index=1000*a else m_Solid=true endif else if 1000*a>@p7 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a int i float b float b2 float index default: title="Breplumou" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23" endparam param p5 caption="Z Parameter 1" default=(-2.9,0) endparam param p3 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Z Function 1" default=sqr() endfunc func fn2 caption="Z Function 2" default=ident() endfunc param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam func fn3 caption="Variant Function" default=ident() endfunc param S caption="Abs(z)" default=false endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.08 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_InforsticChaneJulia(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) c=@c return pz endfunc private: complex c complex func Iterate(complex pz) m_ZOld=pz return ((@p1-1)*@p2*pz^4-@p1*(@p2-1))/((@p1-1)*pz^2-(@p2-1))+c endfunc default: title="Inforstic Chane Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="IC Parameter 1" default=(2,0) endparam param p2 caption="IC Parameter 2" default=(-0.2,0) endparam param c caption="Julia Seed" default=(-1.25,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarX56(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pz=pz+@asp*pz^2 pk=pk+@asp*pk^2 pk=@p1*@bf(pz*pk)+@p2 pz=pk^2/pz+pz^3/pk+c return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar X 56" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc param asp caption="Add Sqr Parameter" default=(-0.6,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0.75,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(-0.2,0) endparam func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarX57(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=@p1*@bf(pz/pk)+@p2+c pz=c*pz^2+@p1*a^2 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar X 57" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.65,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=1 endfunc param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(1.7,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarX58(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sf(pz) pk=pz elseif @sv==1 pz=@sf(pz) pk=@sp else pz=@sp pk=@sp endif return pz return pk endfunc private: complex pk complex c complex func Iterate(complex pz) pk=@p1*@bf(pz/pk)+@p2 pk=pk^2+c pz=pk*pz+@p3*c pk=pz*pk+@p4*c return pz return pk endfunc default: title="Bivar X 58" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Bivar Parameter 1" default=(1,0) endparam param p2 caption="Bivar Parameter 2" default=(0,0) endparam param p3 caption="Pixel Parameter 1" default=(1,0) endparam param p4 caption="Pixel Parameter 2" default=(1,0) endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam func sf caption="Start Function" default=ident() visible=@sv!=2 endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorBoxLite(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=fn1(fn2(pz)) c=fn2(@c) else fpixel=pz c=fn3(fn4(fpixel)) if @st==0 pz=fn4(@sp) else pz=fn4(pz) endif endif i2=0 i3=0 return pz endfunc private: float values[#maxiter] int i int seed complex c int i2 int i3 complex func Iterate(complex pz) while i3<@iter i3=i3+1 if @a==true && @av==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) else pz=@zp1*pz+@zp2 endif pz=pz+@afp*@aff(pz) if @a==true && @av==4 float x=real(pz)+values[i2] float y=imag(pz)+values[i2] else float x=real(pz) float y=imag(pz) endif if x>@p2 x=2*@p2-x elseif x<-@p2 x=-2*@p2-x endif if y>@p3 y=2*@p3-y elseif y<-@p3 y=-2*@p3-y endif if @a==true && @av==5 x=x*@p4+values[i2] y=y*@p4+values[i2] else x=x*@p4 y=y*@p4 endif if @a==true && @av==3 pz=(x+flip(y))+@ap*@af(values[i2]) else pz=x+flip(y) endif if @a==true && @av==0 pz=(@p1*pz)^@pow+c+@ap*@af(values[i2]) elseif @a==true && @av==2 pz=(@p1*pz)^@pow+c*@ap*@af(values[i2]) else pz=(@p1*pz)^@pow+c endif i2=i2+1 endwhile pz=@adj*pz return pz endfunc default: title="Aleator Box Lite" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param a caption="Aleator" default=false endparam param av caption="Aleator Variant" enum="1""2""3""4""5""6" visible=@a==true endparam param ap caption="Aleator Parameter" default=(1,0) visible=@a==true && @av!=4 && @av!=5 endparam func af caption="Aleator Function" default=ident() visible=@a==true && @av!=4 && @av!=5 endfunc param seed caption="Random Seed" default=12345678 visible=@a==true endparam param iter caption="Iterations" default=5 endparam param c caption="Julia Seed" default=(1,1) visible=@jm==0 endparam param p1 caption="Box Parameter 1" default=(1,1) endparam param p2 caption="Box Parameter 2" default=1.0 endparam param p3 caption="Box Parameter 3" default=1.0 endparam param p4 caption="Box Parameter 4" default=2.0 endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@jm==1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 && @st==0 endparam func fn1 caption="Start Function 1" visible=@jm==0 default=ident() endfunc func fn2 caption="Start Function 2" default=ident() visible=@jm==0 endfunc func fn3 caption="Pixel Function 1" visible=@jm==1 default=ident() endfunc func fn4 caption="Pixel Function 2" default=ident() visible=@jm==1 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(1,0) endparam param @afp caption="Add Func Parameter" default=(0,0) endparam func aff caption="Add Func Function" default=recip() visible=@afp!=0 endfunc param adj caption="Adjustment" default=1.02 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) pz=pz+@sp1/pz+@sp2*(pz-1i)/(pz+1i) i2=0 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex func Iterate(complex pz) pz=@p3*fn2(pz)+@p4 pz=pz+@p5/pz pz=pz+@p6*sqr(pz) pz=pz+@p7*pz^2*(pz-@p8)/(1-@p8*pz) if @v==0 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2)*@p1+values[i2] else pz=(pz+@p2)*@p1-values[i2] endif elseif @v==1 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2)*@p1-values[i2] else pz=(pz+@p2)*@p1+values[i2] endif elseif @v==2 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1+values[i2] else pz=(pz+@p2-values[i2])*@p1-values[i2] endif elseif @v==3 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1-values[i2] else pz=(pz+@p2+values[i2])*@p1+values[i2] endif elseif @v==4 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1+values[i2] else pz=(pz+@p2+values[i2])*@p1-values[i2] endif elseif @v==5 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1-values[i2] else pz=(pz+@p2-values[i2])*@p1+values[i2] endif elseif @v==6 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2+values[i2])*@p1 else pz=(pz+@p2-values[i2])*@p1 endif elseif @v==7 if real(fn4(pz))*imag(@p1)+real(@p1)*imag(fn4(pz))>=0 pz=(pz-@p2-values[i2])*@p1 else pz=(pz+@p2+values[i2])*@p1 endif endif i2=i2+1 return pz endfunc default: title="Aleator Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp1 caption="Start Parameter 1" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn4 caption="Barnsley Function" default=ident() endfunc param p1 caption="Barnsley Parameter 1" default=(1,1) endparam param p2 caption="Barnsley Parameter 2" default=(0.65,1) endparam param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param p5 caption="Add Recip Parameter" default=(0,0) endparam param p6 caption="Add Sqr Parameter" default=(0,0) endparam param p7 caption="Add Munster Parameter 1" default=(0,0) endparam param p8 caption="Add Munster Parameter 2" default=(2,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Alizogorshment2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1/log(@pow) b=log(log(@bail)) endfunc float func ResultIndex(complex pz) float c=0.0 pz=@zp1*(fn1(pz))+@zp2 if @V=="Chirikov Mod" pz=real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))+flip(real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))-real(pz)) elseif @V=="Circle Map" pz=pz+(@p1-3)-@p2*sin(pz) elseif @V=="Cissoid of Zahradnik" pz=@p3*real(pz)^2+2*@p4*real(pz)*imag(pz)+(@p5+1)*imag(pz)^2-2*@p1*real(pz)-2*@p2*imag(pz) elseif @V=="Clifford" pz=sin((@p1+1)*imag(pz))+@p2*cos((@p1+1)*real(pz))+flip(sin(@p3*real(pz))+@p4*cos(@p3*imag(pz))) elseif @V=="Cubic of Apollonius" pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+(@p2+2)^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @V=="Curve of Rosillo" pz=imag(pz)^2*(@p3-real(pz))^2-(@p2-real(pz))^2*((@p1+1.5)^2-real(pz)^2) elseif @V=="de Jong" pz=sin(@p1*imag(pz))-cos(@p2*real(pz))+flip(sin((@p3-3)*real(pz))-cos(@p4*imag(pz))) elseif @V=="Devil's Curve" pz=imag(pz)^4-real(pz)^4-@p1^2*imag(pz)^2+@p2^2*real(pz)^2 elseif @V=="Hamilton" pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V=="Hamilton Torus" pz=-sin(imag(pz))*(2-@p1)+flip(sin(real(pz))*@p1) elseif @V=="Kam Torus" pz=real(pz)*cos(@p1)+(real(pz)^2-imag(pz))*sin(@p1)+flip(real(pz)*sin(@p1)-(real(pz)^2-imag(pz))*cos(@p1)) elseif @V=="Kan" x=@p3*sin(imag(pz)+sin(@p1*imag(pz))) y=@p4*sin(real(pz)+sin((@p2+1)*real(pz))) pz=x+flip(y) elseif @V=="Kaplan-Yorke" pz=real(@p1)*real(pz)%1+flip(-@p2*imag(pz)+cos(2*pi*real(pz))) elseif @V=="Latoocarfian" pz=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*sin(@p3*imag(pz))) elseif @v=="Magus 1" pz=(@p1*cos(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*cos(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) elseif @V=="Magus 2" pz=(@p1*tan(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*tan(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) elseif @V=="Magus 3" pz=(real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))+flip((real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))-(real(pz)%(2*pi))) elseif @V=="Magus 4" if imag(pz)>0.5 pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz)-2*@p3)) elseif real(pz)>0.5 pz=cos(2*@p1*real(pz)-2*@p3+flip(2*@p2*imag(pz))) else pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz))) endif elseif @V=="Magus 5" pz=@p1^2*(real(pz)^2-imag(pz)^2)^2-@p1*sin(real(pz)^2+imag(pz)^2)^2-real(pz)^2*imag(pz)^2 elseif @V=="Magus 6" x=@p1*sin(real(pz)*cos(imag(pz)))-@p2*cos(real(pz)*sin(imag(pz))) y=@p1*cos(imag(pz)*sin(real(pz)))+@p2*sin(imag(pz)*cos(real(pz))) pz=x+flip(y) elseif @V=="Magus 7" x=real(pz)+@p1+(@p2+1)*sin(real(pz)^2-imag(pz)^2) y=imag(pz)+@p3+(@p2+1)*sin(real(pz)^2+imag(pz)^2) pz=x+flip(y) elseif @V=="Magus 8" x=tan(sin(@p1*imag(pz)))+(sin(@p1*real(pz)))^2 y=tan(sin(@p2*real(pz)))+(sin(@p2*imag(pz)))^2 pz=x+flip(y) elseif @V=="Magus 9" pz=real(pz)*sin(2*imag(pz))+@p1*cos(real(pz))+flip(imag(pz)*cos(2*real(pz))+@p2*cos(imag(pz))) elseif @V=="Magus 10" pz=@p3*real(pz)-imag(pz)-cotan(real(pz))*(@p1*real(pz)^2+@p2*imag(pz)^2)+flip(real(pz)+@p4*imag(pz)-cotan(imag(pz))*(@p2*real(pz)^2+@p1*imag(pz)^2)) elseif @V=="Magus 11" pz=sin(@p1*imag(pz))+(cos(@p1*real(pz)))^2+(sin(@p1*imag(pz)))^3+flip(sin(@p2*real(pz))+(cos(@p2*imag(pz)))^2+(sin(@p2*real(pz)))^3) elseif @V=="Magus 12" x=tan(cos(@p1*imag(pz)))+(cos(@p1*real(pz)))^2 y=tan(cos(@p2*real(pz)))+(cos(@p2*imag(pz)))^2 pz=x+flip(y) elseif @V=="Pharaoh" x=-imag(pz)+@p1*cos(real(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p3 y=real(pz)+@p2*cos(imag(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p4-2 pz=x+flip(y) elseif @V=="Polyharmonic Pendulum" pz=imag(pz)+flip(-@p1*sin(real(pz))-@p2*sin(3*real(pz))+@p3*sin(@p4)) elseif @V=="Popcorn" pz=real(pz)-@p1*sin(imag(pz)+tan((@p2+(-1,1))*imag(pz)))+flip(imag(pz)-@p1*sin(real(pz)+tan((@p2+(-1,1))*real(pz)))) elseif @V=="Sine-Sine" pz=sin(real(pz))-sin(2*imag(pz))+flip(real(pz)) elseif @V=="Sinus Chain" pz=imag(pz)^2-abs(sin(real(pz))+@p1*sin(2*real(pz))) elseif @V=="Svensson" pz=(@p1+1)*sin(@p2*real(pz))-sin(@p3*imag(pz))+flip(@p4*cos(@p2*real(pz))-cos(@p3*imag(pz))) elseif @V=="Thorn 3" x=real(pz)/cos(imag(pz))*sin(imag(pz))+real(@p1) y=imag(pz)/sin(real(pz))*cos(real(pz))+imag(@p1) pz=x+flip(y) endif c=real(m_Iterations+a*b-a*log(log(cabs(pz)))) float d=@first float f=@last if @trans=="Power" c=c^(1/@transpow) d=d^(1/@transpow) f=f^(1/@transpow) else c=log(c) d=log(d) f=log(f) endif if c@p7 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float b complex a float index default: title="Alizogorshment 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="Chirikov Mod""Circle Map""Cissoid of Zahradnik"\ "Clifford""Cubic of Apollonius""Curve of Rosillo""de Jong"\ "Devil's Curve""Hamilton""Hamilton Torus""Kam Torus""Kan""Kaplan-Yorke"\ "Latoocarfian""Magus 1""Magus 2""Magus 3"\ "Magus 4""Magus 5""Magus 6""Magus 7""Magus 8""Magus 9""Magus 10"\ "Magus 11""Magus 12""Pharaoh""Polyharmonic Pendulum""Popcorn"\ "Sine-Sine""Sinus Chain""Svensson""Thorn 3" default=0 endparam param p1 caption="Variant Parameter" default=(1,0) visible=@V!="Sinus Chain" && @V!="Sine-Sine" endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V=="Circle Map" || @V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Cubic of Apollonius" \ || @V=="Curve of Rosillo" || @V=="de Jong" || @V=="Devil's Curve" || @V=="Hamilton" || @V=="Kan" || @V=="Kaplan-Yorke" || @V=="Latoocarfian" \ || @V=="Magus 1"|| @V=="Magus 2"|| @V=="Magus 4" || @V=="Magus 6" || @V=="Magus 7" || @V=="Magus 8" || @V=="Magus 9" || @V=="Magus 10" \ || @V=="Magus 11" || @V=="Magus 12" || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Popcorn" || @V=="Svensson" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Cubic of Apollonius" || @V=="Curve of Rosillo" \ || @V=="de Jong" || @V=="Kan" || @V=="Latoocarfian" || @V=="Magus 4" || @V=="Magus 7" || @V=="Magus 10" \ || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Svensson" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="de Jong"|| @V=="Kan" || @V=="Latoocarfian" \ || @V=="Magus 10" || @V=="Pharaoh" || @V=="Polyharmonic Pendulum" || @V=="Svensson" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Cissoid of Zahradnik" endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam param rep caption="Repetitions" default=8.0 endparam param first caption="First Iteration" default=1 endparam param last caption="Last Iteration" default=1000 endparam param trans caption="Transfer" enum="Power""Log" default=1 endparam param transpow caption="Transfer Power" default=3.0 visible=@trans==0 endparam param bail caption="Bailout" default=100000.0 endparam param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=1.4 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Yeortion(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @jm==0 pz=((1-@p1)*(pz^3-@p2)+@p1*pz^2)/((1-@p1)*3*pz^2+@p1) elseif @jm==1 pz=(@p2+2.5)*((1-(@p1+2.75))*(pz^3-@pf(fpixel))+(@p1+2.75)*pz^2)/((1-(@p1+2.75))*3*pz^2+(@p1+2.75)) else pz=(@p1+2.5)*((1-@pf(fpixel))*(pz^3-@p2)+@pf(fpixel)*pz^2)/((1-@pf(fpixel))*3*pz^2+@pf(fpixel)) endif return pz endfunc private: complex fpixel default: title="Yeortion" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Yeortion Parameter 1" default=(-1.5,0) endparam param p2 caption="Yeortion Parameter 2" default=(-1.5,0) endparam func sf caption="Start Function" default=ident() visible=@jm==0 endfunc func pf caption="Pixel Function" default=ident() visible=@jm!=0 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_AleatorDemmond(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile i2=0 a=-1.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp2*@zf(pz)+@zp1+@ap*@af(values[i2]) if @F1=="ident" float b=|ident(pz)| elseif @F1=="sin" float b=|sin(pz)| elseif @F1=="sinh" float b=|sinh(pz)| elseif @F1=="asin" float b=|asin(pz)| elseif @F1=="asinh" float b=|asinh(pz)| elseif @F1=="versin" float b=|1-cos(pz)| elseif @F1=="aversin" float b=|acos(1-pz)| elseif @F1=="haversin" float b=|(1-cos(pz))/2| elseif @F1=="ahaversin" float b=|2*asin(sqrt(pz))| elseif @F1=="coversin" float b=|1-sin(pz)| elseif @F1=="acoversin" float b=|asin(1-pz)| elseif @F1=="hacoversin" float b=|(1-sin(pz))/2| elseif @F1=="cos" float b=|cos(pz)| elseif @F1=="cosh" float b=|cosh(pz)| elseif @F1=="acos" float b=|acos(pz)| elseif @F1=="acosh" float b=|acosh(pz)| elseif @F1=="vercos" float b=|1+cos(pz)| elseif @F1=="avercos" float b=|acos(1+pz)| elseif @F1=="havercos" float b=|(1+cos(pz))/2| elseif @F1=="ahavercos" float b=|2*acos(sqrt(pz))| elseif @F1=="covercos" float b=|1+sin(pz)| elseif @F1=="acovercos" float b=|asin(1+pz)| elseif @F1=="hacovercos" float b=|(1+sin(pz))/2| elseif @F1=="tan" float b=|tan(pz)| elseif @F1=="tanh" float b=|tanh(pz)| elseif @F1=="atan" float b=|atan(pz)| elseif @F1=="atanh" float b=|atanh(pz)| elseif @F1=="cotan" float b=|cotan(pz)| elseif @F1=="cotanh" float b=|cotanh(pz)| elseif @F1=="acotan" float b=|atan(1/(pz))| elseif @F1=="acotanh" float b=|atanh(1/(pz))| elseif @F1=="sec" float b=|1/cos(pz)| elseif @F1=="sech" float b=|1/cosh(pz)| elseif @F1=="asec" float b=|acos(1/pz)| elseif @F1=="asech" float b=|acosh(1/pz)| elseif @F1=="cosec" float b=|1/sin(pz)| elseif @F1=="cosech" float b=|1/sinh(pz)| elseif @F1=="acosec" float b=|asin(1/pz)| elseif @F1=="acosech" float b=|asinh(1/pz)| elseif @F1=="exsec" float b=|1/cos(pz)-1| elseif @F1=="aexsec" float b=| acos(1/(pz+1))| elseif @F1=="excosec" float b=|1/sin(pz)-1| elseif @F1=="aexcosec" float b=|asin(1/(pz+1))| elseif @F1=="crd" float b=|2*sin(pz/2)| elseif @F1=="acrd" float b=|2*asin(pz/2)| elseif @F1=="gd" float b=|asin(tanh(pz))| elseif @F1=="agd" float b=|asinh(tan(pz))| elseif @F1=="sinc" float b=|sin(pz)/(pz)| elseif @F1=="sinhc" float b=|sinh(pz)/(pz)| elseif @F1=="cosc" float b=|cos(pz)/(pz)| elseif @F1=="coshc" float b=|cosh(pz)/(pz)| elseif @F1=="tanc" float b=|tan(pz)/(pz)| elseif @F1=="tanhc" float b=|tanh(pz)/(pz)| elseif @F1=="cotanc" float b=|cotan(pz)/(pz)| elseif @F1=="cotanhc" float b=|cotanh(pz)/(pz)| elseif @F1=="secc" float b=|1/(pz*cos(pz))| elseif @F1=="sechc" float b=|1/(pz*cosh(pz))| elseif @F1=="cosecc" float b=| 1/(pz*sin(pz))| elseif @F1=="cosechc" float b=|1/(pz*sinh(pz))| elseif @F1=="sqr" float b=|sqr(pz)| elseif @F1=="sqrt" float b=|sqrt(pz)| elseif @F1=="cube" float b=|pz^3| elseif @F1=="cuberoot" float b=|pz^(1/3)| elseif @F1=="log" float b=|log(pz)| elseif @F1=="colog" float b=|-log(pz)| elseif @F1=="exp" float b=|exp(pz)| elseif @F1=="abs" float b=|abs(pz)| elseif @F1=="cabs" float b=|cabs(pz)| elseif @F1=="conj" float b=|conj(pz)| elseif @F1=="flip" float b=|flip(pz)| elseif @F1=="recip" float b=|recip(pz)| elseif @F1=="logit" float b=| log(pz/(1-pz))| elseif @F1=="expit" float b=|1/(1+exp(-pz))| elseif @F1=="gauss" float b=|exp(-sqr(pz))| elseif @F1=="softplus" float b=|log(1+exp(pz))| elseif @F1=="primecount" float b=|pz/log(pz)| elseif @F1=="ceil" float b=|ceil(pz)| elseif @F1=="floor" float b=|floor(pz)| elseif @F1=="trunc" float b=|trunc(pz)| else float b=|round(pz)| endif b=@adj3*b if b<@adj1 a=b endif i2=i2+1 endfunc float func ResultIndex(complex pz) if @solid if @invert if a>=0 m_Solid=true else index=a/@adj1+@adj2 endif else if a<0 m_Solid=true else index=a/@adj1+@adj2 endif endif else index=a/@adj1+@adj2 endif return index endfunc private: float values[#maxiter] int i int seed int i2 float a float index default: title="Aleator Demmond" int param version caption="Version" default=100 visible=@version<100 endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(0,0) endparam param zp2 caption="Z Parameter 2" default=(1,0) endparam func zf caption="Z Function" default=ident() endfunc param F1 caption="Demmond Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""atanh""cotan""cotanh""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""abs""cabs""conj""flip""recip"\ "logit""expit""gauss""softplus""primecount""ceil""floor""trunc""round" default=0 endparam param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=0.0 endparam param adj3 caption="Adjustment 3" default=1.0 endparam param solid caption="Solid Color" default=true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_AleatorGrinn(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile a=0 b=1 c=0.0 d=0.0 i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @a && @av==0 pz=pz+@ap*@af(values[i2]) endif if @a && @av==3 pz=pz*@ap*@af(values[i2]) endif b=b+1 if @v==0 d=cabs(pz) elseif @v==1 d=cabs(pz+flip(pz)) elseif @v==2 d=cabs(pz-flip(pz)) elseif @v==3 d=cabs(pz-2*flip(pz)) elseif @v==4 d=cabs(pz+conj(pz)) elseif @v==5 d=cabs(pz-2*conj(pz)) elseif @v==6 d=cabs(pz-exp(pz)) elseif @v==7 d=cabs(pz+log(pz)) elseif @v==8 d=cabs(pz+1/acos(pz)) elseif @v==9 d=cabs(pz+1/acosh(pz)) elseif @v==10 d=cabs(pz-2*sqr(pz)) elseif @v==11 d=cabs(pz+cotanh(pz)) elseif @v==12 d=cabs(pz-2*cotanh(pz)) elseif @v==13 d=cabs(pz-2*cotan(pz)) elseif @v==14 d=cabs(pz+atanh(pz)) elseif @v==15 d=cabs(pz+tan(pz)) elseif @v==16 d=cabs(pz-tan(pz)) elseif @v==17 d=cabs(pz-2*tan(pz)) elseif @v==18 d=cabs(pz-cosh(pz)) elseif @v==19 d=cabs(pz-2*cosh(pz)) elseif @v==20 d=cabs(pz+3*cos(pz)) elseif @v==21 d=cabs(pz-sinh(pz)) elseif @v==22 d=cabs(pz-2*sinh(pz)) elseif @v==23 d=cabs(pz-2*sin(pz)) elseif @v==24 d=cabs(pz-3*sin(pz)) elseif @v==25 d=cabs(pz-1/cos(pz)) elseif @v==26 d=cabs(pz-1/acos(pz)) elseif @v==27 d=cabs(pz+1/sqr(pz)) elseif @v==28 d=cabs(pz+log(pz)-flip(pz)) elseif @v==29 d=cabs(pz+log(pz)-cabs(pz)) elseif @v==30 d=cabs(pz+log(pz)-abs(pz)) elseif @v==31 d=cabs(pz+log(pz)-exp(pz)) elseif @v==32 d=cabs(pz+log(pz)-ceil(pz)) elseif @v==33 d=cabs(pz+sqrt(pz)-exp(pz)) elseif @v==34 d=cabs(pz+sqr(pz)-exp(pz)) elseif @v==35 d=cabs(pz+sqr(pz)-sqrt(pz)) elseif @v==36 d=cabs(pz+recip(pz)-exp(pz)) elseif @v==37 d=cabs(pz+recip(pz)-sqr(pz)) elseif @v==38 d=cabs(pz-conj(pz)-sqr(pz)) elseif @v==39 d=cabs(pz-conj(pz)-log(pz)) elseif @v==40 d=cabs(pz-conj(pz)-flip(pz)) elseif @v==41 d=cabs(pz-cabs(pz)-flip(pz)) elseif @v==42 d=cabs(pz-cabs(pz)-log(pz)) elseif @v==43 d=cabs(pz-log(pz)-flip(pz)) endif if @a && @av==1 d=d+cabs(@ap*@af(values[i2])) endif if d>=@adj1 && d<=@adj2 && a==0 a=b c=(d-@adj1)*(@adj3/(@adj2-@adj1)) endif if @a && @av==2 c=c+cabs(@ap*@af(values[i2])) endif i2=i2+1 endfunc float func ResultIndex(complex pz) if @solid if @invert if a<=0 index=c else m_Solid=true endif else if a>0 index=c else m_Solid=true endif endif else index=c endif return index endfunc private: float values[#maxiter] int i int seed int a int b float c float d int i2 float index default: title="Aleator Grinn" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Grinn Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44" endparam param a caption="Aleator" default=true endparam param av caption="Aleator Variant" enum="1""2""3""4" visible=@a==true endparam param seed caption="Random Seed" default=12345678 visible=@a==true endparam param ap caption="Aleator Parameter" default=(1,0) visible=@a==true endparam func af caption="Aleator Function" default=ident() visible=@a==true endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(1,0) endparam func zf caption="Z Function" default=abs() endfunc param @adj1 caption="Adjustment 1" default=0.75 endparam param @adj2 caption="Adjustment 2" default=2.5 endparam param @adj3 caption="Adjustment 3" default=2.0 endparam param solid caption="Solid Color" default=true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SnumLocret(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if k2<=k1 if @v=="1" d=cabs(pz^2*fn3((flip(pz)-@p3)/(1-@p3*flip(pz)))+@p4) elseif @v=="2" d=cabs(pz^2*fn3((cabs(pz)-@p3)/(1-@p3*cabs(pz)))+@p4) elseif @v=="3" d=cabs(pz-fn3((sqr(pz)^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) elseif @v=="4" d=cabs(pz^2*fn3((exp(pz)-@p3)/(1-@p3*exp(pz)))+@p4) elseif @v=="5" d=cabs(pz^2*fn3((sqr(pz)-@p3)/(1-@p3*sqr(pz)))+@p4) elseif @v=="6" d=cabs(pz-fn3((conj(pz)^2-@p3/2)/(2*pz))+@p4) elseif @v=="7" d=cabs(pz^2*fn3((cos(pz)-@p3)/(1-@p3*cos(pz)))+@p4) elseif @v=="8" d=cabs(pz-0.5*fn3((tanh(pz)^4-@p3/2)/(4*sqrt(pz)^3))+@p4) elseif @v=="9" d=cabs(pz+pz^2*fn3((flip(pz)-@p3)/(1-@p3*flip(pz)))+@p4) elseif @v=="10" d=cabs(pz-fn3((pz^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) elseif @v=="11" d=cabs(pz+pz^2*fn3((abs(pz)-@p3)/(1-@p3*abs(pz)))+@p4) elseif @v=="12" d=cabs(pz+pz^2*fn3((cosh(pz)-@p3)/(1-@p3*cosh(pz)))+@p4) elseif @v=="13" d=cabs(pz+pz^2*fn3((cos(pz)-@p3)/(1-@p3*cos(pz)))+@p4) elseif @v=="14" d=cabs(pz^2*fn3((log(pz)-@p3)/(1-@p3*sin(pz)))+@p4) elseif @v=="15" d=cabs(pz^2*fn3((cotanh(pz)-@p3)/(1-@p3*sin(pz)))+@p4) elseif @v=="16" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*cos(pz)+@p3-2))^2+@p4) elseif @v=="17" d=cabs(fn3((pz^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="18" d=cabs(fn3((flip(pz)^2+@p3-1)/(2*exp(pz)+@p3-2))^2+@p4) elseif @v=="19" d=cabs(fn3((flip(pz)^2+@p3-1)/(2*cotanh(pz)+@p3-2))^2+@p4) elseif @v=="20" d=cabs(fn3((exp(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="21" d=cabs(fn3((log(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="22" d=cabs(fn3((sqr(pz)^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="23" d=cabs(fn3((sqr(pz)^2+@p3-1)/(2*cos(pz)+@p3-2))^2+@p4) elseif @v=="24" d=cabs(fn3((tanh(pz)^2+@p3-1)/(2*sqrt(pz)+@p3-2))^2+@p4) elseif @v=="25" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*log(pz)+@p3-2))^2+@p4) elseif @v=="26" d=cabs(fn3((cos(pz)^2+@p3-1)/(2*cosh(pz)+@p3-2))^2+@p4) elseif @v=="27" d=cabs(pz-fn3((pz^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="28" d=cabs(pz-fn3((flip(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="29" d=cabs(pz-fn3((conj(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="30" d=cabs(pz-fn3((abs(pz)^3-@p3/2)/(3*exp(pz)^2))+@p4) elseif @v=="31" d=cabs(pz-fn3((log(pz)^4-@p3/2)/(4*log(pz)^3))+@p4) elseif @v=="32" d=cabs(pz-fn3((pz^4-@p3/2)/(4*log(pz)^3))+@p4) elseif @v=="33" d=cabs(pz+pz^2*fn3((recip(pz)-@p3)/(1-@p3*recip(pz)))+@p4) elseif @v=="34" d=cabs(pz-2*fn3((exp(pz)^4-@p3/2)/(4*cotanh(pz)^3))+@p4) elseif @v=="35" d=cabs(pz-2*fn3((cotanh(pz)^4-5*@p3/2)/(4*recip(pz)^3))+@p4) elseif @v=="36" d=cabs(pz^2*fn3((cosh(pz)-@p3)/(1-@p3*cosh(pz)))+@p4) elseif @v=="37" d=cabs(pz+pz^2*fn3((conj(pz)-@p3)/(1-@p3*conj(pz)))+@p4) elseif @v=="38" d=cabs(pz^2*fn3((abs(pz)-@p3)/(1-@p3*abs(pz)))+@p4) elseif @v=="39" d=cabs(pz-fn3((recip(pz)^(-2)-@p3/2)/(-2*flip(pz)^(-3)))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif else if sqrt(a)/(1+c-b)>=@p7 index=sqrt(a)/(1+c-b) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Snum Locret" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" default=3 endparam param p1 caption="Z Parameter 1" default=(0.5,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Variant Parameter 1" default=(2,0) endparam param p4 caption="Variant Parameter 2" default=(0,0) endparam param p5 caption="Detail" default=4 endparam func fn1 caption="Z Function" default=ident() endfunc func fn3 caption="Variant Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.01 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Yomplad(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=1.0 c=0.0 d=1/log(real(@adj)) f=log(log(100)/2) g=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @S==false pz=@zp1*@zf(pz)+@zp2 else pz=@zp1*abs(@zf(pz))+@zp2 endif if @V==0 pz=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*sin(@p3*imag(pz))) elseif @V==1 pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V==2 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+(sin(@p1*real(pz)))^3+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2+(sin(@p3*imag(pz)))^3) elseif @V==3 pz=@p3*real(pz)^2+2*@p4*real(pz)*imag(pz)+(@p5+1)*imag(pz)^2-2*@p1*real(pz)-2*@p2*imag(pz) elseif @V==4 if imag(pz)>0.5 pz=sin(flip(2*(@p2-1)*imag(pz)-2*@p3)) elseif real(pz)>0.5 pz=sin(2*@p1*real(pz)-2*@p3+flip(2*(@p2-1)*imag(pz))) else pz=sin(2*@p1*real(pz)+flip(2*(@p2-1)*imag(pz))) endif elseif @V==5 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2) elseif @V==6 pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+@p2^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @V==7 pz=sin(@p1*imag(pz))+@p2*cos(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*cos(@p3*imag(pz))) elseif @V==8 pz=@p1*imag(pz)^2-@p2*abs(sin(@p3*real(pz))+0.1*sin(2*real(pz))) elseif @V==9 pz=real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))+flip(real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))-real(pz)) elseif @v==10 pz=real(pz)*(@p1-real(pz)-@p2*imag(pz)+@p3*real(pz)*imag(pz)+imag(pz)^2)+flip(imag(pz)*(-@p1+imag(pz)+@p2*real(pz)-@p3*real(pz)^2-real(pz)*imag(pz))) elseif @V==11 pz=real(pz)-sin(imag(pz)+@p1*sin(@p2*imag(pz)+@p3*sin(@p4*imag(pz))))+flip(imag(pz)-sin(real(pz)+@p1*sin(@p2*real(pz)+@p3*sin(@p4*real(pz))))) elseif @V==12 pz=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+(sin(@p1*imag(pz)))^3+flip(sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2+(sin(@p2*real(pz)))^3) elseif @V==13 pz=sin(@p1*real(pz))-tan((@p2-1.5)*imag(pz))+flip(tan(@p3*real(pz))+sin(@p4*imag(pz))) elseif @V==14 pz=(real(pz)^2-(@p1+0.5)^2)*(real(pz)-(@p1+0.5))^2+(imag(pz)^2-(@p1+0.5)^2)^2 elseif @V==15 pz=(real(pz)^2+imag(pz)^2-2*@p1*real(pz))^2-4*@p1^2*(real(pz)^2+imag(pz)^2) elseif @V==16 pz=(@p2-3.2)*sqrt((real(pz)-@p1)^2+imag(pz)^2)+@p3*sqrt((real(pz)+@p1)^2+imag(pz)^2)-@p4 elseif @V==17 pz=@p1*pz^2*(pz-(@p2+2))/(1-(@p2+2)*pz) elseif @V==18 x=imag(pz) y=-@p1*real(pz)-(@p2+1)*real(pz)^3+@p3 pz=x+flip(y) elseif @V==19 if 0<=real(pz) && real(pz)<0.5 x=2*@p1*real(pz) y=@p2*imag(pz)/2 else x=@p1*(2-2*real(pz)) y=@p2*(1-imag(pz)/2) endif pz=x+flip(y) elseif @V==20 pz=(@p1-3)*(pz-sqrt(-1))/(pz+sqrt(-1))+@p2-0.5 else x=sin(real(pz))-@p1*cos(imag(pz)+@p2*sin(imag(pz)+cos(imag(pz)))) y=sin(imag(pz))+@p1*cos(real(pz)+@p2*sin(real(pz)+cos(real(pz)))) pz=x+flip(y) endif c=cabs(pz) a=b b=b*(abs(2*c)) k=pz endfunc float func ResultIndex(complex pz) a=log(a) b=log(b) b=abs(b/m_Iterations) a=abs(a/(m_Iterations-1)) g=d*f-d*log(log(cabs(k))) if @solid if @invert if g<=b-a+@sca index=a+(b-a)*(g+1) else m_Solid=true endif else if g>b-a+@sca index=a+(b-a)*(g+1) else m_Solid=true endif endif else index=a+(b-a)*(g+1) endif return index endfunc private: complex k float a float b float c float d float f float g float index default: title="Yomplad" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param p1 caption="Variant Parametr 1" default=(1,0) endparam param p2 caption="Variant Parametr 2" default=(1,0) visible=@V!=9 && @V!=14 && @V!=15 endparam param p3 caption="Variant Parametr 3" default=(1,0) visible=@V==0 || @V==2 || @V==3 || @V==4 || @V==6 || @V==7 || \ @V==8 || @V==10 || @V==11 || @V==13 || @V==16 || @V==18 endparam param p4 caption="Variant Parametr 4" default=(1,0) visible=@V==0 || @V==3 || @V==7 || @V==11 || @V==13 || @V==16 endparam param p5 caption="Variant Parametr 5" default=(1,0) visible=@V==3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param adj caption="Adjustment" default=-20.0 endparam param S caption="Symmetrize" default=true endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IteratedFunctionSyndrome25(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p26*pz+@p27 x=real(pz) y=imag(pz) a=(@p1*(x)+@p2)/@p3+flip((@p4*(y)+@p12*x+@p5)/@p6) b=|a-@p25| c=(@p7*x+@p8*y+@p9)/@p10+flip((@p11*y+@p13)/@p14) d=|c-@p32| if real(b)0 float x1=floor(real(c))%256 float y1=floor(imag(c))%256 if x1<0 x1=x1+256 endif if y1<0 y1=y1+256 endif float x2=(x1+1)%256 float y2=(y1+1)%256 float x3=real(c)-floor(real(c)) float y3=imag(c)-floor(imag(c)) float x4=x3-1 float y4=y3-1 float f1=(x1^@pow2%65536+y1)^@pow2%65536 float f2=(x2^@pow2%65536+y1)^@pow2%65536 float f3=(x1^@pow2%65536+y2)^@pow2%65536 float f4=(x2^@pow2%65536+y2)^@pow2%65536 float g1=(f1)^@pow2*0.25%512-256 float g2=(f2)^@pow2*0.25%512-256 float g3=(f3)^@pow2*0.25%512-256 float g4=(f4)^@pow2*0.25%512-256 float g5=(f1+1)^@pow2*0.25%512-256 float g6=(f2+1)^@pow2*0.25%512-256 float g7=(f3+1)^@pow2*0.25%512-256 float g8=(f4+1)^@pow2*0.25%512-256 float h=0.0; h=1/sqrt(sqr(g1)+sqr(g5)) g1=g1*h g5=g5*h h=1/sqrt(sqr(g2)+sqr(g6)) g2=g2*h g6=g6*h h=1/sqrt(sqr(g3)+sqr(g7)) g3=g3*h g7=g7*h h=1/sqrt(sqr(g4)+sqr(g8)) g4=g4*h g8=g8*h float j1=x3*g1+y3*g5 float j2=x4*g2+y3*g6 float j3=x3*g3+y4*g7 float j4=x4*g4+y4*g8 float k1=sqr(x3)*(3-x3*2) float k2=sqr(y3)*(3-y3*2) float k3=j1+k1*(j2-j1) float k4=j3+k1*(j4-j3) if @fn=="abs" a=a+real(abs(k3+k2*(k4-k3)))*d*b elseif @fn=="abs acos log" a=a+real(abs(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs cos log" a=a+real(abs(cos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs floor log" a=a+real(abs(floor(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sin log" a=a+real(abs(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sinh log" a=a+real(abs(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="abs sqr log" a=a+real(abs(sqr(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos acos log" a=a+real(acos(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos ceil" a=a+real(acos(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="acos flip log" a=a+real(acos(flip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos log conj" a=a+real(acos(log(conj(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos log cotan" a=a+real(acos(log(cotan(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos recip" a=a+real(acos(recip(k3+k2*(k4-k3))))*d*b elseif @fn=="acos sin exp" a=a+real(acos(sin(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos sin log" a=a+real(acos(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acos sinh log" a=a+real(acos(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="acosh flip cotanh" a=a+real(acosh(flip(cotanh(k3+k2*(k4-k3)))))*d*b elseif @fn=="asin ceil" a=a+real(asin(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="atanh ceil log" a=a+real(atanh(ceil(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="atanh log" a=a+real(atanh(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cabs sqrt" a=a+real(cabs(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="ceil" a=a+real(ceil(k3+k2*(k4-k3)))*d*b elseif @fn=="ceil log" a=a+real(ceil(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cos log" a=a+real(cos(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cosh conj acos" a=a+real(cosh(conj(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="cotan exp exp" a=a+real(cotan(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="cotanh sqrt" a=a+real(cotanh(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="exp" a=a+real(exp(k3+k2*(k4-k3)))*d*b elseif @fn=="exp acos" a=a+real(exp(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="exp ceil" a=a+real(exp(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="exp exp" a=a+real(exp(exp(k3+k2*(k4-k3))))*d*b elseif @fn=="exp exp exp" a=a+real(exp(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="flip log" a=a+real(flip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="flip sqrt" a=a+real(flip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="floor" a=a+real(floor(k3+k2*(k4-k3)))*d*b elseif @fn=="floor log" a=a+real(floor(log(k3+k2*(k4-k3))))*d*b elseif @fn=="ident" a=a+real(k3+k2*(k4-k3))*d*b elseif @fn=="log" a=a+real(log(k3+k2*(k4-k3)))*d*b elseif @fn=="log acos" a=a+real(log(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="log acos acos" a=a+real(log(acos(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log acos floor" a=a+real(log(acos(floor(k3+k2*(k4-k3)))))*d*b elseif @fn=="log acos recip" a=a+real(log(acos(recip(k3+k2*(k4-k3)))))*d*b elseif @fn=="log ceil exp" a=a+real(log(ceil(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log" a=a+real(log(log(k3+k2*(k4-k3))))*d*b elseif @fn=="log log abs" a=a+real(log(log(abs(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log cos" a=a+real(log(log(cos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log log" a=a+real(log(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log sqr" a=a+real(log(log(sqr(k3+k2*(k4-k3)))))*d*b elseif @fn=="log log sqrt" a=a+real(log(log(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqr" a=a+real(log(sqr(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqr log" a=a+real(log(sqr(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt" a=a+real(log(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqrt acos" a=a+real(log(sqrt(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt log" a=a+real(log(sqrt(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="log sqrt sqrt" a=a+real(log(sqrt(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="recip log" a=a+real(recip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="recip sqrt" a=a+real(recip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="round cos exp" a=a+real(round(cos(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round cotan exp" a=a+real(round(cotan(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round exp exp" a=a+real(round(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="round log" a=a+real(round(log(k3+k2*(k4-k3))))*d*b elseif @fn=="round sinh cotan" a=a+real(round(sinh(cotan(k3+k2*(k4-k3)))))*d*b elseif @fn=="round sinh exp" a=a+real(round(sinh(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sin exp exp" a=a+real(sin(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr acos log" a=a+real(sqr(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr asin log" a=a+real(sqr(asin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr asinh log" a=a+real(sqr(asinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr atan log" a=a+real(sqr(atan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr atanh log" a=a+real(sqr(atanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr cabs log" a=a+real(sqr(cabs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr cotanh log" a=a+real(sqr(cotanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr exp exp" a=a+real(sqr(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr floor log" a=a+real(sqr(floor(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log" a=a+real(sqr(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqr log abs" a=a+real(sqr(log(abs(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log acos" a=a+real(sqr(log(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log flip" a=a+real(sqr(log(flip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log log" a=a+real(sqr(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr log sqr" a=a+real(sqr(log(sqr(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr recip log" a=a+real(sqr(recip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqr tanh log" a=a+real(sqr(tanh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt" a=a+real(sqrt(k3+k2*(k4-k3)))*d*b elseif @fn=="sqrt abs log" a=a+real(sqrt(abs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt acos" a=a+real(sqrt(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt acos log" a=a+real(sqrt(acos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt acosh log" a=a+real(sqrt(acosh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt asin log" a=a+real(sqrt(asin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt asinh log" a=a+real(sqrt(asinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt atan log" a=a+real(sqrt(atan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cabs log" a=a+real(sqrt(cabs(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt ceil log" a=a+real(sqrt(ceil(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cos log" a=a+real(sqrt(cos(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cosh log" a=a+real(sqrt(cosh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt cotan log" a=a+real(sqrt(cotan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt flip log" a=a+real(sqrt(flip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log" a=a+real(sqrt(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt log acos" a=a+real(sqrt(log(acos(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log cosh" a=a+real(sqrt(log(cosh(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log cotanh" a=a+real(sqrt(log(cotanh(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log flip" a=a+real(sqrt(log(flip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log log" a=a+real(sqrt(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log recip" a=a+real(sqrt(log(recip(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt log sqrt" a=a+real(sqrt(log(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt recip log" a=a+real(sqrt(recip(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sin log" a=a+real(sqrt(sin(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sinh log" a=a+real(sqrt(sinh(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt sqrt" a=a+real(sqrt(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt sqrt log" a=a+real(sqrt(sqrt(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="sqrt tan log" a=a+real(sqrt(tan(log(k3+k2*(k4-k3)))))*d*b elseif @fn=="tan exp exp" a=a+real(tan(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn=="tan tan cos" a=a+real(tan(tan(cos(k3+k2*(k4-k3)))))*d*b elseif @fn=="trunc log" a=a+real(trunc(log(k3+k2*(k4-k3))))*d*b endif d=d*0.5 c=c/0.5 i=i-1 endwhile endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if a<=@sca index=(log(a)+@p7)*@p8 else m_Solid=true endif else if a>@sca index=(log(a)+@p7)*@p8 else m_Solid=true endif endif else index=(log(a)+@p7)*@p8 endif return index endfunc private: float a float index default: title="Plazmiki" int param version caption="Version" default=100 visible=@version<100 endparam param Fs caption="Plazmiki Function 1" enum="*pixel""+pixel"\ "abs""abs recip""cabs""conj""cos*""crd""cube""cube+"\ "exp""flip""flip recip""ident""recip""recip abs""recip flip""recip sqr"\ "sin*""smoothstep""softplus""sqr""sqr acos""sqr acosh""sqr log""sqr+" default=13 endparam param fn caption="Plazmiki Function 2" enum="abs""abs acos log""abs cos log""abs floor log"\ "abs sin log""abs sinh log""abs sqr log"\ "acos acos log""acos ceil"\ "acos flip log""acos log conj""acos log cotan"\ "acos recip""acos sin exp""acos sin log""acos sinh log" \ "acosh flip cotanh""asin ceil""atanh ceil log""atanh log"\ "cabs sqrt""ceil""ceil log""cos log""cosh conj acos""cotan exp exp"\ "cotanh sqrt""exp""exp acos""exp ceil""exp exp""exp exp exp"\ "flip log""flip sqrt""floor""floor log"\ "ident""log""log acos""log acos acos"\ "log acos floor""log acos recip""log ceil exp""log log"\ "log log abs""log log cos""log log log""log log sqr""log log sqrt"\ "log sqr""log sqr log""log sqrt""log sqrt acos""log sqrt log"\ "log sqrt sqrt""recip log""recip sqrt""round cos exp""round cotan exp"\ "round exp exp""round log""round sinh cotan""round sinh exp""sin exp exp"\ "sqr acos log""sqr asin log""sqr asinh log""sqr atan log""sqr atanh log"\ "sqr cabs log""sqr cotanh log""sqr exp exp""sqr floor log""sqr log"\ "sqr log abs""sqr log acos""sqr log flip""sqr log log"\ "sqr log sqr""sqr recip log""sqr tanh log""sqrt""sqrt abs log"\ "sqrt acos""sqrt acos log""sqrt acosh log""sqrt asin log""sqrt asinh log"\ "sqrt atan log""sqrt cabs log""sqrt ceil log""sqrt cos log""sqrt cosh log"\ "sqrt cotan log""sqrt flip log""sqrt log""sqrt log acos"\ "sqrt log cosh""sqrt log cotanh""sqrt log flip""sqrt log log"\ "sqrt log recip""sqrt log sqrt""sqrt recip log""sqrt sin log""sqrt sinh log"\ "sqrt sqrt""sqrt sqrt log""sqrt tan log""tan exp exp""tan tan cos"\ "trunc log" default=16 endparam param p2 caption="Plazmiki Parameter 1" default=(1,0) endparam param p3 caption="Plazmiki Parameter 2" default=(0,0) endparam param p7 caption="Adjustment 1" default=1.0 endparam param p8 caption="Adjustment 2" default=0.5 endparam param pow1 caption="Exponent 1" default=4.0 endparam param pow2 caption="Exponent 2" default=2.0 endparam param p4 caption="Iterations" default=1 min=1 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.47 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IFB47(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p14*pz+@p15 float f=real(fn2(pz)) if f<@p4 pz=pz*tanh(@p1)+@p2 endif if @p5<=f pz=pz*asinh(@p1)+@p3 endif endwhile pz=pz*@adj return pz endfunc private: int i default: title="IFB 47" int param version caption="Version" default=100 visible=@version<100 endparam param p14 caption="Z Parameter 1" default=(0.84157,-0.23196) endparam param p15 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="IFB Parameter a" default=(0.57529,1.23961) endparam param p2 caption="IFB Parameter b1" default=(0.76137,-0.132940) endparam param p3 caption="IFB Parameter b2" default=(-0.57765,-0.39647) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param iter caption="Iterations" default=14 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="IFB Function" default=ident() endfunc param adj caption="Adjustment" default=-1.03325 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=50.0 exponential=true endparam } class OM_IFB50(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p6*fn2(pz)+@p7 float a=real(fn3(pz)) if a<@p4 pz=pz*conj(@p1)+@p2 endif if @p5<=a pz=flip(pz)*round(@p1)+@p3 endif endwhile pz=@adj*pz return pz endfunc private: int i default: title="IFB 50" int param version caption="Version" default=100 visible=@version<100 endparam param p6 caption="Z Parameter 1" default=(0.85,-0.5) endparam param p7 caption="Z Parameter 2" default=(0,0.5) endparam param p1 caption="IFB Parameter a" default=(-0.45,1.2) endparam param p2 caption="IFB Parameter b1" default=(-0.65,-0.8) endparam param p3 caption="IFB Parameter b2" default=(0,-0.5) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param iter caption="Iterations" default=15 endparam param adj caption="Adjustment" default=1.142 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB53(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p6*fn2(pz)+@p7 float a=real(fn3(pz))+imag(fn3(pz)) if a<@p4 pz=conj(pz)*flip(@p1)+@p2 endif if @p5<=a pz=flip(pz)*recip(@p1)+@p3 endif endwhile pz=@adj*pz return pz endfunc private: int i default: title="IFB 53" int param version caption="Version" default=100 visible=@version<100 endparam param p6 caption="Z Parameter 1" default=(1.238,0.624) endparam param p7 caption="Z Parameter 2" default=(1.614,-0.839) endparam param p1 caption="IFB Parameter a" default=(0.98,-0.316) endparam param p2 caption="IFB Parameter b1" default=(1.237,-0.234) endparam param p3 caption="IFB Parameter b2" default=(1.069,-1.793) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param iter caption="Iterations" default=20 endparam param adj caption="Adjustment" default=1.11 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB62(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=fn1(cotanh(@p5)) b=fn2(cotan(@p5)) pz=fn4(pz) return pz endfunc private: complex a complex b complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="2" if real(fn3(pz))+imag(fn3(pz))>@p6-2.7 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="3" if real(fn3(atan(pz)))-imag(fn3(atan(pz)))>@p6-1.05 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="4" if real(fn3(asinh(pz)))-imag(fn3(asinh(pz)))>@p6+0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="5" if real(fn3(tanh(pz)))-imag(fn3(tanh(pz)))>@p6-0.44 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="6" if real(fn3(cotanh(pz)))-imag(fn3(cotanh(pz)))>@p6+0.97 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif endif return pz endfunc default: title="IFB 62" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6" endparam param p5 caption="IFB Parameter 1" default=(1,1) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.113158,0.646275) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB77(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=fn1(pz) return pz endfunc private: int i complex func Iterate(complex pz) if @ver=="1" pz=@p6*pz+@p7 float a=real(pz) if @V=="1" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="2" if a<@p4 pz=(sqrt(1i)*pz+1.9+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=flip(sqrt(1i)*pz-0.4+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="3" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="4" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=abs(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="5" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=sqrt(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="6" if a<@p4 pz=(sqrt(1i)*pz+0.5+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=log(sqrt(1i)*pz+0.5+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="7" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=cotan(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="8" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=atanh(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="9" if a<@p4 pz=flip(sqrt(1i)*pz+1.75+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="10" if a<@p4 pz=conj(sqrt(1i)*pz+2.85+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="11" if a<@p4 pz=cotanh(sqrt(1i)*pz+1.38+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+1.38+@p17)*fn2(conj(@p1))+@p3 endif endif pz=conj(pz)*@fn9(flip(@p8))+@p13 else while i<@iter i=i+1 pz=@p6*pz+@p7 float a=real(pz) if @V=="1" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="2" if a<@p4 pz=(sqrt(1i)*pz+1.9+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=flip(sqrt(1i)*pz-0.4+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="3" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="4" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=abs(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="5" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=sqrt(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="6" if a<@p4 pz=(sqrt(1i)*pz+0.5+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=log(sqrt(1i)*pz+0.5+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="7" if a<@p4 pz=(sqrt(1i)*pz+0.3+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=cotan(sqrt(1i)*pz+0.3+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="8" if a<@p4 pz=(sqrt(1i)*pz+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=atanh(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="9" if a<@p4 pz=flip(sqrt(1i)*pz+1.75+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="10" if a<@p4 pz=conj(sqrt(1i)*pz+2.85+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=conj(sqrt(1i)*pz+@p17)*fn2(conj(@p1))+@p3 endif elseif @V=="11" if a<@p4 pz=cotanh(sqrt(1i)*pz+1.38+@p17)*fn2(flip(@p1))+@p2 endif pz=pz*@fn9(atan(@p8))+@p11 if @p5<=a pz=(sqrt(1i)*pz+1.38+@p17)*fn2(conj(@p1))+@p3 endif endif pz=conj(pz)*@fn9(flip(@p8))+@p13 endwhile pz=pz*@adj endif return pz endfunc default: title="IFB 77" int param version caption="Version" default=100 visible=@version<100 endparam param ver caption="Variant 1" enum="1""2" endparam param V caption="Variant 2" enum="1""2""3""4""5""6""7""8""9""10""11" endparam param p1 caption="IFB Parameter a1" default=(-1.324,-0.473) endparam param p8 caption="IFB Parameter a2" default=(0.948,-0.367) endparam param p2 caption="IFB Parameter b1" default=(2.657,0.487) endparam param p11 caption="IFB Parameter b2" default=(-1.099,0.471) endparam param p3 caption="IFB Parameter b3" default=(-0.04,-0.5) endparam param p13 caption="IFB Parameter b4" default=(0,0) endparam param p17 caption="IFB Parameter b5" default=(0,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param iter caption="Iterations" default=18 visible=@ver=="2" endparam param p6 caption="Z Parameter 1" default=(1.118,0.028) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function 1" default=ident() endfunc func fn9 caption="Loop Function 2" default=ident() endfunc param adj caption="Adjustment" default=1.139 visible=@ver=="2" endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IteratedFunctionSyndrome12(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p26*pz+@p27 x=real(pz) y=imag(pz) a=conj((@p1*x+@p2)/@p3+flip((@p4*y+@p5)/@p6)) b=|a-@p25| c=flip((@p7*x+@p8)/@p9+flip((@p10*y+@p11)/@p12)) d=|c-@p25| f=conj((@p13*x+@p14)/@p15+flip((@p16*y+@p17)/@p18)) g=|f-@p25| h=(@p19*x+@p20)/@p21+flip((@p22*y+@p23)/@p24) j=|h-@p25| if real(b)1 b=b/|b| endif elseif @v==17 if real(b)imag(b) b=flip(b) endif elseif @v==19 b=(b-1)/(b+1) elseif @v==20 b=(b^2-b)/(b+1) elseif @v==21 b=(conj(b)-1)/(conj(b)+1) elseif @v==22 b=(exp(b)-1)/(exp(b)+1) elseif @v==23 b=(sqrt(b)-1)/(sqrt(b)+1) elseif @v==24 b=(recip(b)-1)/(cabs(b)+1) elseif @v==25 b=(b-1)/(cosh(b)+1) elseif @v==26 b=(b-1)/(cos(b)+1) elseif @v==27 b=(b-1)/(flip(b)+1) elseif @v==28 b=(flip(b)-1)/(conj(b)+1) elseif @v==29 b=(flip(b)-1)/(cabs(b)+1) elseif @v==30 b=(flip(b)-1)/(abs(b)+1) elseif @v==31 b=(flip(b)-1)/(exp(b)+1) elseif @v==32 b=(conj(b)-1)/(cotanh(b)+1) elseif @v==33 b=(conj(b)-1)/(recip(b)+1) elseif @v==34 b=(cabs(b)-1)/(b+1) elseif @v==35 b=(cabs(b)-1)/(exp(b)+1) elseif @v==36 b=(cabs(b)-1)/(sinh(b)+1) elseif @v==37 b=(cabs(b)-1)/(sin(b)+1) elseif @v==38 b=(abs(b)-1)/(conj(b)+1) elseif @v==39 b=(abs(b)-1)/(exp(b)+1) elseif @v==40 b=(abs(b)-1)/(cotanh(b)+1) elseif @v==41 b=(abs(b)-1)/(cotan(b)+1) elseif @v==42 b=(abs(b)-1)/(recip(b)+1) elseif @v==43 b=(exp(b)-1)/(b+1) elseif @v==44 b=(exp(b)-1)/(tan(b)+1) elseif @v==45 b=(exp(b)-1)/(sinh(b)+1) else b=(sqr(b)-1)/(sinh(b)+1) endif a=@p1*a b=@p2*b a=fn1(a) b=fn1(b) a=fn2(a) b=fn3(b) c=real(b) d=imag(b) f=real(a) g=imag(a) v=f-c w=g-d u=v^2+w^2 if ureal(@sca) || s=imag(@sca)) m_Solid=true else index=s+@adj endif endif else index=s+@adj endif return index endfunc private: int i complex a complex b float c float d float f float g float s float t float u float v float w float index default: title="Maslomowi" int param version caption="Version" default=100 visible=@version<100 endparam param v2 caption="Variant a" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17" endparam param v caption="Variant b" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param p1 caption="Parameter a1" default=(1,0) endparam param p3 caption="Parameter a2" default=(1,0) endparam param p4 caption="Parameter a3" default=(1,0) endparam param p2 caption="Parameter b" default=(1,0) endparam func fn2 caption="Function a1" default=ident() endfunc func fn4 caption="Function a2" default=ident() endfunc func fn3 caption="Function b" default=ident() endfunc func fn1 caption="Function ab" default=ident() endfunc param pow caption="Exponent a" default=1.0 endparam param adj caption="Adjustment 1" default=0.0 endparam param adj2 caption="Adjustment 2" default=1.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Mirethla2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0.0) b=0.0 c=0.0 d=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 float x=real(pz) float y=imag(pz) if @V=="Arcs of Samothrace" a=x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2) elseif @V=="Conchoid of Nicomedes" a=(x-@p2)^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="Coupled Logistic" a=(-@p1)*(@p2+1)*x*(1-x)+(@p1+1)*(@p2+1)*y*(1-y)+flip((-@p1)*(@p2+1)*y*(1-y)+(@p1+1)*(@p2+1)*x*(1-x)) elseif @V=="Cubic of Apollonius" a=(x-2*@p1)*(x^2+y^2)+@p2^2*(cos(2*@p3*x)+sin(2*@p3*y)) elseif @V=="Cycloid" a=x-(@p1+0.25i)*recip(cos(1-y/(@p1+0.25i)))+sqrt(y*(2^(@p1+0.25i)-y)) elseif @V=="de Jong" a=sin((@p1+1)*y)-cos((@p2+1)*x)+flip(sin((@p3+1)*x)-cos((@p4+1)*y)) elseif @V=="Hamilton" a=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="Hamilton Torus" a=-sin(y)*(1-(@p1+0.5))+flip(sin(x)*(1+(@p1+0.5))) elseif @V=="HCA" a=1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)) elseif @V=="Kam Torus" a=x*cos(@p1-0.5+2.75i)+(x^2-y)*sin(@p1-0.5+2.75i)+flip(x*sin(@p1-0.5+2.75i)-(x^2-y)*cos(@p1-0.5+2.75i)) elseif @V=="Kampyle of Eudoxus" a=(@p1+1)^2*x^4-(@p2+0.5)^4*(x^2+y^2) elseif @V=="Klein Quartic" a=(x^2+y^2-(@p2+1)*@p1^2)^2-@p3*@p1*(y-@p1+sqrt(3)*x)*(y-@p1-sqrt(3)*x)*(2*y+@p1) elseif @V=="Latoocarfian" a=sin((@p1+1)*y)+(@p2+1)*sin((@p1+1)*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Lemniscate of Bernoulli" a=(x^2+y^2)^2-(@p1+1)^2*(x^2-y^2) elseif @V=="Lissajous Quadratic" a=@p1^4*y^4-4*@p1^3*@p2*x*y^3+2*@p1^2*@p2*y^3+6*@p1^2*@p2^2*x^2*y^2 \ -4*@p1*@p2^2*x*y^2-2*@p1^3*x*y^2-2*@p1^2*@p2^2*y^2+@p2^2*y^2+@p1^2*y^2 \ -4*@p1*@p2^3*x^3*y+2*@p2^3*x^2*y+4*@p1^2*@p2*x^2*y+4*@p1*@p2^3*x*y \ -2*@p2^3*y-4*@p1^2*@p2*y+@p2^4*x^4-2*@p1*@p2^2*x^3-2*@p2^4*x^2 \ +@p2^2*x^2+@p1^2*x^2+2*@p1*@p2^2*x-@p1^2-@p2^2+@p2^4 elseif @V=="Polyharmonic Pendulum" a=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Popcorn" a=x-@p1*sin(y+tan((@p2+0.2i)*y))+flip(y-@p1*sin(x+tan((@p2+0.2i)*x))) elseif @V=="Svensson" a=(@p1+1)*sin((@p2+1)*x)-sin(@p3*y)+flip(@p4*cos((@p2+1)*x)-cos(@p3*y)) elseif @V=="OM1" a=exp(x)+flip(y-@p1*((@p2*y)-(@p3+1)*(x)^2)) elseif @V=="OM2" a=(@p1+1)^2*y^2-x^2*(y^2-x^2)+(x^2+y^2)^2-2*(@p1+1)^2*(x^2-y^2)+(@p1+1)^4-(@p2+1)^4 elseif @V=="OM3" a=x+@p1*(asin(@p2*y)^2)+flip(y+@p1*(asin(@p2*x)^2)) elseif @V=="OM4" a=x+(@p1+1i)*(tanh((@p2+1i)*y)^2)+flip(y+(@p1+1i)*(cosh((@p2+1i)*x)^2))+x*(x^2+y^2)+((@p1+1i)+1+(@p2+1i))*x^2-((@p1+1i)+1-(@p2+1i))*y^2 elseif @V=="OM5" a=x+@p1*sqr(y+sqr(@p2*y))+flip(y+@p1*sqr(x*sqr(@p2*x))) elseif @V=="OM6" a=x+@p1*asin(y+tan((@p2+1)*y))+flip(y+@p1*asin(x*tan((@p2+1)*x))) elseif @V=="OM7" a=a=x+(@p1-2)*(@p2-0.8)*cos(2*pi*y)+flip(y-((@p1-2)/(@p2-0.8))*sin(2*pi*(x+(@p1-2)*(@p2-0.8)*sin(2*pi*y)))) elseif @V=="OM8" a=(x%(2*pi))+(@p2+1+1i)*(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))+(@p2+1+1i)*flip((x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))-(x%(2*pi))) elseif @V=="OM9" a=@p1*x+flip(-@p1*y+@p2*sin(2*pi*x)) elseif @V=="OM10" a=x-@p2*y+((@p1-0.5)/2*pi)*sin(2*pi*x)+flip(x-@p2*y-((@p1-0.5)/2*pi)*sin(2*pi*x)+x)+x^3+y^3-(@p1-0.5)^3 elseif @V=="OM11" a=@p1*(cabs(y)-x^4)+flip(x-y+@p2*pz) elseif @V=="OM12" a=@p1*flip(y^2-x^2)*@p2*(x-1)*@p3*(2*x-3)-4*@p4*tanh(x^2+y^2-2*x)^2 elseif @V=="OM13" a=@p1*(y^2-x^2)*@p2*(x-1)*@p3*(2*x+3)+4*@p4*(x^2+y^2-2*x) elseif @V=="OM14" a=@p1*(flip(y^2-x^2)*exp(x-1)*flip(2*x+3))+4*@p2*exp(x^2+y^2-2*x) elseif @V=="OM15" a=(x^2+y^2)^3-(@p1+1)^3*x*(x^2-3*y^2)+2*(2*x^2-@p2^2)^2-@p2*(2*y-@p2)^2*(y+@p2) elseif @V=="OM16" a=x^2*(4*x^2-3*(@p1+0.25)^2)+4*(@p1+0.25)^2*y^2*(y^2-(@p1+0.25)^2)+(x^2+y^2)^3+@p2^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@p2^4*y^2-4*@p2^6 elseif @V=="OM17" a=(@p1+1)*x/(1+y^2)+flip(x+(@p2+1)*y)+1-(@p1+1)*sin(x)+(@p2+1)*y+flip(x)+(@p2+2)^2*(x^2+y^2-(@p1+1)*x)^2-(@p1+1)^2*(x^2+y^2)*(x-(@p1+1))^2 elseif @V=="OM18" a=sin((@p1+1)*y)+(@p2+1)*sin((@p1+1)*x)+sin((@p1+1)*y)+(@p2+1)*cos((@p1+1)*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)+sin(@p3*x)+@p4*cos(@p3*y)) elseif @V=="OM19" a=-@p1*x-@p2*x*y+y+flip(-@p3*y-@p4*x^2+@p5*y^2-@p1*x-@p2*x^2+@p3) elseif @V=="OM20" a=(x^2+y^2-2*(@p1-3)*x)^2-4*(@p1-3)^2*sqrt(x^2+y^2)+x^(2/3)+y^(2/3)-@p2 elseif @V=="OM21" a=(x^2+y^2-2*(@p1-3)*x)^2-4*(@p1-3)^2*sin(x^2+y^2)+x^(2/3)+y^(2/3)-@p2 elseif @V=="OM22" a=(@p1+1i)^2*y^2-x^3*((@p1+1i)-x)+y^2-(@p2+2-0.5i)*((@p2+2-0.5i)-x)^3*x^4 endif b=|a| d=b^2 c=@adj1*d k=k+log(c) endfunc float func ResultIndex(complex pz) float s=0.1*@adj2*k/m_Iterations if @solid if (s<=real(@sca) || s>=imag(@sca)) m_Solid=true else index=s endif else index=s endif return index endfunc private: complex a float b float c float d float k float index default: title="Mirethla 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="Arcs of Samothrace""Conchoid of Nicomedes""Coupled Logistic""Cubic of Apollonius""Cycloid""de Jong""Hamilton"\ "Hamilton Torus""HCA""Kam Torus""Kampyle of Eudoxus""Klein Quartic""Latoocarfian""Lemniscate of Bernoulli"\ "Lissajous Quadratic""Polyharmonic Pendulum""Popcorn""Svensson""OM1""OM2""OM3""OM4""OM5""OM6""OM7"\ "OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22" default=0 endparam param p1 caption="Variant Parameter" default=(1,0) visible=@V!="Arcs of Samothrace" endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="Cycloid" && @V!="Hamilton Torus" && @V!="Kam Torus" && @V!="Arcs of Samothrace" && @V!="Lemniscate of Bernoulli" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="de Jong" || @V=="Cubic of Apollonius" || @V=="Klein Quartic" || @V=="Latoocarfian" || @V=="Polyharmonic Pendulum" \ || @V=="Svensson" || @V=="OM1" \ || @V=="OM12" || @V=="OM13" || @V=="OM18" || @V=="OM19" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="de Jong" || @V=="Latoocarfian" || @V=="Polyharmonic Pendulum" || @V=="Svensson" \ || @V=="OM12" || @V=="OM13" || @V=="OM18" || @V=="OM19" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="OM19" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=2.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true endparam } class OM_Mirethla(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0.0) b=0.0 c=0.0 d=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 float x=real(pz) float y=imag(pz) if @V==0 a=pz-@p3*flip(pz^3-1)/(3*pz^2)+@p4 elseif @V==1 a=pz-@p3*cosh(pz^3-1)/sqr(3*pz^2)+@p4 elseif @V==2 a=@p3*(exp(x)+flip(exp(y)))+@p4 elseif @V==3 a=pz-@p3*sqr(pz^3-1)/flip(3*pz^2)+@p4 elseif @V==4 a=@p3*(sqr(x)+flip(cos(y)))+@p4 elseif @V==5 a=pz+@p3*flip(pz)+@p4 elseif @V==6 a=pz+@p3*conj(pz)+@p4 elseif @V==7 a=pz+@p3*cotanh(pz)+@p4 elseif @V==8 a=pz+@p3*cotan(pz)+@p4 elseif @V==9 a=pz+@p3/pz+@p4 elseif @V==10 a=pz+@p3/exp(pz)+@p4 elseif @V==11 a=pz+@p3/sqr(pz)+@p4 elseif @V==12 a=pz+@p3/cos(pz)+@p4 elseif @v==13 a=pz-@p3*conj(pz^3-1)/(3*pz^2)+@p4 elseif @v==14 a=pz-@p3*abs(pz^3-1)/(3*pz^2)+@p4 elseif @v==15 a=pz^2*(cotanh(pz)-(@p3-0.5))/(1-(@p3-0.5)*cotanh(pz))+@p4 elseif @v==16 a=pz-@p3*sqr(pz^3-1)/conj(3*pz^2)+@p4 elseif @v==17 a=pz^2*(cosh(pz)-(@p3-0.5))/(1-(@p3-0.5)*cosh(pz))+@p4 elseif @v==18 a=pz^2*(cos(pz)-(@p3-0.5))/(1-(@p3-0.5)*cos(pz))+@p4 elseif @V==19 a=((pz^2+@p3+1)/(2*pz+@p3))^2+@p4 elseif @V==20 a=((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==21 a=((sqr(pz)^2+@p3+1)/(2*sqr(pz)+@p3))^2+@p4 elseif @V==22 a=((cotanh(pz)^2+@p3+1)/(2*cotanh(pz)+@p3))^2+@p4 elseif @V==23 a=((cotan(pz)^2+@p3+1)/(2*cotan(pz)+@p3))^2+@p4 elseif @V==24 a=((tan(pz)^2+@p3+1)/(2*tan(pz)+@p3))^2+@p4 elseif @V==25 a=((sinh(pz)^2+@p3+1)/(2*sinh(pz)+@p3))^2+@p4 elseif @V==26 a=((sin(pz)^2+@p3+1)/(2*sin(pz)+@p3))^2+@p4 elseif @V==27 a=((recip(pz)^2+@p3+1)/(2*recip(pz)+@p3))^2+@p4 elseif @V==28 a=exp((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==29 a=exp((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==30 a=pz-@p3*sqr(pz^3-1)/(3*pz^2)+@p4 elseif @V==31 a=sqr((pz^2+@p3+1)/(2*pz+@p3))^2+@p4 elseif @V==32 a=sqr((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==33 a=pz-@p3*cosh(pz^3-1)/(3*pz^2)+@p4 elseif @V==34 a=cosh((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==35 a=cosh((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==36 a=pz-@p3*(pz^3-1)/tan(3*pz^2)+@p4 elseif @V==37 a=pz-@p3*sqr(pz^3-1)/sin(3*pz^2)+@p4 elseif @V==38 a=pz-@p3*(pz^3-1)/recip(3*pz^2)+@p4 elseif @V==39 a=recip((sqr(pz)^2+@p3+1)/(2*sqr(pz)+@p3))^2+@p4 elseif @V==40 a=sinh((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 elseif @V==41 a=sinh((exp(pz)^2+@p3+1)/(2*exp(pz)+@p3))^2+@p4 elseif @V==42 a=pz-@p3*cosh(pz^3-1)/recip(3*pz^2)+@p4 elseif @V==43 a=@p3*(x+flip(exp(y)))+@p4 elseif @V==44 a=recip((flip(pz)^2+@p3+1)/(2*flip(pz)+@p3))^2+@p4 elseif @V==45 a=recip((abs(pz)^2+@p3+1)/(2*abs(pz)+@p3))^2+@p4 else a=@p3*(pz-1i)/exp(pz+1i)+@p4 endif b=|a| d=b^2 c=@adj1*d k=k+log(c) endfunc float func ResultIndex(complex pz) if @version<101 if @solid if @invert if 0.1*@adj2*k/m_Iterations>@p7 index=0.1*@adj2*k/m_Iterations else m_Solid=true endif else if 0.1*@adj2*k/m_Iterations<@p7 index=0.1*@adj2*k/m_Iterations else m_Solid=true endif endif else index=0.1*@adj2*k/m_Iterations endif else float s=0.1*@adj2*k/m_Iterations if @solid if (s<=real(@sca) || s>=imag(@sca)) m_Solid=true else index=s endif else index=s endif endif return index endfunc private: complex a float b float c float d float k float index default: title="Mirethla" int param version caption="Version" default=101 visible=@version<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param p1 default=(1,0) endparam param p2 default=(0,0) endparam param p3 default=(1,0) endparam param p4 default=(0,0) endparam param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=2.0 endparam func fn1 caption="Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param p7 caption="Solid Color Adjustment" default=0.6 visible=@solid==true && @version<101 endparam param invert caption="Invert Solid Color" default=false visible=@solid==true && @version<101 endparam param sca caption="Solid Color Adjustment" default=(0,1) visible=@solid==true && @version==101 endparam } class OM_Vescur3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=@p1 b=@p2 c=0.0 d=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 float x=real(pz) float y=imag(pz) if @T=="astroid" d=b-|x^(2/3)+y^(2/3)-a^(2/3)| elseif @T=="bicorn" d=b-|y^2*(a^2-x^2)-(x^2+2*a*y-a^2)^2| elseif @T=="cardioid" d=b-|(x^2+y^2-2*a*x)^2-4*a^2*(x^2+y^2)| elseif @T=="catenary" d=b-|y-a*cosh(x/a)| elseif @T=="cayley's sextile" d=b-|4*(x^2+y^2-a*x)^3-27*a^2*(x^2+y^2)^2| elseif @T=="cissoid of diocles" d=b-|y^2-x^3/(2*a-x)| elseif @T=="conchoid" d=b-|(x-a)^2*(x^2+y^2-a^2*x^2)| elseif @T=="conchoid of de sluze" d=b-|a*(x+a)*(x^2+y^2)-a^2*x^2| elseif @T=="devil" d=b-|y^4-x^4+a*y^2+a*x^2| elseif @T=="double folium" d=b-|(x^2+y^2)^2-4*a*x*y^2| elseif @T=="durer's shell" d=b-|(x^2+x*y+a*x-a^2)^2-(a^2-x^2)*(x-y+a)^2| elseif @T=="figure eight" d=b-|x^4-a^2*(x^2-y^2)| elseif @T=="folium" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="folium of descartes" d=b-|x^3+y^3-3*a*x*y| elseif @T=="hyperbola" d=b-|x^2/a^2-y^2/a^2-1| elseif @T=="kampyle of eudoxus" d=b-|a^2*x^4-a^4*(x^2+y^2)| elseif @T=="kappa" d=b-|y^2*(x^2+y^2)-a^2*x^2| elseif @T=="lamé" d=b-|(x/a)^2+(y/a)^2-1| elseif @T=="lemniscate of bernoulli" d=b-|(x^2+y^2)^2-a^2*(x^2-y^2)| elseif @T=="limacon of pascal" d=b-|(x^2+y^2-2*a*x)^2-a^2*(x^2+y^2)| elseif @T=="line" d=b-|y-a*x-a| elseif @T=="neile's semi-cubical parabola" d=b-|y^3-a*x^2| elseif @T=="newton's diverging parabolas" d=b-|a*y^2-x*(x^2-2*a*x+a)| elseif @T=="parabola" d=b-|y-a*x^2-a*x-a| elseif @T=="pearls of sluze" d=b-|y^2-a*(a-x)^3*x^4| elseif @T=="pear-shaped quartic" d=b-|a^2*y^2-x^3*(a-x)| elseif @T=="pursuit" d=b-|y-a*x^2-log(x)| elseif @T=="quadratic of hippias" d=b-|y-x*cotan(pi*x/(2*a))| elseif @T=="right strophoid" d=b-|y^2-x^2*(a-x)/(a+x)| elseif @T=="serpentine" d=b-|x^2*y+a^2*y-a^2*x| elseif @T=="spiric sections" d=b-|((a-0.5)^2+x^2+y^2)^2-4*(a-0.5)^2*(x^2+(a-0.5)^2)| elseif @T=="tricuspoid" d=b-|(x^2+y^2+12*(a-0.5)*x+9*(a-0.5)^2)^2-4*(a-0.5)*(2*x+3*(a-0.5))^3| elseif @T=="trident of newton" d=b-|x*y-a*x^3-a*x^2-a*x-a| elseif @T=="trifolium" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="trisectrix of maclaurin" d=b-|y^2*(a+x)-x^2*(3*a-x)| elseif @T=="tschirnhaus's cubic" d=b-|3*a*y^2-x*(x-a)^2| elseif @T=="witch of agnesi" d=b-|y*(x^2+a^2)-a^3| elseif @T=="om1" d=b-|y*(x^2+a^2)-a^3+3*a*y^2-x*(x-a)^2| elseif @T=="om2" d=b-|y^2*(a+x)-x^2*(3*a-x)+(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2| elseif @T=="om3" d=b-|x*y-a*x^3-a*x^2-a*x-a+y-a*x-a| elseif @T=="om4" d=b-|y^2-a*(a-x)^3*x^4+x^2*y+a^2*y-a^2*x| elseif @T=="om5" d=b-|y^2-x^2*(a-x)/(a+x)+y-x*cotan(pi*x/(2*a))| elseif @T=="om6" d=b-|y-a*x^2-log(x)+a^2*y^2-x^3*(a-x)| elseif @T=="om7" d=b-|y-a*x^2-a*x-a+a*y^2-x*(x^2-2*a*x+a)| elseif @T=="om8" d=b-|y^3-a*x^2+(x^2+y^2-2*a*x)^2-a^2*(x^2+y^2)| elseif @T=="om9" d=b-|(x^2+y^2)^2-a^2*(x^2-y^2)+(x/a)^2+(y/a)^2-1| elseif @T=="om10" d=b-|y^2*(x^2+y^2)-a^2*x^2+a^2*x^4-a^4*(x^2+y^2)| elseif @T=="om11" d=b-|x^2/a^2-y^2/a^2-1+x^3+y^3-3*a*x*y| elseif @T=="om12" d=b-|(x^2+y^2)*(y^2+x*(x+a))-4*a*x*y^2+x^4-a^2*(x^2-y^2)| elseif @T=="om13" d=b-|(x^2+x*y+a*x-a^2)^2-(a^2-x^2)*(x-y+a)^2+(x^2+y^2)^2-4*a*x*y^2| elseif @T=="om14" d=b-|y^4-x^4+a*y^2+a*x^2+a*(x+a)*(x^2+y^2)-a^2*x^2| elseif @T=="om15" d=b-|(x-a)^2*(x^2+y^2-a^2*x^2)+y^2-x^3/(2*a-x)| elseif @T=="om15" d=b-|4*(x^2+y^2-a*x)^3-27*a^2*(x^2+y^2)^2+y-a*cosh(x/a)| elseif @T=="om16" d=b-|(x^2+y^2-2*a*x)^2-4*a^2*(x^2+y^2)+y^2*(a^2-x^2)-(x^2+2*a*y-a^2)^2| elseif @T=="om17" d=b-|y*(x^2+a^2)-a^3+y^4-x^4+a*y^2+a*x^2| elseif @T=="om18" d=b-|y+sin((a-1.5-1i)*y)+(a-1.5-1i)*cos((a-1.5-1i)*x)+flip(sin((a-1.5-1i)*x)+(a-1.5-1i)*cos((a-1.5-1i)*y)+(a-1.5-1i)*sin(x)+(a-1.5-1i)*y)| elseif @T=="om19" d=b-|x*cos((a-1.2))+(x^2-y)*sin((a-1.2))+(a-1.2)*sin((a-1.2)*x)-sin((a-1.2)*y)+flip((a-1.2)*cos((a-1.2)*x)+cos((a-1.2)*y)+x*sin((a-1.2))-(x^2-y)*cos((a-1.2)))| elseif @T=="om20" d=b-|y+(a-0.25)*(x-x^3/3-y)+flip(x/(a-0.25)+(a-0.25)*(1-x^2)*y-x)| elseif @T=="om21" d=b-|y+x^2-y^2+flip(2*x*y-5*a*y/2+a^2*x+a*y-a*x^3)| elseif @T=="om22" d=b-|2*y+flip(-a*x+a*y-y^3+a*sin(x)+a*y)| elseif @T=="om23" d=b-|1+a*(cabs(x)-y^2)+y+flip(a*x)+y^2-x^2*(a-x)/(a+x)-1.5| elseif @T=="om24" d=b-|x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)+sin(a*y)+a*sin(a*x)+flip(sin(a*x)+a*sin(a*y))| elseif @T=="om25" d=b-|x*exp(a*(1-0.1*x)-a*y)+flip(x*(1-exp(-a*y)))+sin(a*y)+a*sin(a*x)+flip(sin(a*x)+a*sin(a*y))| elseif @T=="om26" d=b-|a*sqrt((x-a)^2+y^2)+a*sqrt((x+a)^2+y^2)-a+(x^2+y^2)^2-2*a^2*(x^2-y^2)+a^4-a^4| elseif @T=="om27" d=b-|(x^2-y^2)^2-a^2*x^2+a^2*y^2+x^4*(x^2+y^2)-(a*x^2-a^3)^2| elseif @T=="om28" d=b-|x^3+y^3-(a-0.25)^3+((a-0.25)^2-x^2)*((a-0.25)^2+y^2)-(a-0.25)^4| elseif @T=="om29" d=b-|2*(a-0.25)^2*x+(1-(a-0.25)^2)*x^2+y^2-(a-0.25)^2+(x^2+y^2)^3+(a-0.25)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*(a-0.25)^4*y^2-4*(a-0.25)^6| elseif @T=="om30" d=b-|((a-0.5)+1)^2*(x^2+y^2-(a-0.5)*x)^2-(a-0.5)^2*(x^2+y^2)*(x-(a-0.5))^2+3*x^2-y^2-(a-0.5)^2| elseif @T=="om31" d=b-|y^2*(a-x)^2-(a-x)^2*(a^2-x^2)+1-a*x^2+y+flip((a-0.5)*x)| elseif @T=="om32" d=b-|(x^2+y^2+12*(a-0.75)*x+9*(a-0.75)^2)-4*(a-0.75)*(2*x+3*(a-0.75))^3+((a-0.75)-0.5)*x^3+(a-0.75)*x+(a-0.75)/2+(a-0.75)*y+flip((a-0.75)*x+(a-0.75)*y)| elseif @T=="om33" d=b-|(x^2+y^2)^3-a^4*x^2+(1-a*x-a*y)*(a*x+a*y)+flip(x)| endif if d>0 if @V==0 c=@p3*d+@p4 elseif @V==1 c=@p3*(d+|#z|)+@p4 elseif @V==2 c=@p3*(d+c)+@p4 elseif @V==3 c=@p3*(abs(c^(2/3)+d^(2/3)-1))+@p4 elseif @V==4 c=@p3*|#z*d+1|+@p4 elseif @V==5 c=@p3*|d-1|+@p4 elseif @V==6 c=@p3*|#z+d-1|+@p4 endif endif endfunc float func ResultIndex(complex pz) if @solid==true if @invert if c<=@sca index=c else m_Solid=true endif else if c>@sca index=c else m_Solid=true endif endif else index=c endif return index endfunc private: complex a float b float c float d float index default: title="Vescur 3" int param version caption="Version" default=100 visible=@version<100 endparam param T caption="Variant 1" enum="astroid""bicorn""cardioid""catenary""cayley's sextile"\ "cissoid of diocles""conchoid""conchoid of de sluze""devil"\ "double folium""durer's shell""figure eight""folium"\ "folium of descartes""hyperbola""kampyle of eudoxus"\ "kappa""lamé""lemniscate of bernoulli""limacon of pascal""line"\ "neile's semi-cubical parabola""newton's diverging parabolas"\ "parabola""pearls of sluze""pear-shaped quartic""pursuit"\ "quadratic of hippias""right strophoid""serpentine"\ "spiric sections""tricuspoid""trident of newton""trifolium"\ "trisectrix of maclaurin""tschirnhaus's cubic""witch of agnesi"\ "om1""om2""om3""om4""om5""om6""om7""om8""om9""om10""om11""om12"\ "om13""om14""om15""om16""om17""om18""om19""om20""om21""om22""om23"\ "om24""om25""om26""om27""om28""om29""om30""om31""om32""om33" endparam param p1 caption="Variant 1 Parameter 1" default=(1,0) endparam param p2 caption="Variant 1 Parameter 2" default=0.25 endparam param V caption="Variant 2" enum="1""2""3""4""5""6""7" endparam func zf caption="Z Function" default=ident() endfunc param zp1 default=(1,0) endparam param zp2 default=(0,0) endparam param p3 caption="Adjustment 1" default=1.0 endparam param p4 caption="Adjustment 2" default=0.0 endparam param @solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Xastisty(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz=log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+pz elseif @Fs=="sqr-" pz=sqr(pz)-pz elseif @Fs=="cube-" pz=pz^3-pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="sin-" pz=sin(pz)-pz elseif @Fs=="cos-" pz=cos(pz)-pz elseif @Fs=="tan-" pz=tan(pz)-pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="recip+" pz=recip(pz)+pz elseif @Fs=="recip-" pz=recip(pz)-pz elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 else pz=pz*3 endif pz=@zp1*pz+@zp2 float x=real(pz) float y=imag(pz) if @V=="I" pz=((@p1-2)-@p2)*cos(x)+@p2*cos(((@p1-2)/@p2-1)*y)+flip(((@p1-2)-@p2)*sin(y)-@p2*sin(((@p1-2)/@p2-1)*x)) elseif @V=="II" pz=((-2*@p1)+@p2)*cos(x)+@p2*cos(((-2*@p1)/@p2+1)*y)+flip(((-2*@p1)+@p2)*sin(y)-@p2*sin(((-2*@p1)/@p2+1)*x)) elseif @v=="III" pz=(@p1+1i)*x-(@p2+0.5)*sin(y)+flip((@p1+1i)-(@p2+0.5)*cos(x)) elseif @V=="IV" pz=(@p1+1i)*cos(imag(pz))^3+flip((@p1+1i)*sin(real(pz))^3) elseif @V=="V" pz=@p1*sin(@p4*y+@p3)+flip(@p2*sin(x)) elseif @V=="VI" pz=(@p1-0.5)*(cos(y)+(@p2+1)*x*sin((@p3+1)*y))+flip((@p1-0.5)*(sin(x)-(@p2+1)*y*cos((@p3+1)*x))) elseif @V=="VII" pz=(@p1+0.5)*(cos(x)+@p2*y*sin(@p3*y))+flip((@p1+0.5)*(sin(y)-@p2*x*cos(@p3*x))) elseif @V=="VIII" pz=@p1*sin((@p2-2+@p3)*x)/sin((@p2-2-@p3)*y)+flip(2*@p1*sin((@p2-2)*y)*sin(@p3*y)/sin((@p2-2-@p3)*x)) elseif @V=="IX" pz=(@p1-0.5)/cosh(y)+flip(y-tanh(@p2*x)) elseif @V=="X" pz=@p1*(cos((@p2+1)*y)+(@p3-2)*cos(x))+flip(@p1*sin((@p2+1)*x)) elseif @V=="XI" pz=-@p1+cos(y)+flip(@p2*tan(x)+sin(y)) elseif @V=="XII" pz=(x^2+y^2)^2-4*(@p1+1)*x*y^2+@p2*(x+@p2)*(x^2+y^2)-@p2^2*x^2 elseif @V=="XIII" pz=y^4-x^4+(@p1-0.5)*y^2+(@p1-0.5)*x^2+@p2^2*x^4-@p2^4*(x^2+y^2) elseif @V=="XIV" pz=y^2*(x^2+y^2)-(@p1+1)^2*x^2+@p2^2*y^2-x^3*(@p2-x) elseif @V=="XV" pz=y-@p1*x^2-log(x)+((@p2-0.5)^2+x^2+y^2)^2-4*(@p2-0.5)^2*(x^2+(@p2-0.5)^2) elseif @V=="XVI" pz=x^3+(@p1+2)*x+@p2+y+flip(@p3*x)+@p4*y^2-x^2*(x-@p4) elseif @V=="XVII" pz=((@p1-2)-x-4*x*y)/(1+x^2)+flip((@p2+1+1i)*x*(1-y)/(1+x^2))+(@p1-2)*sin(y+tan((@p2+1+1i)*y))\ +flip((@p1-2)*sin(x+tan((@p2+1+1i)*x))) elseif @V=="XVIII" pz=y^2-recip((x^2+1)^3)+@p1^2*x^4-@p2^4*(x^2+y^2) elseif @V=="XIX" pz=y^2*(x-@p1)^2+x^2*(x-@p2)^2-@p3^2*x^2+@p1^4*y^2-(@p2^2-x^2)^3 elseif @V=="XX" pz=x^2*y^2-@p1^2*(@p1^2-y^2)+y+flip(-@p2*x+@p1*y-y^3) elseif @V=="XXI" pz=1+y-(@p1+1)*cabs(x)+flip((@p2-0.5)*x)+1-(@p1+1)*sin(x)+(@p2-0.5)*y+flip(x) elseif @V=="XXII" pz=x^2*y^2*(x^2+y^2)-(x^2-y^2)^2+4*(@p1-2)*(x-(@p2-0.5))-(y-(@p3-0.5))^2+(x^2+y^2)*\ (x^2+y^2+(@p1-2)*x)^2-(@p2-0.5)^2*(x^2-y^2)^2 elseif @V=="XXIII" pz=(@p1+1i)*x-(@p2+1i)*x*y+flip(-@p3*y+(@p4-0.5)*x*y)+(x^2+y^2)^2+((@p1+1i)-2)*x^2+(@p2+1i)\ *y^2+2*@p3*x+(@p4-0.5)+(x^2+y^2)^2-(@p1+1i)*x*(x^2-y^2) elseif @V=="XXIV" pz=y+flip(-(x+(@p2-0.5-1i)*y^3-(@p1-2-1.5i)*y)/@p3)+y+flip((@p1-2-1.5i)*sin(x)+(@p2-0.5-1i)*y)\ +(@p1-2-1.5i)*x/(1+y^2)+flip(x+(@p2-0.5-1i)*y) elseif @V=="XXV" pz=x-log(((@p1+1)-sqrt((@p1+1)^2-y^2))/y)-sqrt((@p1+1)^2-y^2)-y^2*((@p2-1.5+1i)+x)-x^2*(3*(@p2-1.5+1i)-x) elseif @V=="XXVI" pz=@p1*(y-x^2)+flip(-x^2+2*x*@p1*(y-x^2))+3*@p2*y^2-x*(x-@p2)^2 elseif @V=="XXVII" pz=@p1*(x-x^3/3-y)+flip(x/(@p1+1i))+x*cos(@p2+2)+(x^2-y)*sin(@p2+2)+flip(x*sin(@p2+2)\ -(x^2-y)*cos(@p2+2))+y+sin(x)+flip(@p3-x) elseif @V=="XXVIII" pz=(@p1-0.5+1i)*(x-x^3/3-y)+flip(x/(@p1-0.5+1i))+x*cos(@p1+1.5)+(x^2-y)*sin(@p2+2+1i)+\ flip(x*sin(@p1+1.5)-(x^2-y)*cos(@p2+2+1i))+y+sin(x)+flip(@p1-0.5-x) elseif @V=="XXIX" pz=(y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2+(x^2+y^2)^3+(@p1-0.5+0.5i)^2*(3*x^4-6*x^2*y^2-5*y^4)\ +8*(@p1-0.5+0.5i)^4*y^2-4*(@p1-0.5+0.5i)^6 elseif @V=="XXX" pz=(x^2-y^2)^2-(@p1+1)^2*x^2+(@p2-2+1i)^2*y^2+x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4\ +x-(@p1+1)*sin((@p2-2+1i)*y) elseif @V=="XXXI" pz=y^2*(@p3-x)^2-((@p2+0.5i)-x)^2*(@p1^2-x^2)+(x-(@p2+0.5i))^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="XXXII" pz=sin((@p1-0.5-1i)*y)+(sin((@p1-0.5-1i)*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2)+(x^2+y^2-@p2*(@p1-0.5-1i)^2)^2\ -@p3*(@p1-0.5-1i)*(y-(@p1-0.5-1i)+sqrt(3)*x)*(y-(@p1-0.5-1i)-sqrt(3)*x)*(2*y+(@p1-0.5-1i))+y^2*(x^2+y^2)-@p3^2*x^2 elseif @V=="XXXIII" pz=@p1^4*y^2-(@p1^2-x^2)^3+2*(2*x^2-(@p2-0.5)^2)^2-(@p2-0.5)*(2*y-(@p2-0.5))^2*(y+(@p2-0.5))+x*y*(x^2-y^2)-x^2-y^2 elseif @V=="XXXIV" pz=(x^2+y^2)^2-x^3-y^3+y^2*((@p1-0.5+0.5i)^2-x^2)-(x^2+2*(@p1-0.5+0.5i)*y-(@p1-0.5+0.5i)^2)^2+(x^2+y^2-2*@p2*x)^2-4*@p2^2*(x^2+y^2) elseif @V=="XXXV" pz=sin(@p1*y)+@p3*cos(@p1*x)+flip(sin((@p2+0.5-0.5i)*x)+@p4*cos((@p2+0.5-0.5i)*y))+x*y+@p1*x^3+(@p2+0.5-0.5i)*x^2+@p3*x-@p4 elseif @V=="XXXVI" pz=(x^2+y^2)*(x^2+y^2-@p3^2)^2+4*@p1^2*y^2*(x^2+y^2-@p2^2)+(1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3) elseif @V=="XXXVII" pz=(x^2+y^2)*(x^2+y^2-(@p1-1i)*x-@p2*y)-(@p3+1)^2*x^2*y^2+flip(y+(@p1-1i)*y+@p2*x*(x-1)+(@p3+1)*x*y)+x+y+(@p1-1i)*y+@p2*x*(x-1)+(@p3+1)*x*y elseif @V=="XXXVIII" pz=(1-@p1)*x+y+flip(@p1*(@p2-0.5)*x+(@p3-0.5)*y-@p1*x^3)+x^2*y^2-@p1^2*(x-((@p2-0.5)+1-(@p3-0.5)))*((@p2-0.5)+1+(@p3-0.5)-x) elseif @V=="XXXIX" pz=(2*x^2+y^2)^2+2*sqrt(2)*@p1*x*(2*x^2-3*y^2)+2*@p1^2*(y^2-x^2)+(x^2+y^2-@p1*@p2*x)^2-(x^2+y^2)*(@p2*x-(@p1+1))^2 elseif @V=="XL" pz=((@p1-1.5-0.5i)-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2))+(@p1-1.5-0.5i)*x/(1+y^2)+flip(x+@p2*y) elseif @V=="XLI" pz=y-recip(1+@p1*e^x)+y^2-x^2*log(@p2^2/x^2) elseif @V=="XLII" pz=y-log(sqrt(1-x^2))+x+@p1*sin(y)+flip(y+x+@p1*sin(y))+y^3-@p2*x^2 elseif @V=="XLIII" pz=y^2-x*(x^2+2*(@p1+1i)*x+@p2)+(x^2+y^2)^2-x^2*((@p1+1i)*x+@p2*y) elseif @V=="XLIV" pz=y+flip(-((@p1+1+2i)*x^3+@p2*x+@p3*y)/(@p4+1i))+sin((@p1+1+2i)*y)+@p3*cos((@p1+1+2i)*x)+flip(sin(@p2*x)+(@p4+1i)*cos(@p2*y)) elseif @V=="XLV" pz=x+sqrt((@p2+1)^2-y^2)-@p1*log(((@p2+1)+sqrt((@p2+1)^2-y^2))/y)+(x^2+y^2)^2-(@p1*x+@p2*y)*(x^2-y^2) elseif @V=="XLVI" pz=1-(@p1+1)*x^2+@p2*(y-x)+flip(1-(@p1+1)*y^2+@p2*(x-y))+(x^2-@p2*y)^2-(@p1+1)^2*(x^2-y^2) elseif @V=="XLVII" pz=x^2*y^2-(@p1-0.5)^2*(x-(@p2+1-@p3))*(@p2+1+@p3-x)+(x-2*(@p1-0.5))*(x^2+y^2)+@p2^2*(cos(2*@p3*x)+sin(2*@p3*y)) elseif @V=="XLVIII" pz=y+flip(-@p1*sin(x)-(@p2+1)*sin(3*x)+@p3*sin(@p4))+(x^2+y^2)^2+(@p1-2)*x^2+(@p2+1)*y^2+2*@p3*x+@p4 elseif @V=="XLIX" pz=@p1*x-(@p2+1)*x*y+flip(-@p3*y+@p4*x*y)+x^4*(x^2+y^2)-((@p2+1)*x^2-@p3^3)^2 elseif @V=="L" pz=2*x*y-x^4+y^4+x*(x^2+y^2)-@p1*(x^2+2*y^2)+x*y^2-@p2*x endif float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif float g=1.0 c=c+g*d g=g*0.5 endfunc float func ResultIndex(complex pz) if @solid if @invert if c<=@sca index=(log(c)+1)*0.5 else m_Solid=true endif else if c>@sca index=(log(c)+1)*0.5 else m_Solid=true endif endif else index=(log(c)+1)*0.5 endif return index endfunc private: complex fpixel float c float index default: title="Xastisty" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X""XI""XII""XIII""XIV""XV"\ "XVI""XVII""XVIII""XIX""XX""XXI""XXII""XXIII""XXIV""XXV""XXVI""XXVII"\ "XXVIII""XXIX""XXX""XXXI""XXXII""XXXIII""XXXIV""XXXV""XXXVI""XXXVII"\ "XXXVIII""XXXIX""XL""XLI""XLII""XLIII""XLIV""XLV""XLVI""XLVII""XLVIII""XLIX""L" endparam param p1 caption="Variant Parameter" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="IV" && @V!="XXIX" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="V" || @V=="VI" || @V=="VII" || @V=="VIII" || @V=="X" \ || @V=="XVI" || @V=="XIX" || @V=="XXII" || @V=="XXIV" || @V=="XXIII" \ || @V=="XXVII" || @V=="XXXI" || @V=="XXXII" || @V=="XXXV" || @V=="XXXVI" \ || @V=="XXXVII" || @V=="XXXVIII" || @V=="XLIV" || @V=="XLVII" \ || @V=="XLVIII" || @V=="XLIX" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="V" || @V=="XVI" || @V=="XXIII" || @V=="XXXV" || @V=="XLIV" \ || @V=="XLVIII" || @V=="XLIX" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos"\ "acosh""tan""tanh""atan""atanh""cotan""cotanh"\ "sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip"\ "versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh"\ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec"\ "crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus""primecount"\ "sqr+""cube+""sqr-""cube-""sin+""cos+""tan+""sin-""cos-""tan-""sin*""cos*""tan*"\ "recip+""recip-""+pixel""-pixel"\ "*pixel""/pixel""half""double""triple" default=22 endparam param adj caption="Adjustment" default=1.5 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.385 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Abracadabra2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) c=0.0 d=0.0 f=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*abs(fn1(pz))+@zp2 x=real(pz) y=imag(pz) if @V=="I" a=(@p1-@p2)*cos(x)+@p2*cos((@p1/@p2-1)*y)+flip((@p1-@p2)*sin(x)-@p2*sin((@p1/@p2-1)*y)) elseif @V=="II" a=(@p1+@p2)*cos(x)-@p2*cos((@p1/@p2+1)*y)+flip((@p1+@p2)*sin(x)+@p2*sin((@p1/@p2-1)*y)) elseif @V=="III" a=@p1*(2*cos(x)-cos(2*y))+flip(@p1*(2*sin(x)-sin(2*y))) elseif @V=="IV" a=@p1+cos(x)+flip(@p1*tan(y)+sin(x)) elseif @V=="V" a=@p1+cos(x)+flip(@p1*tan(x)+sin(y)) elseif @V=="VI" a=@p1*(2*cos(x)+cos(2*y))+flip(@p1*(2*sin(x)-sin(2*y))) elseif @V=="VII" a=@p1*cos(2*x)*cos(@p2*y)+flip(@p1*(2+cos(2*x))*sin(@p2*y)) elseif @V=="VIII" a=@p1*cos(x)*(1-2*sin(y)^2)+flip(@p1*sin(x)*(1+2*cos(y)^2)) elseif @V=="IX" a=@p1*2*cos(x)+@p2*cos(3*y)+flip(@p1*sin(3*x)) elseif @V=="X" a=-6*@p1*cos(x)/5+@p1*cos(6*y)/5+flip(-6*@p1*sin(x)/5+@p1*sin(6*y)/5) elseif @V=="XI" a=@p1*(cos(x)+y*sin(y))+flip(@p1*(sin(x)-y*cos(y))) elseif @V=="XII" a=(@p1+@p2)*cos(@p2*x/@p1)-@p3*@p2*cos((1+@p2/@p1)*y)+flip((@p1+@p2)*sin(@p2*x/@p1)-@p3*@p2*sin((1+@p2/@p1)*y)) elseif @V=="XIII" a=@p1*cos(x)*sin(y-@p2)^2/(sin(@p2)^2)+flip(@p1*cos(x-@p2)*sin(y)^2/(sin(@p2)^2)) elseif @V=="XIV" a=2*@p1*cos(x)^2+@p2*cos(y)+flip(2*@p1*cos(x)*sin(x)+@p2*sin(y)) elseif @V=="XV" a=@p1*(3*cos(x)-cos(3*y))+flip(@p1*(3*sin(x)-sin(3*y))) elseif @V=="XVI" a=-@p1+2*@p1*cos(x)*(1+cos(y))+flip(2*@p1*sin(x)*(1-cos(y))) elseif @V=="XVII" a=@p1*sin(y)+flip(@p2*sin(x)^2-cos(y))+cos(x)^2 elseif @V=="XVIII" a=@p1*sin(x)+sin(y)+flip(2*@p2*cos(x)-@p3*sin(y)) endif c=|a| f=c^2 d=@p5*f k=k+log(d) endfunc float func ResultIndex(complex pz) ;m_Solid=true if @solid if @invert if k>@sca index=@p6*k/m_Iterations else m_Solid=true endif else if k<=@sca index=@p6*k/m_Iterations else m_Solid=true endif endif else index=@p6*k/m_Iterations endif return index endfunc private: complex a float c float d float f float k float index default: title="Abracadabra 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X""XI""XII""XIII""XIV""XV""XVI""XVII""XVIII" default=0 endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="Variant Parameter" default=(-1.05,0.8) endparam param p2 caption="Variant Parameter 2" default=(0.85,-0.05) visible=@V=="I" || @V=="II" || @V=="VII" || @V=="IX" || @V=="XII" || @V=="XIII" || @V=="XIV" || @V=="XVII" || @V=="XVIII" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="XII" || @V=="XVIII" endparam param p5 caption="Adjustment 1" default=0.05 endparam param p6 caption="Adjustment 2" default=-0.35 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=-0.15 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation(common.ulb:GradientColoring) { ;This is a modification of Fractional Brownian Motion by Damien Jones (dmj.ucl) public: float func ResultIndex(complex pz) c=pz*@p1+@p2 float d=0.0 float f=1.0 int i=@iter while i>0 float x1=floor(real(c))%256 float y1=floor(imag(c))%256 if x1<0 x1=x1+256 endif if y1<0 y1=y1+256 endif float x2=(x1+1)%256 float y2=(y1+1)%256 float x3=real(c)-floor(real(c)) float y3=imag(c)-floor(imag(c)) float x4=x3-1 float y4=y3-1 float g1=(x1^@pow%(@p4*1000)+y1)^@pow%(@p4*1000) float g2=(x2^@pow%(@p4*1000)+y1)^@pow%(@p4*1000) float g3=(x1^@pow%(@p4*1000)+y2)^@pow%(@p4*1000) float g4=(x2^@pow%(@p4*1000)+y2)^@pow%(@p4*1000) float h1=g1^@pow*0.25%512-256 float h2=g2^@pow*0.25%512-256 float h3=g3^@pow*0.25%512-256 float h4=g4^@pow*0.25%512-256 float h5=(g1+1)^@pow*0.25%512-256 float h6=(g2+1)^@pow*0.25%512-256 float h7=(g3+1)^@pow*0.25%512-256 float h8=(g4+1)^@pow*0.25%512-256 float j=0.0; j=1/sqrt(sqr(h1)+sqr(h5)) h1=h1*j h5=h5*j j=1/sqrt(sqr(h2)+sqr(h6)) h2=h2*j h6=h6*j j=1/sqrt(sqr(h3)+sqr(h7)) h3=h3*j h7=h7*j j=1/sqrt(sqr(h4)+sqr(h8)) h4=h4*j h8=h8*j float k1=x3*h1+y3*h5 float k2=x4*h2+y3*h6 float k3=x3*h3+y4*h7 float k4=x4*h4+y4*h8 float m1=sqr(x3)*(3-x3*2) float m2=sqr(y3)*(3-y3*2) float m3=k1+m1*(k2-k1) float m4=k3+m1*(k4-k3) if @fn=="ident" d=d+(m3+m2*(m4-m3))*f elseif @fn=="abs" d=d+abs(m3+m2*(m4-m3))*f elseif @fn=="sqrt" d=d+real(sqrt(m3+m2*(m4-m3)))*f elseif @fn=="sqr" d=d+sqr(m3+m2*(m4-m3))*f elseif @fn=="ceil" d=d+ceil(m3+m2*(m4-m3))*f elseif @fn=="smoothstep" d=d+(3*(m3+m2*(m4-m3))^2-2*(m3+m2*(m4-m3))^3)*f elseif @fn=="cuberoot" d=d+((m3+m2*(m4-m3))^(1/3))*f elseif @fn=="ceil/acos" d=d+real(ceil(m3+m2*(m4-m3))/acos(m3+m2*(m4-m3)))*f elseif @fn=="exp/acos" d=d+real(exp(m3+m2*(m4-m3))/acos(m3+m2*(m4-m3)))*f elseif @fn=="log/cotan" d=d+real(log(m3+m2*(m4-m3))/cotan(m3+m2*(m4-m3)))*f elseif @fn=="conj/log" d=d+real(conj(m3+m2*(m4-m3))/log(m3+m2*(m4-m3)))*f elseif @fn=="flip/sqrt" d=d+real(flip(m3+m2*(m4-m3))/sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log*abs" d=d+real(log(m3+m2*(m4-m3))*abs(m3+m2*(m4-m3)))*f elseif @fn=="flip*log" d=d+real(flip(m3+m2*(m4-m3))*log(m3+m2*(m4-m3)))*f elseif @fn=="ident^flip" d=d+real(ident(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="ident^abs" d=d+real(ident(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="ident^sqrt" d=d+real(ident(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="flip^acosh" d=d+real(flip(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="flip^sqrt" d=d+real(flip(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="conj^acosh" d=d+real(conj(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="abs^sqrt" d=d+real(abs(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log^flip" d=d+real(log(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="log^log" d=d+real(log(m3+m2*(m4-m3))^log(m3+m2*(m4-m3)))*f elseif @fn=="log^sqrt" d=d+real(log(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="log^acos" d=d+real(log(m3+m2*(m4-m3))^acos(m3+m2*(m4-m3)))*f elseif @fn=="sqr^sqrt" d=d+real(sqr(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="sqr^exp" d=d+real(sqr(m3+m2*(m4-m3))^exp(m3+m2*(m4-m3)))*f elseif @fn=="sqr^abs" d=d+real(sqr(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="cotanh^abs" d=d+real(cotanh(m3+m2*(m4-m3))^abs(m3+m2*(m4-m3)))*f elseif @fn=="cotanh^sqrt" d=d+real(cotanh(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="acos^sin" d=d+real(acos(m3+m2*(m4-m3))^sin(m3+m2*(m4-m3)))*f elseif @fn=="acos^acos" d=d+real(acos(m3+m2*(m4-m3))^acos(m3+m2*(m4-m3)))*f elseif @fn=="acos^acosh" d=d+real(acos(m3+m2*(m4-m3))^acosh(m3+m2*(m4-m3)))*f elseif @fn=="acos^sqrt" d=d+real(acos(m3+m2*(m4-m3))^sqrt(m3+m2*(m4-m3)))*f elseif @fn=="acos^flip" d=d+real(acos(m3+m2*(m4-m3))^flip(m3+m2*(m4-m3)))*f elseif @fn=="acos^floor" d=d+real(acos(m3+m2*(m4-m3))^floor(m3+m2*(m4-m3)))*f elseif @fn=="cotan*sin" d=d+real(cotan(m3+m2*(m4-m3))*sin(m3+m2*(m4-m3)))*f elseif @fn=="sin*cabs" d=d+real(sin(m3+m2*(m4-m3))*cabs(m3+m2*(m4-m3)))*f elseif @fn=="flip+2*ident" d=d+real(flip(m3+m2*(m4-m3))+2*(m3+m2*(m4-m3)))*f elseif @fn=="sin+abs+sqr" d=d+real(sin(m3+m2*(m4-m3))+abs(m3+m2*(m4-m3))+sqr(m3+m2*(m4-m3)))*f elseif @fn=="exp+trunc+ceil" d=d+real(exp(m3+m2*(m4-m3))+trunc(m3+m2*(m4-m3))+ceil(m3+m2*(m4-m3)))*f elseif @fn=="sqr+2*ceil" d=d+real(sqr(m3+m2*(m4-m3))+2*ceil(m3+m2*(m4-m3)))*f elseif @fn=="3*ceil" d=d+real(3*ceil(m3+m2*(m4-m3)))*f elseif @fn=="^(0.1,0.1)" d=d+real((m3+m2*(m4-m3))^(0.1,0.1))*f elseif @fn=="^(0.5,0.5)" d=d+real((m3+m2*(m4-m3))^(0.5,0.5))*f elseif @fn=="^(1,1)" d=d+real((m3+m2*(m4-m3))^(1,1))*f elseif @fn=="^(1,5)" d=d+real((m3+m2*(m4-m3))^(1,5))*f elseif @fn=="^(2,2)" d=d+real((m3+m2*(m4-m3))^(2,2))*f elseif @fn=="^(1.5,-0.5)" d=d+real((m3+m2*(m4-m3))^(1.5,-0.5))*f elseif @fn=="log^(0,1)" d=d+real(log(m3+m2*(m4-m3))^(0,1))*f elseif @fn=="acosh^0.85" d=d+real(acosh(m3+m2*(m4-m3))^0.85)*f elseif @fn=="exp^(0.15,-5)" d=d+real(exp(m3+m2*(m4-m3))^(0.15,-5))*f elseif @fn=="cube" d=d+(m3+m2*(m4-m3))^3*f elseif @fn=="power4" d=d+(m3+m2*(m4-m3))^4*f elseif @fn=="cosh exp" d=d+real(cosh(exp(m3+m2*(m4-m3))))*f elseif @fn=="cosh sqrt" d=d+real(cosh(sqrt(m3+m2*(m4-m3))))*f elseif @fn=="tan cosh" d=d+real(tan(cosh(m3+m2*(m4-m3))))*f elseif @fn=="sin cosh" d=d+real(sin(cosh(m3+m2*(m4-m3))))*f elseif @fn=="acos abs" d=d+real(acos(abs(m3+m2*(m4-m3))))*f elseif @fn=="log acosh" d=d+real(log(acosh(m3+m2*(m4-m3))))*f elseif @fn=="sqrt acosh" d=d+real(sqrt(acosh(m3+m2*(m4-m3))))*f elseif @fn=="atanh log" d=d+real(atanh(log(m3+m2*(m4-m3))))*f elseif @fn=="acos recip" d=d+real(acos(recip(m3+m2*(m4-m3))))*f elseif @fn=="acos exp" d=d+real(acos(exp(m3+m2*(m4-m3))))*f elseif @fn=="acos acos" d=d+real(acos(acos(m3+m2*(m4-m3))))*f elseif @fn=="exp exp flip" d=d+real(exp(exp(flip(m3+m2*(m4-m3)))))*f elseif @fn=="exp exp abs" d=d+real(exp(exp(abs(m3+m2*(m4-m3)))))*f elseif @fn=="exp exp sqr" d=d+real(exp(exp(sqr(m3+m2*(m4-m3)))))*f elseif @fn=="log log log" d=d+real(log(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="sqrt sqrt sqrt" d=d+real(sqrt(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="log log acosh" d=d+real(log(log(acosh(m3+m2*(m4-m3)))))*f elseif @fn=="sqrt log log" d=d+real(sqrt(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="atanh log log" d=d+real(atanh(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="atan log log" d=d+real(atan(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="acosh log log" d=d+real(acosh(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="acos log log" d=d+real(acos(log(log(m3+m2*(m4-m3)))))*f elseif @fn=="asin log log" d=d+real(asin (log(log(m3+m2*(m4-m3)))))*f elseif @fn=="cos sqrt sqrt" d=d+real(cos(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="cosh sqrt sqrt" d=d+real(cosh(sqrt(sqrt(m3+m2*(m4-m3)))))*f elseif @fn=="round sqrt sqrt" d=d+real(round(sqrt(sqrt(m3+m2*(m4-m3)))))*f endif f=real(fn1(f))^@p6*@p3 c=c*sqrt(-1)/@p3 i=i-1 endwhile if @solid if @invert if d<@sca index=real(fn2(d+1))*@p5+@F*real(#random)/5 else m_Solid=true endif else if d>=@sca index=real(fn2(d+1))*@p5+@F*real(#random)/5 else m_Solid=true endif endif else index=real(fn2(d+1))*@p5+@F*real(#random)/5 endif return index endfunc private: float index default: title="Texturation" int param version caption="Version" default=100 visible=@version<100 endparam param fn caption="Variant" enum="ident""abs""sqrt""sqr""ceil""smoothstep"\ "cuberoot""ceil/acos""exp/acos""log/cotan"\ "conj/log""flip/sqrt""log*abs""flip*log"\ "ident^flip""ident^abs""ident^sqrt""flip^acosh"\ "flip^sqrt""conj^acosh""abs^sqrt""log^flip"\ "log^log""log^sqrt""log^acos"\ "sqr^sqrt""sqr^exp""sqr^abs""cotanh^abs"\ "cotanh^sqrt""acos^sin""acos^acos"\ "acos^acosh""acos^sqrt""acos^flip""acos^floor"\ "cotan*sin""sin*cabs""flip+2*ident""sin+abs+sqr"\ "exp+trunc+ceil""sqr+2*ceil""3*ceil"\ "^(0.1,0.1)""^(0.5,0.5)""^(1,1)""^(1,5)""^(2,2)"\ "^(1.5,-0.5)""log^(0,1)""acosh^0.85""exp^(0.15,-5)"\ "cube""power4""cosh exp""cosh sqrt""tan cosh""sin cosh"\ "acos abs""log acosh""sqrt acosh""atanh log""acos recip"\ "acos exp""acos acos""exp exp flip""exp exp abs""exp exp sqr"\ "log log log""sqrt sqrt sqrt""log log acosh""sqrt log log"\ "atanh log log""atan log log""acosh log log""acos log log"\ "asin log log""cos sqrt sqrt""cosh sqrt sqrt""round sqrt sqrt" endparam param p1 caption="Rotozoom" default=(1,0) endparam param p2 caption="Offset" default=(0,0) endparam param p3 caption="Parameter 1" default=0.5 endparam param p4 caption="Parameter 2" default=0.1 endparam param p5 caption="Parameter 3" default=2.0 endparam param iter caption="Iterations" default=7 min=1 endparam param pow caption="Exponent 1" default=2.0 endparam param p6 caption="Exponent 2" default=1.0 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation2(common.ulb:GradientColoring) { ;This is a modification of Plasma by Mark Townsend (mt.ucl) public: float func ResultIndex(complex pz) int i=0 float a=0 float b=1.0 c=pz*@p1+@p2 while i<@iter float x1=floor(real(c)) float x2=x1+1 float x3=real(c)-floor(real(c)) float x4=x3-1 float y1=floor(imag(c)) float y2=y1+1 float y3=imag(c)-floor(imag(c)) float y4=y3-1 if x1<0 x1=x1+802 endif if x2<0 x2=x2+802 endif if y1<0 y1=y1+802 endif if y2< 0 y2=y2+802 endif float d=x3*x3*(3-2*x3) float f=y3*y3*(3-2*y3) float g1=(x1^2*238%(@p5*10000)+y1)^2%(@p5*10000) float g2=(x1^2*238%(@p5*10000)+y2)^2%(@p5*10000) float g3=(x2^2*238%(@p5*10000)+y1)^2%(@p5*10000) float g4=(x2^2*238%(@p5*10000)+y2)^2%(@p5*10000) float h1=g1^2*521%(@p5*10000)/4%1503-755 float h2=g2^2*521%(@p5*10000)/4%1503-755 float h3=g3^2*521%(@p5*10000)/4%1503-755 float h4=g4^2*521%(@p5*10000)/4%1503-755 float h5=(g1+1)^2*8066%(@p5*10000)/4%1503-802 float h6=(g2+1)^2*8066%(@p5*10000)/4%1503-802 float h7=(g3+1)^2*8066%(@p5*10000)/4%1503-802 float h8=(g4+1)^2*8066%(@p5*10000)/4%1503-802 float j=sqrt(h1^2+h5^2) h1=h1/j h5=h5/j j=sqrt(h2^2+h6^2) h2=h2/j h6=h6/j j=sqrt(h3^2+h7^2) h3=h3/j h7=h7/j j=sqrt(h4^2+h8^2) h4=h4/j h8=h8/j float k1=x3*h1+y3*h5 float k2=x4*h3+y3*h7 float k3=k1+d*(k2-k1) float k4=x3*h2+y4*h6 float k5=x4*h4+y4*h8 float k6=k4+d*(k5-k4) if @fn=="ident" a=a+real(sqr(ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos" a=a+real(sqr(acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip" a=a+real(sqr(flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ceil" a=a+real(sqr(ceil(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp" a=a+real(sqr(exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor" a=a+real(sqr(floor(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="softplus" a=a+real(sqr(log(1+exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="gauss" a=a+real(sqr(exp(-sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="smoothstep" a=a+real(sqr(3*sqr(k3+f*(k6-k3))-2*(k3+f*(k6-k3))^3))*real(fn1(b)) elseif @fn=="sqr+" a=a+real(sqr(sqr(k3+f*(k6-k3))+(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="cuberoot" a=a+real(sqr((k3+f*(k6-k3))^(1/3)))*real(fn1(b)) elseif @fn=="triple" a=a+real(sqr((k3+f*(k6-k3))*3))*real(fn1(b)) elseif @fn=="ident^sqrt" a=a+real(sqr(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ident^abs" a=a+real(sqr(ident(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="ident^flip" a=a+real(sqr(ident(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^ceil" a=a+real(sqr(acos(k3+f*(k6-k3))^ceil(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^ident" a=a+real(sqr(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^flip" a=a+real(sqr(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^exp" a=a+real(sqr(acos(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^acos" a=a+real(sqr(acos(k3+f*(k6-k3))^acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos^acosh" a=a+real(sqr(acos(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^ident" a=a+real(sqr(flip(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^flip" a=a+real(sqr(flip(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^sqrt" a=a+real(sqr(flip(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="flip^sqr" a=a+real(sqr(flip(k3+f*(k6-k3))^sqr(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^exp" a=a+real(sqr(conj(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^sqrt" a=a+real(sqr(conj(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="conj^acosh" a=a+real(sqr(conj(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^flip" a=a+real(sqr(abs(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^abs" a=a+real(sqr(abs(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="abs^sqrt" a=a+real(sqr(abs(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^ident" a=a+real(sqr(exp(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^abs" a=a+real(sqr(exp(k3+f*(k6-k3))^abs(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^exp" a=a+real(sqr(exp(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^acosh" a=a+real(sqr(exp(k3+f*(k6-k3))^acosh(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="exp^acos" a=a+real(sqr(exp(k3+f*(k6-k3))^acos(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="log^log" a=a+real(sqr(log(k3+f*(k6-k3))^log(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="log^sqr" a=a+real(sqr(log(k3+f*(k6-k3))^sqr(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqrt^ident" a=a+real(sqr(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqrt^sqrt" a=a+real(sqr(sqrt(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqr^ident" a=a+real(sqr(sqr(k3+f*(k6-k3))^ident(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="sqr^flip" a=a+real(sqr(sqr(k3+f*(k6-k3))^flip(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor^sqrt" a=a+real(sqr(floor(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="floor^exp" a=a+real(sqr(floor(k3+f*(k6-k3))^exp(k3+f*(k6-k3))))*real(fn1(b)) elseif @fn=="acos acos" a=a+real(sqr(acos(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos ceil" a=a+real(sqr(acos(ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos floor" a=a+real(sqr(acos(floor(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqr acos" a=a+real(sqr(sqr(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt abs" a=a+real(sqr(sqrt(abs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp cos" a=a+real(sqr(exp(cos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp ceil" a=a+real(sqr(exp(ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="recip acos" a=a+real(sqr(recip(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil asin" a=a+real(sqr(ceil(asin(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acos" a=a+real(sqr(ceil(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="floor acos" a=a+real(sqr(floor(acos(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="acos ident^sqrt" a=a+real(sqr(acos(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqr ident^sqrt" a=a+real(sqr(sqr(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="round ident^sqrt" a=a+real(sqr(round(ident(k3+f*(k6-k3))^sqrt(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil ident^ident" a=a+real(sqr(ceil(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^ident" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acosh^ident" a=a+real(sqr(ceil(acosh(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil ident^flip" a=a+real(sqr(ceil(ident(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^ceil" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^ceil(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^conj" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^conj(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^cabs" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^cabs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil log^sqr" a=a+real(sqr(ceil(log(k3+f*(k6-k3))^sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="ceil acosh^sqr" a=a+real(sqr(ceil(acosh(k3+f*(k6-k3))^sqr(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="trunc ident^ident" a=a+real(sqr(trunc(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="trunc log^ident" a=a+real(sqr(trunc(log(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan ident^ident" a=a+real(sqr(atan(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt sqrt^ident" a=a+real(sqr(sqrt(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^ident" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh exp^ident" a=a+real(sqr(asinh(exp(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh sqrt^ident" a=a+real(sqr(asinh(sqrt(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh floor^ident" a=a+real(sqr(asinh(floor(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^cabs" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^cabs(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh ident^exp" a=a+real(sqr(asinh(ident(k3+f*(k6-k3))^exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="exp log^log" a=a+real(sqr(exp(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sqrt log^log" a=a+real(sqr(sqrt(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="round log^log" a=a+real(sqr(round(log(k3+f*(k6-k3))^log(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="sin exp^exp" a=a+real(sqr(sin(exp(k3+f*(k6-k3))^exp(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan acos^ident" a=a+real(sqr(atan(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="cotanh acos^ident" a=a+real(sqr(cotanh(acos(k3+f*(k6-k3))^ident(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="atan acos^flip" a=a+real(sqr(atan(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) elseif @fn=="asinh acos^flip" a=a+real(sqr(asinh(acos(k3+f*(k6-k3))^flip(k3+f*(k6-k3)))))*real(fn1(b)) endif b=real(fn3(b))^@pow2*@p3+@p7 c=@p9*c/0.5+(@p4*a)+@p8 i=i+1 endwhile if @solid if @invert if a<@sca index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 else m_Solid=true endif else if a>=@sca index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 else m_Solid=true endif endif else index=real(fn2(a+1))^@pow*@p6+@F*real(#random)/5 endif return index endfunc private: float index default: title="Texturation 2" int param version caption="Version" default=100 visible=@version<100 endparam param fn caption="Variant" enum="ident""acos""flip""ceil""exp""floor"\ "softplus""gauss""smoothstep""sqr+""cuberoot"\ "triple""ident^sqrt""ident^abs""ident^flip"\ "acos^ceil""acos^ident""acos^flip""acos^exp"\ "acos^acos""acos^acosh""flip^ident"\ "flip^flip""flip^sqrt""flip^sqr""conj^exp"\ "conj^sqrt""conj^acosh""abs^flip"\ "abs^abs""abs^sqrt""exp^ident"\ "exp^abs""exp^exp""exp^acosh""exp^acos"\ "log^log""log^sqr""sqrt^ident""sqrt^sqrt"\ "sqr^ident""sqr^flip""floor^sqrt""floor^exp"\ "acos acos""acos ceil""acos floor""sqr acos"\ "sqrt abs""exp cos""exp ceil""recip acos"\ "ceil asin""ceil acos""floor acos"\ "acos ident^sqrt""sqr ident^sqrt""round ident^sqrt"\ "ceil ident^ident""ceil log^ident""ceil acosh^ident"\ "ceil ident^flip""ceil log^ceil""ceil log^conj"\ "ceil log^cabs""ceil log^sqr""ceil acosh^sqr"\ "trunc ident^ident""trunc log^ident""atan ident^ident"\ "sqrt sqrt^ident""asinh ident^ident""asinh exp^ident"\ "asinh sqrt^ident""asinh floor^ident""asinh ident^cabs"\ "asinh ident^exp""exp log^log""sqrt log^log""round log^log"\ "sin exp^exp""atan acos^ident""cotanh acos^ident"\ "atan acos^flip""asinh acos^flip" endparam param p1 caption="Rotozoom" default=(1,0) endparam param p2 caption="Offset" default=(0,0) endparam param pow caption="Exponent 1" default=1.0 endparam param pow2 caption="Exponent 2" default=1.0 endparam param p3 caption="Parameter 1" default=0.5 endparam param p4 caption="Parameter 2" default=(0,0) endparam param p5 caption="Parameter 3" default=0.5971 endparam param p6 caption="Parameter 4" default=1.0 endparam param p7 caption="Parameter 5" default=0.0 endparam param p8 caption="Parameter 6" default=(0,0) endparam param p9 caption="Parameter 7" default=(1,0) endparam param iter caption="Iterations" default=7 min=1 endparam func fn1 default=ident() endfunc func fn2 default=ident() endfunc func fn3 default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Texturation3(common.ulb:GradientColoring) { ;This is a modification of 'Perlin Noise' by Mark Townsend (mt.ucl) ;Original code by Ken Perlin public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i2=0 i3=0 i4=0 seed=@seed while i2<256 i[i2]=i2 i3=0 while i3<2 seed=random(seed) a[i2,i3]=seed/#randomrange i3=i3+1 endwhile m=sqrt(a[i2,0]*a[i2,0]+a[i2,1]*a[i2,1]) a[i2,0]=a[i2,0]/m a[i2,1]=a[i2,1]/m i2=i2+1 endwhile i2=0 while i2<256 i4=i[i2] seed=random(seed) i3=abs(seed)%256 i[i2]=i[i3] i[i3]=i4 i2=i2+1 endwhile i2=0 while i2<256 i[256+i2]=i[i2] i3=0 while i3<2 a[256+i2,i3]=a[i2,i3] i3=i3+1 endwhile i2=i2+1 endwhile endfunc float func ResultIndex(complex pz) int i5=0 float s=0 float n=1.0 r=(0,1)^(1/3) w=pz*@p6+@p7 while i5<@p1 float p=real(w)%4096+4096 int i6=floor(p)%256 int i7=(i6+1)%256 float t1=p-floor(p) float t2=t1-1 p=imag(w)%4096+4096 int i8=floor(p)%256 int i9=(i8+1)%256 float t3=p-floor(p) float t4=t3-1 int i10=i[i[i6]+i8] int i11=i[i[i7]+i8] int i12=i[i[i6]+i9] int i13=i[i[i7]+i9] float t5=(sqr(t1)*(3-2*t1)) float t6=(sqr(t3)*(3-2*t3)) float t7=t1*a[i10,0]+t3*a[i10,1] float t8=t2*a[i11,0]+t3*a[i11,1] float t9=t7+t5*(t8-t7) t7=t1*a[i12,0]+t4*a[i12,1] t8=t2*a[i13,0]+t4*a[i13,1] float t10=t7+t5*(t8-t7) t10=(t9+t6*(t10-t9))^@p4 if @V=="1" s=s+imag(@p3*@fn1(atanh(5*t10)))*n elseif @V=="2" s=s+real(@p3*@fn1(t10))*n elseif @V=="3" s=s+n^real(@p3*@fn1(-0.2*t10)) elseif @V=="4" s=s+imag(@p3*@fn1(flip(-0.15*t10)))*n^imag(@p3*@fn1(flip(-0.15*t10))) elseif @V=="5" s=s+real(@p3*@fn1(abs(t10)))*n^real(@p3*@fn1(abs(t10))) elseif @V=="6" s=s+real(@p3*@fn1(t10))*n^imag(@p3*@fn1(t10)) elseif @V=="7" s=s+real(@p3*@fn1(abs(t10)))*n elseif @V=="8" s=s+real(@p3*@fn1(sqrt(t10)))*n elseif @V=="9" s=s+real(@p3*@fn1(ceil(t10)))*n elseif @V=="10" s=s+real(@p3*@fn1(atanh(50*t10)))*n elseif @V=="11" s=s+real(@p3*@fn1(atanh(flip(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(floor(exp(t10^t10)))) elseif @V=="12" s=s+imag(@p3*@fn1(log(t10)))*n elseif @V=="13" s=s+imag(@p3*@fn1(sqrt(t10)))*n elseif @V=="14" s=s+imag(@p3*@fn1(asin(50*t10)))*n elseif @V=="15" s=s+n^real(@p3*@fn1(cabs(t10))) elseif @V=="16" s=s+real(@p3*@fn1(0.13*atan(abs(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(ceil(atan(-5.145*t10^t10)))) elseif @V=="17" s=s+n^real(@p3*@fn1(sqr(t10))) elseif @V=="18" s=s+n^real(@p3*@fn1(ceil(t10))) elseif @V=="19" s=s+imag(@p3*@fn1(sqrt(t10)))*n^imag(@p3*@fn1(sqrt(t10))) elseif @V=="20" s=s+real(@p3*@fn1(0.13*acos(log(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(floor(tan(-5.145*t10^t10)))) elseif @V=="21" s=s+real(@p3*@fn1(abs(t10)))*n^imag(@p3*@fn1(abs(t10))) elseif @V=="22" s=s+real(@p3*@fn1(exp(t10)))*n^imag(@p3*@fn1(exp(t10))) elseif @V=="23" s=s+real(@p3*@fn1(sqr(t10)))*n^imag(@p3*@fn1(sqr(t10))) elseif @V=="24" s=s+real(@p3*@fn1(cosh(t10)))*n^imag(@p3*@fn1(cosh(t10))) elseif @V=="25" s=s+real(@p3*@fn1(cos(t10)))*n^imag(@p3*@fn1(cos(t10))) elseif @V=="26" s=s+n*real(@p3*@fn1(t10))^real(@p3*@fn1(cabs(t10))) elseif @V=="27" s=s+n*real(@p3*@fn1(t10))^real(@p3*@fn1(sqrt(t10))) elseif @V=="28" s=s+n*real(@p3*@fn1(exp(1.2*t10)))^real(@p3*@fn1(cotan(t10))) elseif @V=="29" s=s+n*real(@p3*@fn1(exp(1.2*t10)))^real(@p3*@fn1(-6*acos(t10))) elseif @V=="30" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(floor(t10))) elseif @V=="31" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(t10)) elseif @V=="32" s=s+n*real(@p3*@fn1(log(t10)))^real(@p3*@fn1(abs(t10))) elseif @V=="33" s=s+real(@p3*@fn1(0.13*acos(trunc(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87^floor(recip(-5.15*t10^t10)))) elseif @V=="34" s=s+n*real(@p3*@fn1(sqrt(t10)))^real(@p3*@fn1(abs(t10))) elseif @V=="35" s=s+n*real(@p3*@fn1(sqrt(t10)))^real(@p3*@fn1(sqr(t10))) elseif @V=="36" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(sin(t10))) elseif @V=="37" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(-1.6*cabs(t10))) elseif @V=="38" s=s+n*real(@p3*@fn1(sqr(t10)))^real(@p3*@fn1(-1.6*conj(t10))) elseif @V=="39" s=s+n*real(@p3*@fn1(acos(t10)))^real(@p3*@fn1(acos(t10))) elseif @V=="40" s=s+n*imag(@p3*@fn1(atan(t10)))^real(@p3*@fn1(sqr(t10))) elseif @V=="41" s=s+n*real(@p3*@fn1(9*sqrt(acos(t10)))) elseif @V=="42" s=s+n*real(@p3*@fn1(sqr(t10)))^n elseif @V=="43" s=s+n*real(@p3*@fn1(sqr(exp(t10))))^n elseif @V=="44" s=s+n*real(@p3*@fn1(acos(atanh(t10))))^n elseif @V=="45" s=s+n*real(@p3*@fn1(acos(sqrt(t10))))^n elseif @V=="46" s=s+n*real(@p3*@fn1(acos(abs(t10))))^n elseif @V=="47" s=s+n*real(@p3*@fn1(3.33*cotan(acos(t10))))^n elseif @V=="48" s=s+n*real(@p3*@fn1(-0.41*exp(t10^(-0.25))))^(n*real(t10)) elseif @V=="49" s=s+n*real(@p3*@fn1(-0.41*sqr(t10^(-0.58))))^(n*real(t10)) elseif @V=="50" s=s+n*real(@p3*@fn1(cotan(flip(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="51" s=s+n*real(@p3*@fn1(cotan(cabs(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="52" s=s+n*real(@p3*@fn1(tan(exp(t10+(-5)^t10))))^(n*real(t10)) elseif @V=="53" s=s+n*real(@p3*@fn1((-10)*sqr(round (t10+(-3.5)^t10))))^(n*real(t10)) elseif @V=="54" s=s+n*real(@p3*@fn1((-10)*log(round (t10+(-3.5)^t10))))^(n*real(t10)) elseif @V=="55" s=s+real(@p3*@fn1(t10^0.085))*n^imag(@p3*@fn1(flip(t10))) elseif @V=="56" s=s+real(@p3*@fn1(t10)^0.085)*n^imag(@p3*@fn1(flip(t10)^7.5)) elseif @V=="57" s=s+real(@p3*@fn1(abs(t10)^0.5))*n^imag(@p3*@fn1(flip(t10)^(-0.24562))) elseif @V=="58" s=s+real(@p3*@fn1(sqrt(t10)^0.5))*n^imag(@p3*@fn1(flip(t10)^(-0.24562))) elseif @V=="59" s=s+real(@p3*@fn1(0.13*acos(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(tan(-5.15*t10^t10)))) elseif @V=="60" s=s+real(@p3*@fn1(ceil(t10)^0.5))*n^imag(@p3*@fn1(cabs(t10)^(-0.24562))) elseif @V=="61" s=s+real(@p3*@fn1(sinh(t10)+11.55))*n^imag(@p3*@fn1(log(t10))) elseif @V=="62" s=s+real(@p3*@fn1(2.16*sqr(t10)+10.22))*n^imag(@p3*@fn1(tan(t10))) elseif @V=="63" s=s+real(@p3*@fn1(0.13*acos(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(recip(-5.15*t10^t10)))) elseif @V=="64" s=s+real(@p3*@fn1(sqr(t10)^t10))*n^n elseif @V=="65" s=s+real(@p3*@fn1(sqr(sqr(t10))^t10))*n^n elseif @V=="66" s=s+real(@p3*@fn1(acosh(sqr(t10))^t10))*n^n elseif @V=="67" s=s+real(@p3*@fn1(0.13*asinh(tan(1.25*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqrt(tan(-5.15*t10^t10)))) elseif @V=="68" s=s+real(@p3*@fn1(0.25*sqr(acos(-2.36*t10))^t10))*n^n elseif @V=="69" s=s+real(@p3*@fn1(3.2*sqrt(acosh(-2.36*t10))^t10))*n^n elseif @V=="70" s=s+real(@p3*@fn1(3.2*round(trunc(-4.27*t10))^t10))*n^n elseif @V=="71" s=s+real(@p3*@fn1(3.2*flip(acosh(-4.27*t10))^t10))*n^n elseif @V=="72" s=s+real(@p3*@fn1(t10^t10))*n^n elseif @V=="73" s=s+imag(@p3*@fn1(flip(-0.15*t10^t10)))*n^n^imag(@p3*@fn1(flip(-0.15*t10^t10))) elseif @V=="74" s=s+real(@p3*@fn1(ceil(t10^t10)))*n^n elseif @V=="75" s=s+n^n^real(@p3*@fn1(exp(t10^t10))) elseif @V=="76" s=s+n^n^real(@p3*@fn1(sqr(t10^t10))) elseif @V=="77" s=s+n^n^real(@p3*@fn1(ceil(t10^t10))) elseif @V=="78" s=s+n^n*real(@p3*@fn1(log(t10^t10)))^real(@p3*@fn1(floor(t10^t10))) elseif @V=="79" s=s+n^n*real(@p3*@fn1(log(t10^t10)))^real(@p3*@fn1(abs(t10^t10))) elseif @V=="80" s=s+n^n*imag(@p3*@fn1(atan(t10^t10)))^real(@p3*@fn1(sqr(t10^t10))) elseif @V=="81" s=s+n^n*real(@p3*@fn1(sqr(t10^t10)))^n^n elseif @V=="82" s=s+n^n*real(@p3*@fn1(acos(sqrt(t10^t10))))^n^n elseif @V=="83" s=s+real(@p3*@fn1(ceil(t10^t10)^0.5))*n^n^imag(@p3*@fn1(cabs(t10^t10)^(-0.24562))) elseif @V=="84" s=s+real(@p3*@fn1(2.16*ceil(t10^t10)+0.7533))*n^n^imag(@p3*@fn1(round(t10^t10))) elseif @V=="85" s=s+real(@p3*@fn1(0.13*asinh(log(t10^t10))+0.7533))*n^n^imag(@p3*@fn1(1.87*sqr(round(t10^t10)))) elseif @V=="86" s=s+real(@p3*@fn1(-1.55*asin(recip(-0.79*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2.22*acosh(3.91*t10^t10))) elseif @V=="87" s=s+real(@p3*@fn1(1.93*ceil(sqrt(-0.93*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2.18*ceil(atanh(t10^t10)))) elseif @V=="88" s=s+real(@p3*@fn1(-0.21*asinh(sin(3.78*t10^t10))+0.7533))*n^n^imag(@p3*@fn1(2*sqr(acos(t10^t10)))) elseif @V=="89" s=s+real(@p3*@fn1(-0.16*cos(round(t10^t10))+0.83 ))*n^n^imag(@p3*@fn1(t10^t10)) elseif @V=="90" s=s+real(@p3*@fn1(-0.16*cos(round(t10^t10))+0.83))*n^n^imag(@p3*@fn1(atanh(atanh(t10^t10)))) elseif @V=="91" s=s+real(@p3*@fn1(0.05*tan(1.29*t10^t10)+0.83))*n^n^imag(@p3*@fn1(0.48*trunc(flip(-2.4*t10^t10)))) elseif @V=="92" s=s+real(@p3*@fn1(5.44*recip(floor(-40*t10^t10))+0.17))*n^n^imag(@p3*@fn1(-20.25*sin(tan(t10^t10)))) elseif @V=="93" s=s+real(@p3*@fn1(-0.08*log(abs(-0.35*t10^t10))+0.187))*n^n^imag(@p3*@fn1(log(abs(0.9*t10^t10)))) elseif @V=="94" s=s+real(@p3*@fn1(-0.08*sqr(abs(-0.35*t10^t10))+0.27 ))*n^n^imag(@p3*@fn1(sqr(abs(0.9*t10^t10)))) elseif @V=="95" s=s+real(@p3*@fn1(-0.08*sqr(atanh(-0.35*t10^t10))+0.27 ))*n^n^imag(@p3*@fn1(sqr(atanh(0.9*t10^t10)))) elseif @V=="96" s=s+real(@p3*@fn1(0.13*acos(floor(6.28*t10^t10))+0.93))*n^n^imag(@p3*@fn1(0.43*sqr(abs(6.3*t10^t10)))) endif w=@p5*w*r/0.5+@p8 n=n*@p2 i5=i5+1 endwhile if @solid if @invert if s<@sca index=(s+1)*0.5+@F*real(#random)/5 else m_Solid=true endif else if s>=@sca index=(s+1)*0.5+@F*real(#random)/5 else m_Solid=true endif endif else index=(s+1)*0.5+@F*real(#random)/5 endif return index endfunc private: int i[514] float a[514,2] int i2 int i3 int i4 int seed float m float index default: title="Texturation 3" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96" endparam param p6 caption="Rotozoom" default=(1,0) endparam param p7 caption="Offset" default=(0,0) endparam param @seed caption="Random Seed" default=1684327 endparam param p1 caption="Parameter 1" default=5 endparam param p2 caption="Parameter 2" default=0.5 endparam param p3 caption="Parameter 3" default=1.0 endparam param p4 caption="Parameter 4" default=1.0 endparam Param p5 default=(1,0) endparam Param p8 caption="Parameter 6" default=(0,0) endparam func fn1 caption="Function" default=ident() endfunc param F caption="Grain" default=0.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=1.5 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_Zetacol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="3" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="4" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" if |pz|<1 pz=pz/|pz| endif elseif @Va=="8" pz=(pz-1i)/(pz+1i) elseif @Va=="9" pz=(pz-2)/(1-2*pz) elseif @Va=="10" pz=(pz-3)/(1-3*pz) elseif @Va=="11" pz=(pz+2)/(1+2*pz) elseif @Va=="12" pz=(pz-1)/(pz+1) elseif @Va=="13" pz=(pz-fpixel)/(pz+fpixel) elseif @Va=="14" pz=pz+pz^2 elseif @Va=="15" pz=pz+1/pz elseif @Va=="16" pz=pz-pz^2 elseif @Va=="17" pz=pz-1/pz elseif @Va=="18" pz=(pz-1/pz)/(pz+1/pz) endif if @v=="3" pz=@p3*fn3((pz^3-pz^2)/4)+@p4 elseif @v=="4" pz=@p3*fn3((6*pz^4-9*pz^3+pz^2+pz)/30)+@p4 elseif @v=="5" pz=@p3*fn3((2*pz^5-4*pz^4+pz^3+pz^2)/12)+@p4 elseif @v=="6" pz=@p3*fn3((6*pz^6-15*pz^5+6*pz^4+6*pz^3-pz^2-pz)/42)+@p4 elseif @v=="7" pz=@p3*fn3((3*pz^7-9*pz^6+5*pz^5+5*pz^4-2*pz^3-2*pz^2)/24)+@p4 elseif @v=="8" pz=@p3*fn3((10*pz^8-35*pz^7+25*pz^6+25*pz^5-17*pz^4-17*pz^3+3*pz^2+3*pz)/90)+@p4 elseif @v=="9" pz=@p3*fn3((2*pz^9-8*pz^8+7*pz^7+7*pz^6-7*pz^5-7*pz^4+3*pz^3+3*pz^2)/20)+@p4 endif if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<@adj if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: float a float b float index int i int i2 complex fpixel complex zold default: title="Zetacol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="3""4""5""6""7""8""9" endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc func fn3 caption="Polynomial Function" default=ident() endfunc param adj caption="Adjustment" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.185 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_NewtonPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=@iter if i>=#maxiter i=#maxiter-1 endif fpixel=pz a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif elseif @Va=="3" if |pz|>1 pz=pz/|pz| endif elseif @Va=="4" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="8" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="9" pz=pz+pz^2 elseif @Va=="10" pz=pz-pz^2 elseif @Va=="11" pz=pz+1/pz elseif @Va=="12" pz=pz-1/pz elseif @Va=="13" pz=pz+pz^2+1/pz elseif @Va=="14" pz=pz-pz^2-1/pz elseif @Va=="15" pz=(pz+1.5)/(1+1.5*pz) elseif @Va=="16" pz=(pz+2.5)/(1+2.5*pz) endif if @v=="1" pz=5-2*(pz-1) elseif @v=="2" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3) elseif @v=="3" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3)-0.1*(pz-1)*(pz-3)*(pz-4) elseif @v=="4" pz=5-2*(pz-1)+0.5*(pz-1)*(pz-3)-0.1*(pz-1)*(pz-3)*(pz-4)+0.003*(pz-1)*(pz-3)*(pz-4)*(pz-4.5) elseif @v=="5" pz=6+3*(pz-1) elseif @v=="6" pz=-0.00005-1.4775*pz-0.00001*pz^2+4.83484*pz^3 elseif @v=="7" pz=2-(pz-2)+0.5*(pz-2)*(pz-3) elseif @v=="8" pz=-39+21*(pz+2)-6*(pz+2)*pz+2*(pz+2)*pz*(pz-1) elseif @v=="9" pz=5+2*(pz-1) elseif @v=="10" pz=3+4*(pz-2)/3 elseif @v=="11" pz=21-10*(pz+2)+3*(pz+2)*pz-3*(pz+2)*pz*(pz-1) elseif @v=="12" pz=0.1+2*(pz-2)+3*(pz-2)*(pz-1) elseif @v=="13" pz=2+3*(pz-4)-5*(pz-4)*(pz+7) elseif @v=="14" pz=1+7*pz/6+pz^2/2-2*pz^3/3 elseif @v=="15" pz=3-5*(pz+7) elseif @v=="16" pz=1+1.25*pz+0.125*pz*(pz-1)-0.20833*pz*(pz-1)*(pz-2) endif if @F3=="sin" pz=sin(pz) elseif @F3=="cos" pz=cos(pz) elseif @F3=="flipsin" pz=flip(sin(pz)) elseif @F3=="sqrsin" pz=sqr(sin(pz)) elseif @F3=="sqrcos" pz=sqr(cos(pz)) elseif @F3=="flipcos" pz=flip(cos(pz)) elseif @F3=="flipcotan" pz=flip(cotan(pz)) elseif @F3=="expflip" pz=exp(flip(pz)) endif pz=@p3*pz+@p4 if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<0 if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: int i float a float b complex zold complex fpixel int i2 float index default: title="Newton Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16" default=0 endparam param f3 caption="Polynomial Function" enum="sin""cos""flipsin""sqrsin""sqrcos""flipcos""flipcotan""expflip" endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.185 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Lifcol2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif pz=@p1*fn2(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" pz=pz-pz^2 elseif @Va=="3" pz=pz-cotanh(pz) elseif @Va=="4" pz=pz+pz^2 elseif @Va=="5" if real(pz)imag(pz) pz=flip(pz) endif elseif @Va=="7" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="8" if cabs(pz)<1 pz=pz/cabs(pz) endif elseif @Va=="9" if cabs(pz)>1 pz=pz/cabs(pz) endif elseif @Va=="10" pz=pz-1/pz elseif @Va=="11" pz=pz+abs(pz) elseif @Va=="12" pz=pz+exp(pz) elseif @Va=="13" pz=pz+cos(pz) elseif @Va=="14" pz=pz+trunc(pz) elseif @Va=="15" pz=pz-conj(pz) elseif @Va=="16" pz=pz+1/pz elseif @Va=="17" pz=pz-cotan(pz) elseif @Va=="18" pz=pz+1/flip(pz) elseif @Va=="19" pz=pz+1/conj(pz) elseif @Va=="20" pz=pz+1/sqr(pz) elseif @Va=="21" pz=pz-1/conj(pz) elseif @Va=="22" pz=pz-1/abs(pz) endif if @v=="1" pz=(1+pz)*exp(pz) elseif @v=="2" pz=(1+3*pz+pz^2)*exp(pz) elseif @v=="3" pz=(1+7*pz+6*pz^2+pz^3)*exp(pz) elseif @v=="4" pz=(1+15*pz+25*pz^2+10*pz^3+pz^4)*exp(pz) elseif @v=="5" pz=0.1*(1+31*pz+90*pz^2+65*pz^3+15*pz^4+pz^5)*exp(pz) elseif @v=="6" pz=0.1*(1+63*pz+301*pz^2+350*pz^3+140*pz^4+21*pz^5+pz^6)*exp(pz) elseif @v=="7" pz=0.01*(1+127*pz+966*pz^2+1701*pz^3+1050*pz^4+266*pz^5+28*pz^6+pz^7)*exp(pz) elseif @v=="8" pz=0.01*(1+255*pz+3025*pz^2+7770*pz^3+6951*pz^4+2646*pz^5+462*pz^6+36*pz^7+pz^8)*exp(pz) elseif @v=="9" pz=0.001*(1+511*pz+9330*pz^2+34105*pz^3+42525*pz^4+22827*pz^5+5880*pz^6+750*pz^7+45*pz^8+pz^9)*exp(pz) elseif @v=="10" pz=0.001*(1+1023*pz+28501*pz^2+145750*pz^3+246730*pz^4+179487*pz^5+63987*pz^6+11880*pz^7+1155*pz^8+55*pz^9+pz^10)*exp(pz) elseif @v=="11" pz=0.0001*(1+2047*pz+86526*pz^2+611501*pz^3+1379400*pz^4+1323652*pz^5+627396*pz^6+159027*pz^7+22275*pz^8+1705*pz^9+66*pz^10+pz^11)*exp(pz) endif pz=@p3*fn3(pz)+@p4 if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) ;m_Solid=true if |pz-zold|<0 if @solid if @invert if b<@p7 index=b else m_Solid=true endif else if b>@p7 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p7 index=a else m_Solid=true endif else if a>@p7 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: int i float a float b complex zold complex fpixel int i2 float index default: title="Lifcol 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="1""2""3""4""5""6""7""8""9""10""11" default=0 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param iter caption="Iterations" default=10 min=0 endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param Fs caption="Z Function 1" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""ceil""floor""trunc""round" default=22 endparam func fn2 caption="Z Function 2" default=ident() endfunc func fn3 caption="Polynomial Function" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_KleinPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if k2<=k1 if @v=="Tv" d=cabs(@p3*fn2(fn3(pz^4+2*sqrt(3)*sqrt(-1)*pz^2+1))+@p4) elseif @v=="Tf" d=cabs(@p3*fn2(fn3(pz^4-2*sqrt(3)*sqrt(-1)*pz^2+1))+@p4) elseif @v=="Ov" d=cabs(@p3*fn2(fn3(pz^5-pz))+@p4) elseif @v=="Of" d=cabs(@p3*fn2(fn3(pz^8+14*pz^4+1))+@p4) elseif @v=="Oe" d=cabs(@p3*fn2(fn3(pz^12-33*pz^8-33*pz^4+1))+@p4) elseif @v=="Yv" d=cabs(@p3*fn2(fn3(pz^11+11*pz^6-pz))+@p4) elseif @v=="Yf" d=cabs(@p3*fn2(fn3(pz^20-228*pz^15+494*pz^10+228*pz^5+1))+@p4) elseif @v=="Ye" d=cabs(@p3*fn2(fn3(pz^30+522*pz^25-10005*pz^20-10005*pz^10-522*pz^5+1))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random) else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random) endif return index endfunc private: int k1 float a float b float c float d float f int k2 float index default: title="Klein Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="Tv""Tf""Ov""Of""Oe""Yv""Yf""Ye" default=3 endparam param p1 caption="Z Parameter 1" default=(0.25,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=(1,0) endparam param p4 caption="Polynomial Parameter 2" default=(0,0) endparam param p5 caption="Detail" default=4 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param p6 caption="Grain" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_KleinPolycol2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @Va=="1" pz=pz elseif @Va=="2" if |pz|<1 pz=pz/|pz| endif elseif @Va=="3" if |pz|>1 pz=pz/|pz| endif elseif @Va=="4" pz=pz+exp(pz) elseif @Va=="5" pz=pz+sqr(pz) elseif @Va=="6" pz=pz+cosh(pz) elseif @Va=="7" pz=pz+cos(pz) elseif @Va=="8" pz=pz+ceil(pz) elseif @Va=="9" pz=pz+floor(pz) elseif @Va=="10" pz=pz-sqrt(pz) elseif @Va=="11" pz=pz-sqr(pz) elseif @Va=="12" pz=pz-cotanh(pz) elseif @Va=="13" pz=pz-cotan(pz) elseif @Va=="14" pz=pz-cosh(pz) elseif @Va=="15" pz=pz-cos(pz) elseif @Va=="16" pz=pz-ceil(pz) elseif @Va=="17" pz=pz-floor(pz) elseif @Va=="18" pz=pz-round(pz) elseif @Va=="19" pz=pz+1/cabs(pz) elseif @Va=="20" pz=pz+1/abs(pz) elseif @Va=="21" pz=pz+1/log(pz) elseif @Va=="22" pz=pz+1/sqr(pz) elseif @Va=="23" pz=pz-1/conj(pz) elseif @Va=="24" pz=pz-1/abs(pz) elseif @Va=="25" pz=pz-1/cosh(pz) elseif @Va=="26" pz=pz*cosh(pz) elseif @Va=="27" pz=pz*cos(pz) elseif @Va=="28" pz=pz/exp(pz) elseif @Va=="29" pz=pz/log(pz) elseif @Va=="30" pz=pz/acos(pz) endif if @v=="Tv" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^4+2*sqrt(3)*sqrt(-1)*pz^2+1))))-3*@p4) elseif @v=="Tf" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^4-2*sqrt(3)*sqrt(-1)*pz^2+1))))-3*@p4) elseif @v=="Ov" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^5-pz))))-3*@p4) elseif @v=="Of" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^8+14*pz^4+1))))-3*@p4) elseif @v=="Oe" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^12-33*pz^8-33*pz^4+1))))-3*@p4) elseif @v=="Yv" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^11+11*pz^6-pz))))-3*@p4) elseif @v=="Yf" float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^20-228*pz^15+494*pz^10+228*pz^5+1))))-3*@p4) else float b=cabs(@p3*10*fn2(log(cabs(fn3(pz^30+522*pz^25-10005*pz^20-10005*pz^10-522*pz^5+1))))-3*@p4) endif if b=@sca index=sqrt(a)*75/256 else m_Solid=true endif else if sqrt(a)*75/256<@sca index=sqrt(a)*75/256 else m_Solid=true endif endif else index=sqrt(a)*75/256 endif return index endfunc private: float a float index default: title="Klein Polycol 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Polynomial" enum="Tv""Tf""Ov""Of""Oe""Yv""Yf""Ye" default=3 endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p2 caption="Z Parameter 2" default=(0,0) endparam param p3 caption="Polynomial Parameter 1" default=0.1 endparam param p4 caption="Polynomial Parameter 2" default=0.0 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param solid caption="Solid Colour" default=false endparam param sca caption="Solid Colour Adjustment" default=0.5 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_PoincaréPolycol(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) fpixel=pz k1=@p5 if k1>=#maxiter k1=#maxiter-1 endif a=0.0 b=1e20 c=-1.0 d=0.0 f=0.0 k2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@p1*fn1(pz)+@p2 if @v2==0 pz=pz elseif @v2==1 pz=pz+flip(pz) elseif @v2==2 pz=pz+abs(flip(pz)) elseif @v2==3 pz=pz+exp(flip(pz)) elseif @v2==4 pz=pz+cosh(flip(pz)) elseif @v2==5 pz=pz+conj(pz) elseif @v2==6 pz=pz+abs(conj(pz)) elseif @v2==7 pz=pz+cabs(pz) elseif @v2==8 pz=pz+log(cabs(pz)) elseif @v2==9 pz=pz+log(abs(pz)) elseif @v2==10 pz=pz+exp(pz) elseif @v2==11 pz=pz+recip(exp(pz)) elseif @v2==12 pz=pz+tanh(log(pz)) elseif @v2==13 pz=pz+sqrt(sqrt(pz)) elseif @v2==14 pz=pz+sqr(pz) elseif @v2==15 pz=pz-abs(conj(pz)) elseif @v2==16 pz=pz-atan(conj(pz)) elseif @v2==17 pz=pz-cos(conj(pz)) elseif @v2==18 pz=pz-log(cabs(pz)) elseif @v2==19 pz=pz-exp(pz) elseif @v2==20 pz=pz-sqr(exp(pz)) elseif @v2==21 pz=pz-atanh(exp(pz)) elseif @v2==22 pz=pz-recip(log(pz)) elseif @v2==23 pz=pz+(fpixel) elseif @v2==24 pz=pz+flip(fpixel) elseif @v2==25 pz=pz*fpixel elseif @v2==26 pz=pz/fpixel elseif @v2==27 pz=pz+(pz+0.5)^3 elseif @v2==28 pz=pz+abs(pz+0.5)^2 elseif @v2==29 pz=pz+exp(pz-0.5)^2 elseif @v2==30 pz=pz+round(pz+0.5)^2 elseif @v2==31 pz=pz+(pz-0.5)^2 elseif @v2==32 pz=pz+abs(pz-0.5)^2 elseif @v2==33 pz=pz+cos(pz-0.5)^2 elseif @v2==34 pz=pz+cos(pz+0.5)^3 elseif @v2==35 pz=pz+cabs(pz-0.5)^3 elseif @v2==36 pz=pz+abs(pz-0.5)^3 else pz=pz+exp(pz-0.5)^3 endif if k2<=k1 if @v=="Q1(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4))+@p4) elseif @v=="Q2(A2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3))+@p4) elseif @v=="Q3(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3-2*pz^4))+@p4) elseif @v=="Q8(A3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^2+pz^5+pz^6))+@p4) elseif @v=="Q9(A3)" d=cabs(@p3*fn2(fn3(1-pz-3*pz^2-pz^4+pz^5+3*pz^6))+@p4) elseif @v=="Q10(B3)" d=cabs(@p3*fn2(fn3(1-pz-3*pz^3+pz^4-pz^5+pz^8+2*pz^9))+@p4) elseif @v=="Q11(B3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4-pz^5+pz^8+pz^9))+@p4) elseif @v=="Q12(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-3*pz^3-pz^6+pz^7+pz^8+3*pz^9))+@p4) elseif @v=="Q16(G2)" d=cabs(@p3*fn2(fn3(1-2*pz+pz^2-pz^4+pz^6))+@p4) elseif @v=="Q17(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-2*pz^5+pz^6+pz^8+pz^9))+@p4) elseif @v=="Q18(G2)" d=cabs(@p3*fn2(fn3(1-2*pz+pz^3-pz^4-pz^5+2*pz^6))+@p4) elseif @v=="Q19(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4-pz^5+pz^6+pz^8+pz^9))+@p4) elseif @v=="Q20(G2)" d=cabs(@p3*fn2(fn3(1-2*pz-2*pz^5+3*pz^6))+@p4) elseif @v=="Q21(D4)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^2-pz^3+2*pz^5+pz^6+2*pz^7+3*pz^8-pz^9+pz^10-pz^11-2*pz^12))+@p4) elseif @v=="Q22(B4)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3+pz^7+2*pz^8+pz^9+pz^10+pz^11-pz^15-pz^16))+@p4) elseif @v=="Q23(D4)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^4+pz^6+pz^7+2*pz^8-pz^11-pz^12))+@p4) elseif @v=="Q24(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^5))+@p4) elseif @v=="Q25(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3))+@p4) elseif @v=="Q26(A2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2))+@p4) elseif @v=="Q27(B2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3))+@p4) elseif @v=="Q28(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^5))+@p4) elseif @v=="Q29(G2)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3-pz^4-pz^5))+@p4) elseif @v=="Q36(A3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2+pz^5))+@p4) elseif @v=="Q37(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3+pz^8))+@p4) elseif @v=="Q38(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^4+pz^6+pz^8))+@p4) elseif @v=="Q39(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^3+pz^7+pz^8))+@p4) elseif @v=="Q40(B3)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4-pz^5+pz^6+pz^8))+@p4) elseif @v=="Q43(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^4+pz^8))+@p4) elseif @v=="Q44(B3)" d=cabs(@p3*fn2(fn3(1-pz-pz^3-pz^5+pz^6+pz^8))+@p4) elseif @v=="Q46(D4)" d=cabs(@p3*fn2(fn3(1-pz^2-pz^3-pz^4-pz^5-pz^6+pz^8+pz^9+2*pz^10+2*pz^11+2*pz^12+pz^13+pz^14-pz^16-pz^17-pz^18-pz^19))+@p4) elseif @v=="Q47(D5)" d=cabs(@p3*fn2(fn3(1-pz-pz^2-pz^4+pz^5+pz^6+pz^7+pz^9+pz^10-pz^11-pz^13-pz^14-pz^15+pz^19))+@p4) elseif @v=="Q48(B5)" d=cabs(@p3*fn2(fn3(1-pz-2*pz^3+pz^4+pz^6-pz^7+2*pz^8-pz^9+pz^10+pz^12+pz^13-pz^14-pz^15-pz^18-pz^20+pz^24))+@p4) elseif @v=="Pg2" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)))+@p4) elseif @v=="Pf4" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^23)))+@p4) elseif @v=="Pe6" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^9)*(1+pz^11)*(1+pz^15)*(1+pz^17)*(1+pz^23)))+@p4) elseif @v=="Pe7" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^11)*(1+pz^15)*(1+pz^19)*(1+pz^23)*(1+pz^27)*(1+pz^35)))+@p4) elseif @v=="Pe8" d=cabs(@p3*fn2(fn3((1+pz^3)*(1+pz^15)*(1+pz^23)*(1+pz^27)*(1+pz^35)*(1+pz^39)*(1+pz^47)*(1+pz^59)))+@p4) endif f=d if fc c=f endif a=a+exp(-d) k2=k2+1 endif endfunc float func ResultIndex(complex pz) if @solid if @invert if sqrt(a)/(1+c-b)<=@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 else m_Solid=true endif else if sqrt(a)/(1+c-b)>@p7 index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 else m_Solid=true endif endif else index=sqrt(a)/(1+c-b)+@p6*real(#random)/10 endif return index endfunc private: complex fpixel int k1 float a float b float c float d float f int k2 float index default: title="Poincaré Polycol" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Polynomial" enum="Q1(B2)""Q2(A2)""Q3(B2)"\ "Q8(A3)""Q9(A3)""Q10(B3)""Q11(B3)""Q12(B3)"\ "Q16(G2)""Q17(B3)""Q18(G2)""Q19(B3)""Q20(G2)""Q21(D4)""Q22(B4)""Q23(D4)"\ "Q24(G2)""Q25(B2)""Q26(A2)""Q27(B2)""Q28(G2)""Q29(G2)"\ "Q36(A3)""Q37(B3)""Q38(B3)""Q39(B3)""Q40(B3)"\ "Q43(B3)""Q44(B3)"\ "Q46(D4)""Q47(D5)""Q48(B5)"\ "Pg2""Pf4""Pe6""Pe7""Pe8" endparam param V2 caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param p1 caption="Z parameter 1" default=(0.5,0) endparam param p2 caption="Z parameter 2" default=(0,0) endparam param p3 caption="Polynomial parameter 1" default=(1,0) endparam param p4 caption="Polynomial parameter 2" default=(0,0) endparam param p5 caption="Detail" default=5 endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Polynomial Function 1" default=ident() endfunc func fn3 caption="Polynomial Function 2" default=ident() endfunc param p6 caption="Grain" default=0.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Sailor'sTraps(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=real(@adj1) b=imag(@adj1) c=(b-1)/@adj2 d=0.0 f=0.0 i=0 g=253.0 h=false j=(0,0) endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if !h if @S==true pz=abs(fn1(pz)) else pz=fn1(pz) endif pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) if @V=="Conchoid 1" pz=(x^2+y^2+(@p3+1)^2-(@p2+1i)^2)^2*(y^2+(x+(@p1+1i))^2)-4*(@p3+1)^2*(x*(x+(@p1+1i))+y^2)^2 elseif @V=="Conchoid 2" pz=(x-(@p2-0.5))^2*(x^2+y^2)-(@p1+1)^2*x^2 elseif @V=="Conchoid 3" pz=@p1*(x+(@p1+1))*(x^2+y^2)-(@p2-0.5)^2*x^2 elseif @V=="Conchoid 4" pz=(x^2+x*y+@p1*x-@p2^2)^2-(@p2^2-x^2)*(x-y+@p1)^2 elseif @V=="Conchoid 5" pz=2*y^2*(x^2+y^2)-2*@p2*y^2*(x+y)+(@p2^2-3*@p1^2)*y^2-@p1^2*x^2+2*@p1^2*@p2*(x+y)+@p1^2*(@p1^2-@p2^2) elseif @V=="Conchoid 6" pz=(x^2+y^2-(@p1-0.5)*(@p2-1.75)*x)^2-(x^2+y^2)*((@p2-1.75)*x-((@p1-0.5)+1))^2 elseif @V=="Duffing 1" pz=y+flip(x-x^3-@p1*y+@p2) elseif @V=="Duffing 2" pz=y+flip(-@p1*x-@p2*x^3+@p3) elseif @V=="Duffing 3" pz=y+flip(-x-x^3+(@p1+@p2*x^2+@p3*@p4*x)*y+@p4*@p5) elseif @V=="Duffing 4" pz=y+flip(-@p1*x-(((@p2+1i)-@p1)/2)*(cabs(x+1)-cabs(x-1))-@p3*y+@p4) elseif @V=="Duffing 5" pz=y+flip(-@p1*x-@p2*x^3-@p3*x^5+(@p4-2+1i)) elseif @V=="Henon 1" pz=1-@p1*x^2+y+flip(@p2*x) elseif @V=="Henon 2" pz=-(y-x^2)*sin(2*pi/(@p1-0.5+1i))+x*cos(2*pi/(@p1-0.5+1i))\ +flip((y-x^2)*cos(2*pi/(@p1-0.5+1i))+x*sin(2*pi/(@p1-0.5+1i))) elseif @V=="Henon 3" pz=y+flip(@p2^(-1)*(1-@p1*y^2-@p2*x)) elseif @V=="Henon 4" pz=exp(-@p1*@p2/2)*(x*cos(@p2*@p3)+(1/@p3)*(y-(@p4+x^2)+@p1*x/2)*sin(@p2*@p3))\ +flip(exp(-@p1*@p2/2)*(-@p3*x*sin(@p2*@p3)+(y-(@p4+x^2)+@p1*x/2)*cos(@p2*@p3))-@p1*x/2) elseif @V=="Henon 5" pz=y+(@p1+1i)*cos(pi*x/2)-1+flip(@p2*x) elseif @V=="Ikeda 1" pz=@p1+(@p2+2)*pz*e^(1i*(cabs(pz)^2+@p3)) elseif @V=="Ikeda 2" pz=(@p1+1i)+@p2*pz*e^(1i*(@p3+2)/(cabs(pz)^2+1)+@p4) elseif @V=="Ikeda 3" pz=@p1+(@p2+1)*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1)))+flip((@p2+1)*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Lemniscate 1" pz=(x^2+y^2)^2-(@p1-2.5)^2*(x^2-y^2) elseif @V=="Lemniscate 2" pz=(x^2+y^2)^2-(2*(@p1-1.2)^2+@p2)*x^2+(2*(@p1-1.2)^2-@p2)*y^2 elseif @V=="Lemniscate 3" pz=y^2-x^2*log((@p1-2.5)^2/x^2) elseif @V=="Lissajous 1" pz=2*(2*x^2-@p1^2)^2-@p1*(2*y-@p1)^2*(y+@p1) elseif @V=="Lissajous 2" pz=x^2*(4*x^2-3*(@p1+0.5)^2)+4*(@p1+0.5)^2*y^2*(y^2-(@p1+0.5)^2) elseif @V=="Lissajous 3" pz=@p1^4*y^4-4*@p1^3*(@p2+1i)*x*y^3+2*@p1^2*(@p2+1i)*y^3+6*@p1^2*(@p2+1i)^2*x^2*y^2 \ -4*@p1*(@p2+1i)^2*x*y^2-2*@p1^3*x*y^2-2*@p1^2*(@p2+1i)^2*y^2+(@p2+1i)^2*y^2+@p1^2*y^2 \ -4*@p1*(@p2+1i)^3*x^3*y+2*(@p2+1i)^3*x^2*y+4*@p1^2*(@p2+1i)*x^2*y+4*@p1*(@p2+1i)^3*x*y \ -2*(@p2+1i)^3*y-4*@p1^2*(@p2+1i)*y+(@p2+1i)^4*x^4-2*@p1*(@p2+1i)^2*x^3-2*(@p2+1i)^4*x^2 \ +(@p2+1i)^2*x^2+@p1^2*x^2+2*@p1*(@p2+1i)^2*x-@p1^2-(@p2+1i)^2+(@p2+1i)^4 elseif @V=="OM 1" pz=sin(@p1*x)-tan(@p2*y)+flip(tan(@p3*x)+sin(@p4*y)) elseif @V=="OM 2" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) elseif @V=="OM 3" pz=x+y+(@p1/2*pi)*sin(2*pi*x)+flip(x+y+(@p1/2*pi)*sin(2*pi*x)-x) elseif @V=="OM 4" pz=flip(y)+flip(atanh(x)+y*(@p1-y^2)) elseif @V=="OM 5" pz=tan(@p1*y)+(tanh(@p1*x))^2+flip(tan(@p2*x)+(cosh(@p2*y))^2) elseif @V=="OM 6" pz=(x^2-y^2)*(x^2+y^2)^2-2*(@p1+1)*x*y*(x-(@p1+1)^2) elseif @V=="OM 7" pz=@p1*sin(x^2+y^2)+@p2*x*(x^2-y^2)-2*@p1*x*y*(@p1^2-@p2^2) elseif @V=="OM 8" pz=recip(@p1*(x^2-1))*@p2^2*x*tanh(@p1*(y^2-1))-@p1*@p2*(x*y+1) elseif @V=="OM 9" pz=(x^2-(@p1-1+1.5i)^2)*(x-(@p1-1+1.5i))^2+(y^2-(@p1-1+1.5i)^2)^3 elseif @V=="OM 10" pz=(x^2-@p1^2)*(x-@p1)^3+(y^2-@p2^2)^2 elseif @V=="OM 11" pz=((@p1*@p2-x)^2+(@p2-y)^2)/@p3^2-1 elseif @V=="OM 12" pz=(x^2+y^2)^2-@p1/(x^2-y^2) elseif @V=="OM 13" pz=tan(@p1*y)+@p2*sqr(@p1*x)+flip(tan(@p3*x)+@p4*recip(@p3*y)) elseif @V=="OM 14" pz=sin(@p1*y)+@p2*tanh(@p1*x)+flip(cosh(@p3*x)+@p4*tan(@p3*y)) elseif @V=="OM 15" pz=abs(@p1*y)+@p2*sin(@p1*x)+flip(abs(@p3*x)+@p4*sin(@p3*y)) elseif @V=="OM 16" pz=sin(@p1*y)+@p2*recip(@p1*x)+flip(tan(@p3*x)+@p4*sqr(@p3*y)) elseif @V=="OM 17" pz=y+flip(@p1+@p2*x+x^2-x*y)+x^4*(x^2+y^2)-(@p2*x^2-@p1^3)^2 elseif @V=="OM 18" pz=(x^2+y^2-@p1*(@p2-3.5)*x)^2-(x^2+y^2)*((@p2-3.5)*x-(@p1+1))^2\ +cos(@p1)*(x+(@p2-3.5)*sin(y))+sin(@p1)*y+flip(-sin(@p1)*(x+(@p2-3.5)*sin(y))+cos(@p1)*y) elseif @V=="OM 19" pz=(x^2+y^2-(@p1-2.15)*x)^2-@p2^2*(x^2+y^2)+y-(@p1-2.15)/sin(x/@p2) elseif @V=="OM 20" pz=y-(@p1+0.5i)*cotan(x/(@p2+1))+(2*x^2+y^2)^2+2*sqrt(2)*(@p1+0.5i)*x*(2*x^2-3*y^2)+2*(@p1+0.5i)^2*(y^2-x^2) elseif @V=="Parabola 1" pz=4*@p1*(x-@p2)-(y-@p3)^2 elseif @V=="Parabola 2" pz=x-(@p1-2.5-0.5i)*(y-@p2)^2-@p3 elseif @V=="Parabola 3" pz=y-@p1*x^2-@p2*x-@p3 elseif @V=="Parabola 4" pz=x^2*(x^2+y^2)-(@p1+5)*y*(x^2-y^2) elseif @V=="Parabola 5" pz=@p1*y^2-x*(x^2-2*(@p2-2)*x+@p3) elseif @V=="Parabola 6" pz=y^3-@p1*x^2 elseif @V=="Pickover 1" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Pickover 2" pz=sin(@p1*y)+sqr(sin(@p1*x))+flip(sin(@p2*x)+sqr(sin(@p2*y))) elseif @V=="Pickover 3" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3) elseif @V=="Pickover 4" pz=abs(sin(@p1*y))+(sin(@p1*x))^2+flip(abs(sin(@p2*x))+(sin(@p1*y))^2) elseif @V=="Pickover 5" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin(@p3*x)+@p4*cos(@p3*y)) elseif @V=="Pickover 6" pz=x-@p1*sin(y+tan((@p2+1i)*y))+flip(y-@p1*sin(x+tan((@p2+1i)*x))) elseif @V=="Pickover 7" pz=@p1*sin(y+tan((@p2+1i)*y))+flip(@p1*sin(x+tan((@p2+1i)*x))) elseif @V=="Pendulum 1" pz=y+flip(-sin(x)+@p1) elseif @V=="Pendulum 2" pz=y+flip(-@p1*sin(x)-@p2*y) elseif @V=="Pendulum 3" pz=y+flip(-sin(x)+y*(@p1+@p2*cos((@p3+1+2i)*x))*(-@p4)) elseif @V=="Pendulum 4" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) endif f=|j|/|pz| j=pz if f<@adj2 && i> 0 h=true g=c*f+d*b endif i=i+1 d=i%a endif endfunc float func ResultIndex(complex pz) if @version<101 if @invert==false if @solid if h index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif else if @solid if !h index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif endif else if @solid if h && g>@sca*40 index=((real(g)+1)%256)/256 else m_Solid=true endif else index=((real(g)+1)%256)/256 endif endif return index endfunc private: float a float b float c float d float f int i float g bool h complex j float index default: title="Sailor's Traps" int param version caption="Version" default=101 visible=@version<101 endparam param V caption="Variant" enum="Conchoid 1""Conchoid 2""Conchoid 3""Conchoid 4""Conchoid 5""Conchoid 6"\ "Duffing 1""Duffing 2""Duffing 3""Duffing 4""Duffing 5"\ "Henon 1""Henon 2""Henon 3""Henon 4""Henon 5""Ikeda 1""Ikeda 2""Ikeda 3"\ "Lemniscate 1""Lemniscate 2""Lemniscate 3""Lissajous 1""Lissajous 2""Lissajous 3""OM 1"\ "OM 2""OM 3""OM 4""OM 5""OM 6""OM 7""OM 8""OM 9""OM 10""OM 11"\ "OM 12""OM 13""OM 14""OM 15""OM 16""OM 17""OM 18""OM 19""OM 20""Parabola 1""Parabola 2""Parabola 3"\ "Parabola 4""Parabola 5""Parabola 6""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Pickover 5"\ "Pickover 6""Pickover 7""Pendulum 1""Pendulum 2""Pendulum 3""Pendulum 4" endparam param p1 caption="Variant Parameter" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V!="Pendulum 1" && @V!="Henon 2" && @V!="Lemniscate 1" \ && @V!="Lemniscate 3" && @V!="Lissajous 1" && @V!="Lissajous 2" \ && @V!="OM 3" && @V!="OM 4" && @V!="OM 6" && @V!="OM 9" \ && @V!="OM 12" && @V!="Parabola 4" && @V!="Parabola 6" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Conchoid 1" || @V=="Duffing 2" || @V=="Duffing 3" || @V=="Duffing 4" || @V=="Duffing 5" || @V=="Henon 4" \ || @V=="Ikeda 1" || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="OM 1" \ || @V=="OM 11" || @V=="OM 13" || @V=="OM 14" || @V=="OM 15" || @V=="OM 16" \ || @V=="Parabola 1" || @V=="Parabola 2" || @V=="Parabola 3" || @V=="Parabola 5" \ || @V=="Pickover 1" || @V=="Pickover 3" || @V=="Pickover 5" || @V=="Pendulum 3" || @V=="Pendulum 4" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Duffing 3" || @V=="Duffing 4"|| @V=="Duffing 5" || @V=="Henon 4" \ || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="OM 1" || @V=="OM 13" \ || @V=="OM 14" || @V=="OM 15" || @V=="OM 16" || @V=="Pickover 1" \ || @V=="Pickover 5" || @V=="Pendulum 3" || @V=="Pendulum 4" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Duffing 3" endparam func fn1 caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param adj1 caption="Adjustment 1" default=(8,30) endparam param adj2 caption="Adjustment 2" default=0.188 endparam param S caption="Symmetrize" default=false endparam param solid caption="Solid Color" default=true endparam param sca caption="Solid Color Adjustment" default=0.3 visible=@solid==true && @version==101 endparam param invert caption="Invert Solid Color" default=false visible=@solid==true && @version<101 endparam } class OM_ModifiedCollatz(common.ulb:ConvergentDivergentFormula) { ;Based on a formula by Nathaniel Johnston ;http://www.njohnston.ca/2009/06/the-collatz-conjecture-as-a-fractal/ public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz*(@cp1+cos(pi*pz))/4+(3*pz+@cp2)*(@cp3-cos(pi*pz))*(3-sqrt(2)*cos(pi*(2*pz-@cp4)/4))/16 return pz endfunc default: title="Modified Collatz" int param version caption="Version" default=100 visible=@version<100 endparam param cp1 caption="Collatz Parameter 1" default=(1,0) endparam param cp2 caption="Collatz Parameter 2" default=(1,0) endparam param cp3 caption="Collatz Parameter 3" default=(1,0) endparam param cp4 caption="Collatz Parameter 4" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout value" default=10.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout value" default=0.0000000001 exponential=true endparam } class OM_BivarModifiedCollatz(common.ulb:ConvergentDivergentFormula) { ;Based on a formula by Nathaniel Johnston ;http://www.njohnston.ca/2009/06/the-collatz-conjecture-as-a-fractal/ public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif return pz return pk endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*fn2(pz)+@zp2 pk=@kp1*fn2(pk)+@kp2 if @bf=="ident" pk=ident(pz/pk) elseif @bf=="sin" pk=sin(pz/pk) elseif @bf=="sinh" pk=sinh(pz/pk) elseif @bf=="asin" pk=asin(pz/pk) elseif @bf=="asinh" pk=asinh(pz/pk) elseif @bf=="versin" pk=1-cos(pz/pk) elseif @bf=="aversin" pk=acos(1-(pz/pk)) elseif @bf=="haversin" pk=(1-cos(pz/pk))/2 elseif @bf=="ahaversin" pk=2*asin(sqrt(pz/pk)) elseif @bf=="coversin" pk=1-sin(pz/pk) elseif @bf=="acoversin" pk=asin(1-(pz/pk))+0.6 elseif @bf=="hacoversin" pk=(1-sin(pz/pk))/2 elseif @bf=="cos" pk=cos(pz/pk)-1 elseif @bf=="cosh" pk=cosh(pz/pk) elseif @bf=="acos" pk=acos(pz/pk)+0.6 elseif @bf=="acosh" pk=acosh(pz/pk)+0.6 elseif @bf=="vercos" pk=1+cos(pz/pk)+1 elseif @bf=="avercos" pk=acos(1+(pz/pk)) elseif @bf=="havercos" pk=(1+cos(pz/pk))/2 elseif @bf=="ahavercos" pk=2*acos(sqrt(pz/pk))-3 elseif @bf=="covercos" pk=1+sin(pz/pk) elseif @bf=="acovercos" pk=asin(1+(pz/pk)) elseif @bf=="hacovercos" pk=(1+sin(pz/pk))/2 elseif @bf=="tan" pk=tan(pz/pk) elseif @bf=="tanh" pk=tanh(pz/pk) elseif @bf=="atan" pk=atan(pz/pk) elseif @bf=="cotan" pk=cotan(pz/pk)+0.5 elseif @bf=="cotanh" pk=cotanh(pz/pk) elseif @bf=="acotan" pk=atan(1/(pz/pk)) elseif @bf=="sec" pk=1/cos(pz/pk) elseif @bf=="sech" pk=1/cosh(pz/pk) elseif @bf=="asec" pk=acos(1/(pz/pk))+0.7 elseif @bf=="asech" pk=acosh(1/(pz/pk))+0.7 elseif @bf=="cosec" pk=1/sin(pz/pk) elseif @bf=="cosech" pk=1/sinh(pz/pk) elseif @bf=="acosec" pk=asin(1/(pz/pk)) elseif @bf=="acosech" pk=asinh(1/(pz/pk)) elseif @bf=="exsec" pk=1.3*(1/cos(pz/pk)-1) elseif @bf=="aexsec" pk=acos(1/((pz/pk)+1)) elseif @bf=="excosec" pk=0.45*(1/sin(pz/pk)-1) elseif @bf=="aexcosec" pk=asin(1/((pz/pk)+1)) elseif @bf=="crd" pk=2*sin((pz/pk)/2) elseif @bf=="acrd" pk=2*asin((pz/pk)/2) elseif @bf=="gd" pk=asin(tanh(pz/pk)) elseif @bf=="agd" pk=asinh(tan(pz/pk)) elseif @bf=="sinc" pk=sin(pz/pk)/(pz/pk) elseif @bf=="sinhc" pk=sinh(pz/pk)/(pz/pk) elseif @bf=="cosc" pk=cos(pz/pk)/(pz/pk)+0.5 elseif @bf=="coshc" pk=cosh(pz/pk)/(pz/pk) elseif @bf=="tanc" pk=tan(pz/pk)/(pz/pk) elseif @bf=="tanhc" pk=tanh(pz/pk)/(pz/pk) elseif @bf=="cotanc" pk=cotan(pz/pk)/(pz/pk)+1 elseif @bf=="cotanhc" pk=cotanh(pz/pk)/(pz/pk) elseif @bf=="secc" pk=1/((pz/pk)*cos(pz/pk)) elseif @bf=="sechc" pk=1/((pz/pk)*cosh(pz/pk)) elseif @bf=="cosecc" pk= 1/((pz/pk)*sin(pz/pk)) elseif @bf=="cosechc" pk=1/((pz/pk)*sinh(pz/pk)) elseif @bf=="sqr" pk=sqr(pz/pk) elseif @bf=="sqrt" pk=sqrt(pz/pk) elseif @bf=="cube" pk=(pz/pk)^3 elseif @bf=="cuberoot" pk=(pz/pk)^(1/3) elseif @bf=="log" pk=log(pz/pk)+1 elseif @bf=="colog" pk=-log(pz/pk)+1 elseif @bf=="exp" pk=exp(pz/pk)+1.5 elseif @bf=="recip" pk=recip(pz/pk) elseif @bf=="expit" pk=1/(1+exp(-(pz/pk))) elseif @bf=="gauss" pk=exp(-sqr(pz/pk)) elseif @bf=="softplus" pk=log(1+exp(pz/pk)) elseif @bf=="ceil" pk=ceil(pz/pk) elseif @bf=="floor" pk=floor(pz/pk) elseif @bf=="trunc" pk=trunc(pz/pk) elseif @bf=="round" pk=round(pz/pk) elseif @bf=="+sqrt" pk=(pz/pk)+sqrt(pz/pk) elseif @bf=="+sqr" pk=(pz/pk)+sqr(pz/pk) elseif @bf=="+cotanh" pk=(pz/pk)+cotanh(pz/pk) elseif @bf=="+cotan" pk=(pz/pk)+cotan(pz/pk) elseif @bf=="+cos" pk=(pz/pk)+cos(pz/pk) elseif @bf=="+sin" pk=(pz/pk)+sin(pz/pk) elseif @bf=="+round" pk=(pz/pk)+round(pz/pk) elseif @bf=="+recip" pk=(pz/pk)+recip(pz/pk) elseif @bf=="-exp" pk=(pz/pk)-exp(pz/pk) elseif @bf=="-log" pk=(pz/pk)-log(pz/pk) elseif @bf=="-acosh" pk=(pz/pk)-acosh(pz/pk) elseif @bf=="-cosh" pk=(pz/pk)-cosh(pz/pk) elseif @bf=="-cos" pk=(pz/pk)-cos(pz/pk) elseif @bf=="*sqrt" pk=(pz/pk)*sqrt(pz/pk) elseif @bf=="*cotanh" pk=(pz/pk)*cotanh(pz/pk) elseif @bf=="*atan" pk=(pz/pk)*atan(pz/pk) elseif @bf=="*tanh" pk=(pz/pk)*tanh(pz/pk) elseif @bf=="*tan" pk=(pz/pk)*tan(pz/pk) elseif @bf=="*cos" pk=(pz/pk)*cos(pz/pk) elseif @bf=="*sin" pk=(pz/pk)*sin(pz/pk) elseif @bf=="third" pk=(pz/pk)/3 elseif @bf=="half" pk=0.5*(pz/pk) elseif @bf=="double" pk=2*(pz/pk) endif pk=@p8*pk+@p9 pz=pz*(@cp1+cos(pi*pz))/4+((3*pz+@cp2)/16)*(@cp3-cos(pi*pz))*\ (3-sqrt(2)*cos((2*pz-@cp4)*pi/4))+@p8*(pk*(@cp1+cos(pi*pk))\ /4+((3*pk+@cp2)/16)*(@cp3-cos(pi*pk))*(3-sqrt(2)*cos((2*pk-@cp4)*pi/4)))+@p9 return pz return pk endfunc private: complex pk default: title="Bivar Modified Collatz" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam param bf caption="Bivar Function" enum="ident""sin""sinh""asin""asinh""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""cos""cosh""acos""acosh""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""tan""tanh""atan""cotan""cotanh""acotan"\ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc""sqr""sqrt"\ "cube""cuberoot""log""colog""exp""recip"\ "expit""gauss""softplus""ceil""floor""trunc""round"\ "+sqrt""+sqr""+cotanh""+cotan""+cos""+sin""+round""+recip"\ "-exp""-log""-acosh""-cosh""-cos"\ "*sqrt""*cotanh""*atan""*tanh""*tan""*cos""*sin"\ "third""half""double" default=0 endparam param p8 caption="Bivar Parameter 1" default=(0.5,0) endparam param p9 caption="Bivar Parameter 2" default=(0,0) endparam param cp1 caption="Collatz Parameter 1" default=(1,0) endparam param cp2 caption="Collatz Parameter 2" default=(1,0) endparam param cp3 caption="Collatz Parameter 3" default=(1,0) endparam param cp4 caption="Collatz Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func fn2 caption="Loop Function" default=ident() endfunc param p_power visible=false endparam param p_upperbailout caption="Upper Bailout value" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout value" default=0.00000000000001 exponential=true endparam } class OM_BivarX59(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) if @v==3 pz=@sp+1 elseif @v==4 pz=@sp+0.5 elseif @v==8 pz=@sp-0.5 else pz=@sp endif else pz=@sf(pz) pk=@sp endif return pz return pk endfunc private: complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @v==0 pz=pz^2+pk/(@bp-1) elseif @v==1 pz=pz^2+(pk+pz)/(@bp-1) elseif @v==2 pz=pz^2+(pk-pz)/@bp elseif @v==3 pz=pz^2+(pk*pz)/(@bp-1.35) elseif @v==4 pz=pz^2+(pk/pz)/@bp elseif @v==5 pz=pz^2+(pk^2)/@bp elseif @v==6 pz=pz^2+(pk^2+pz)/(@bp-3.67) elseif @v==7 pz=pz^2+(pk^2-pz)/(@bp-1) elseif @v==8 pz=pz^2+(pk^2/pz)/(@bp+5) endif pk=pk^2+@c return pz return pk endfunc default: title="Bivar X 59" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam func sf caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) visible=@sv!=0 endparam param v caption="Bivar Variant" enum="1""2""3""4""5""6""7""8""9" endparam param bp caption="Bivar Parameter" default=(2,0) endparam param c caption="Julia Seed" default=(-1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Batrengli(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,0) b=(0,0) c=0.0 d=0.0 f=0.0 k=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*abs(fn1(pz))+@zp2 x=real(pz) y=imag(pz) if @v==0 a=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) b=sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2) elseif @v==1 a=cos(@p1*y)+(cos(@p1*x))^2+flip(sin(@p3*x)+@p4*sin(@p3*y)) b=sin(@p1*y)+@p2*sin(@p1*x)+flip(cos(@p2*x)+(cos(@p2*y))^2) elseif @v==2 a=cos(@p1*y)+(cos(@p1*x))^2+flip(asin(@p3*x)+@p4*asin(@p3*y)) b=asin(@p1*y)+@p2*asin(@p1*x)+flip(cos(@p2*x)+(cos(@p2*y))^2) elseif @v==3 a=sin(@p1*x)-tan(@p2*y)+flip(tan(@p1*x)+sin(@p2*y)) b=sin(@p1*x)-tan(@p2*y)+flip((@p1*x)+(@p2*y)) elseif @v==4 a=sin(@p1*x)-tan(@p2*y)+flip(tan(@p1*x)+sin(@p2*y)) b=sin(@p1*x)-tan(@p2*y)+flip(sqr(@p1*x)+(@p2*y)) elseif @v==5 a=cabs(@p1*x)-sqr(-@p2*y/2)+flip(sqr(@p3*x)+cabs(@p4*y/2)) b=x-tan(y-@p1*sin(y))+flip(y+tan(x-@p2*sin(y)/2)) elseif @v==6 a=cosh(@p1*x)-(@p2*y)+flip((@p3*x)+cosh(@p4*y)) b=x-(y-@p1*(y))+flip(y+(x+@p2*(y))) elseif @v==7 a=cosh(@p1*x)-sqr(@p2*y)+flip(sqr(@p3*x)+cosh(@p4*y)) b=x-(y-@p1*cos(y))+flip(y+(x+@p2*cos(y))) elseif @v==8 a=@p1*(y^2-x^2)*(x-1)*(2*x-3)-4*(@p2-1.5)*(x^2+y^2-2*x)^2 b=(@p2-1.5)*sqrt((x-@p1)^2+y^2)+@p3*sqrt((x+@p1)^2+y^2)-@p4 elseif @v==9 a=(@p1-0.5)*abs(y^2-x^2)*(x-1)*(2*x-3)-4*@p2*cos(x^2+y^2-2*x)^2 b=@p2*cos((x-(@p1-0.5))^2+y^2)+(@p3-1.5)*((x+(@p1-0.5))^2+y^2)-@p4 elseif @v==10 a=@p3*x^2+2*@p4*x*y+2*y^2-2*@p1*x-2*@p2*y b=@p2*y^2-@p3*(@p1-x)^2*x^2 elseif @v==11 a=@p3*x^2+2*@p4*tanh(x*y)+2*y^2-2*@p1*x-2*sqr(@p2*y) b=@p2*flip(y)^2-@p3*(@p1-x)^2*@p4*flip(x)^2 elseif @v==12 a=@p3*x^2+2*@p4*tanh(x*y)+2*y^2-2*@p1*x-2*tanh(@p2*y) b=@p2*tanh(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==13 a=@p3*x^2+2*@p4*cos(x*y)+2*y^2-2*@p1*x-2*tanh(@p2*y) b=@p2*tanh(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==14 a=@p3*x^2+2*@p4*cos(x*y)+2*y^2-2*@p1*x-2*sinh(@p2*y) b=@p2*cos(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==15 a=@p3*x^2+2*@p4*abs(x*y)+2*y^2-2*@p1*x-2*sqr(@p2*y) b=@p2*abs(y)^2-@p3*(@p1-x)^2*@p4*cos(x)^2 elseif @v==16 a=flip(@p1*y)+@p2*(@p1*x)+flip(flip((@p3-0.5+0.75i)*x)+@p4*((@p3-0.5+0.75i)*y)) b=(@p1*y)+((@p1*x))^2+flip((@p2*x)+((@p2*y))^2) elseif @v==17 a=flip(@p1*y)+@p2*(@p1*x)+flip(flip(@p3*x)+@p4*(@p3*y)) b=tanh(@p1*y)+((@p1*x))^2+flip(tanh(@p2*x)+((@p2*y))^2) elseif @v==18 a=sqr(@p1*y)+@p2*tanh(@p1*x)+flip(sqr(@p3*x)+@p4*tanh(@p3*y)) b=tanh(@p1*y)+((@p1*x))^2+flip(tanh(@p2*x)+((@p2*y))^2) elseif @v==19 a=sin(@p1*y)+@p2*flip(@p1*x)+flip(sin(@p3*x)+@p4*flip(@p3*y)) b=sqr(@p1*y)+(cos(@p1*x))^2+flip(sqr(@p2*x)+(cos(@p2*y))^2) elseif @v==20 a=@p1*flip(x^2+y^2)^2-2*@p2^2*(x^2-y^2)+@p3^4-@p4^4 b=y-@p1*sqr(x)^3-@p2*x^2*y-@p3*(x*y)^2-@p4*y^3 elseif @v==21 a=(@p1-0.5)*flip(x^2+y^2)^2-2*@p2^2*tanh(x^2-y^2)+@p3^4-@p4^4 b=y-(@p1-0.5)*sqr(x)^3-@p2*x^2*y-@p3*cos(x*y)^2-@p4*y^3 elseif @v==22 a=(sin(@p1*y))^3+@p2*sin(@p1*x)+flip((sin(@p3*x))^2+@p4*sin(@p3*y)) b=sin(@p1*y)+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^4) elseif @v==23 a=(cos(@p1*y))^3+@p2*cos(@p1*x)+flip((cos(@p3*x))^2+@p4*cos(@p3*y)) b=cos(@p1*y)+(cos(@p1*x))^3+flip(cos(@p2*x)+(cos(@p2*y))^4) elseif @v==24 a=(tanh(@p1*y))^3+@p2*cos(@p1*x)+flip((tanh(@p3*x))^2+@p4*cos(@p3*y)) b=tanh(@p1*y)+(cos(@p1*x))^3+flip(tanh(@p2*x)+(cos(@p2*y))^4) elseif @v==25 a=(tanh(@p1*y))^3+@p2*sin(@p1*x)+flip((cotan(@p3*x))^2+@p4*sin(@p3*y)) b=tanh(@p1*y)+(sin(@p1*x))^3+flip(cotan(@p2*x)+(sin(@p2*y))^4) elseif @v==26 a=(tanh(@p1*y))^3+@p2*tanh(@p1*x)+flip((tanh(@p3*x))^2+@p4*tanh(@p3*y)) b=tanh(@p1*y)+(tanh(@p1*x))^3+flip(tanh(@p2*x)+(tanh(@p2*y))^4) elseif @v==27 a=(sin(@p1*y))^3+@p2*cos(@p1*x)+flip((sin(@p3*x))^2+@p4*cos(@p3*y)) b=sin(@p1*y)+(cos(@p1*x))^3+flip(sin(@p2*x)+(cos(@p2*y))^4) elseif @v==28 a=@p1*(x)^3+@p2*cos(y)^3-1 b=x^2*@p3*cotanh(3*x^2-y^2)^2-y^2*(@p4-0.5)*cotanh(x^2+y^2) elseif @v==29 a=x^4*(x^2+y^2)-((@p2-1.5)*x^2-(@p1-1.5)^3)^2 b=(x^2+y^2)^((@p3+1)/2)-@p3*y^@p4 elseif @v==30 a=x^4*log(x^2+y^2)-flip(@p2*x^2-@p1^3)^2 b=sqrt((x^2+y^2)^((@p3+1)/2))-(@p3*y^@p4) elseif @v==31 a=x^4*cotan(x^2+y^2)-sqr(@p2*x^2-@p1^3)^2 b=tanh((x^2+y^2)^((@p3+1)/2))-(@p3*y^@p4) elseif @v==32 a=x^4*cotan(x^2+y^2)-sqr(@p2*x^2-@p1^3)^2 b=tanh((x^2+y^2)^((@p3+1)/2))-sqrt(@p3*y^@p4) elseif @v==33 a=x^4*cos(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=cos((x^2+y^2)^((@p3+1)/2))-cos(@p3*y^@p4) elseif @v==34 a=x^4*sin(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-cos(@p3*y^@p4) elseif @v==35 a=x^4*sin(x^2+y^2)-cos(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-tanh(@p3*y^@p4) elseif @v==36 a=x^4*acosh(x^2+y^2)-exp(@p2*x^2-@p1^3)^2 b=sin((x^2+y^2)^((@p3+1)/2))-tanh(@p3*y^@p4) elseif @v==37 a=x^4*acosh(x^2+y^2)-exp(@p2*x^2-@p1^3)^2 b=asinh((x^2+y^2)^((@p3+1)/2))-sqrt(@p3*y^@p4) elseif @v==38 a=flip(pz) b=pz elseif @v==39 a=flip(pz) b=sqrt(pz) elseif @v==40 a=flip(pz) b=atanh(pz) elseif @v==41 a=conj(pz) b=recip(pz) elseif @v==42 a=cabs(pz) b=tanh(pz) elseif @v==43 a=cotan(pz) b=cos(pz) elseif @v==44 a=y-@p1/sin(x/@p2) b=y^2-@p3*cotan(x/@p4) elseif @v==45 a=(y)-@p1/(x/@p2) b=sqr(y^2)-@p3*cotan(x/@p4) elseif @v==46 a=tan(y)-@p1/sqrt(x/@p2) b=sqr(y^2)-@p3*cotan(x/@p4) elseif @v==47 a=ceil(y)-@p1/sin(x/@p2) b=atan(y^2)-@p3*cos(x/@p4) elseif @v==48 a=ceil(y)-@p1/sqrt(x/@p2) b=sqrt(y^2)-@p3*acos(x/@p4) elseif @v==49 a=exp(y)-@p1/atan(x/@p2) b=atanh(y^2)-@p3*cos(x/@p4) elseif @v==50 a=exp(y)-@p1/exp(x/@p2) b=exp(y^2)-@p3*cotan(x/@p4) elseif @v==51 a=ceil(y)-@p1/sqrt(x/@p2) b=ceil(y^2)-@p3*atan(x/@p4) elseif @v==52 a=y^2*(@p3-x)^2-(@p2-x)^2*(@p1^2-x^2) b=@p1^2*(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==53 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==54 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*tan(x^2+y^2)*(x-@p4)^2 elseif @v==55 a=y^2*log(@p3-x)^2-(@p2-x)^2*(@p1^2-x^2) b=@p1^2*atan(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 elseif @v==56 a=y^2*sin(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*sin(x^2+y^2)*(x-@p4)^2 elseif @v==57 a=y^2*cos(@p3-x)^2-(@p2-x)^2*cos(@p1^2-x^2) b=@p1^2*cos(x^2+y^2-@p2*x)^2-@p3^2*cos(x^2+y^2)*(x-@p4)^2 elseif @v==58 a=y^2*tan(@p3-x)^2-(@p2-x)^2*tan(@p1^2-x^2) b=@p1^2*tan(x^2+y^2-@p2*x)^2-@p3^2*tan(x^2+y^2)*(x-@p4)^2 elseif @v==59 a=y^2*tanh(@p3-x)^2-(@p2-x)^2*tanh(@p1^2-x^2) b=@p1^2*tanh(x^2+y^2-@p2*x)^2-@p3^2*asinh(x^2+y^2)*(x-@p4)^2 elseif @v==60 a=y^2*sqr(@p3-x)^2-(@p2-x)^2*sqr(@p1^2-x^2) b=@p1^2*sqr(x^2+y^2-@p2*x)^2-@p3^2*sqr(x^2+y^2)*(x-@p4)^2 elseif @v==61 a=cos(@p1)*(x+(@p2-2)*sin(y))+sin(@p1)*y+flip(-sin(@p1)*(x+(@p2-2)*sin(y))+cos(@p1)*y) b=x+@p1*y+(@p2-2)+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y+(@p2-2)+(@p3/(2*pi))*sin(2*pi*x)) elseif @v==62 a=cos((@p1-2.5))*(x+(@p2-0.5)*cotanh(y))+cotanh((@p1-2.5))*y+flip(-flip((@p1-2.5))*(x+(@p2-0.5)*flip(y))+cos((@p1-2.5))*y) b=x+(@p1-2.5)*y+(@p2-0.5)+((@p3-2.5)/(2*pi))*cos(2*pi*x)+flip((@p1-2.5)*y+(@p2-0.5)+((@p3-2.5)/(2*pi))*cos(2*pi*x)) elseif @v==63 a=y^2*flip(@p3-x)^2-(@p2-x)^2*sin(@p1^2-x^2) b=@p1^2*sin(x^2+y^2-@p2*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2 endif c=|fn2(a)-fn2(b)| f=c^2 d=@p5*f k=k+log(d) endfunc float func ResultIndex(complex pz) if @solid if @invert if k>=@sca*10 index=@p6*k/m_Iterations else m_Solid=true endif else if k<@sca*10 index=@p6*k/m_Iterations else m_Solid=true endif endif else index=@p6*k/m_Iterations endif return index endfunc private: complex a complex b float c float d float f float k float index default: title="Batrengli" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64" endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Batrengli Function" default=ident() endfunc param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@v!=3 && @v!=4 endparam param p4 caption="Variant Parameter 4" visible=@v!=3 && @v!=4 && @v!=61 && @v!=62 default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p5 caption="Adjustment 1" default=1.0 endparam param p6 caption="Adjustment 2" default=-0.105 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Langmod(common.ulb:GradientColoring) { ;Modification of code by pauldebrot: ;https://tinyurl.com/wg4ke44 ;Based on https://arxiv.org/pdf/2001.08937.pdf public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=0.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @v2==0 pz=(x^2+y^2-(@p2+1+1.5i)*@p1^2)^2-@p3*@p1*(y-@p1+sqrt(3)*x)*(y-@p1-sqrt(3)*x)*(2*y+@p1)+x^2*y^2-@p4^2*(@p4^2-y^2) elseif @v2==1 pz=(x^2-y^2)^2-@p1^2*x^2+@p2^2*y^2+@p3*(y^2-x^2)*(x-1)*(2*x-3)-4*@p4*(x^2+y^2-2*x)^2 elseif @v2==2 pz=x^2*@p1*sin(3*x^2-y^2)^2-@p2*y^2*(x^2+y^2)+@p3*(x^(2/3))+(y^(2/3))-@p4^(2/3) elseif @v2==3 pz=x^4*cos(x^2+y^2)-cosh(@p2*x^2-@p1^3)^2+@p3*cos(x^2+y^2)^2-x^3-cos(@p4*y^3) elseif @v2==4 pz=@p2^4*y^2-x^4*(@p1^2-x^2)+(@p3+1+0.25i)*y^2-x^2*(x-@p4) elseif @v2==5 pz=sin(@p2^2*y^2)-@p4*x^2*@p3*flip(y^2-x^2)+y^2*(@p1^2-x^2)-cosh(x^2+2*@p2*y-@p1^2)^2 elseif @v2==6 pz=(x^2+x*y+@p1*x-@p2^2)^2-(@p2^2-x^2)*(x-y+@p1)^2+2*y^2*(x^2+y^2)-2*@p4*y^2*(x+y)\ +(@p4^2-3*@p3^2)*y^2-@p3^2*x^2+2*@p3^2*@p4*(x+y)+@p3^2*(@p3^2-@p4^2) elseif @v2==7 pz=flip(x)^3+exp(y)^3-@p1+x^(2/3)+(@p2*y)^(2/3)+(@p3^2*x*y)^(2/3)-@p4^3 elseif @v2==8 pz=(x^4)-@p1*x^2*y+(y^3)+exp(@p2^2-x^2)*(@p3^2+y^2)-@p2^2*@p4^2 elseif @v2==9 pz=x^2/@p1^2-y^2/@p2^2-1+@p3*x^3-3*@p4*x*y^2-@p2^3 elseif @v2==10 pz=(x^2+y^2-2*(@p1-2.25-1.5i)*x)^2-4*(@p1-2.25-1.5i)^2*(x^2+y^2)+\ (@p2-3.2)*sqrt((x-(@p1-2.25-1.5i))^2+y^2)+@p3*sqrt((x+@p4)^2+y^2)-@p4 elseif @v2==11 pz=(x^2+y^2)*y^2-(@p1-3-3.5i)^2*(x*sin(@p2)+y*cos(@p2))^2+(x^2+y^2)*(x*cos(@p4)+y*sin(@p4))-2*@p3*y^2 elseif @v2==12 pz=4*(x^2+y^2-@p1*x)^3-27*@p2^2*(x^2+y^2)^2-@p3^3*x^3-48*@p4*x*(x^2+y^2)^2\ +64*(x^2+y^2)^3-3*@p1^2*(x^2+y^2)*(5*x^2+9*y^2) elseif @v2==13 pz=(x^2+y^2)^3-((@p1+1)*x^2-(@p2-1)*y^2)^2+y-@p1*log(x^3)-@p2*x^2*y-@p3*x*y^2-(@p4*y^3) elseif @v2==14 pz=x^2+y^2-@p1^2+x*(x^2+y^2)+@p2*x^2+@p3*y^2+2*@p4*x+2*@p1*y+@p2 elseif @v2==15 pz=(@p1-4)*y^2-@p2*x*(x+1)*(x-3)*(x+2)*(x-2)+(@p3+4.5-2i)*y^2-@p4*recip((x^2+1)^3) elseif @v2==16 pz=@p3*x^2+2*@p4*x*y+@p1*y^2-2*@p1*x-2*@p2*y+(x^2+y^2)^2-@p4*y^2 elseif @v2==17 pz=y-@p2*e^(x/@p1)-@p3*e^(-x/@p1)+(x^2+y^2)*atan(y/x)-@p4*y elseif @v2==18 pz=(x^2+y^2+@p3^2-@p2^2)^2*(y^2+(x+@p1)^2)-4*@p4^2*(x*(x+@p1)+y^2)^2+(x-@p2)^2*(x^2+y^2)-@p3^2*x^2 elseif @v2==19 pz=y^4-x^4-(@p1+2+0.5i)^2*y^2+@p2^2*x^2+@p3*(x^2+y^2)^3-@p4^4*x^2 elseif @v2==20 pz=(x^2+y^2)^3+(@p1+2+0.5i)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@p2^4*y^2-4*@p3^6+x^6+y^6\ +3*@p4*x^4*y^2+3*(@p1+2+0.5i)*x^2*y^4+3*x^4-5*@p2*y^4+8*y^2-4 elseif @v2==21 pz=(x^2+y^2)^3-@p1^2*x^4+x^4+2*x^2*@p2*y^2+4*y^4-(@p3+3+0.75i)*x^3-6*x^2-@p4*x*y^2 elseif @v2==22 pz=(@p2-1.5+0.5i)*(x^2+y^2)^2-4*@p1*x*y^2+y^2*(@p3^2-x^2)-@p4^4 elseif @v2==23 pz=@p1^2*y^2+@p2^2*x^2-x^2*y^2+y^2*x-@p3*y^2-@p4*x^2 elseif @v2==24 pz=(@p1^2-4*(x^2+y^2))^3-108*@p2^2*x^2*(x^2+y^2)+tan(@p3)^2*(x+pi/2)^2-y^2+2*@p4*x elseif @v2==25 pz=@p2^2*(x^2+y^2-@p1*x)^2-@p3^2*(x^2+y^2)*(x-@p4)^2+3*x^2-y^2-@p1^2 elseif @v2==26 pz=(@p1+3-3i)^2*x^4-(@p2-0.5i)^4*(x^2+y^2)+@p3*y^2*(x^2+y^2)-@p4^2*x^2 elseif @v2==27 pz=(x^2+y^2)^2+18*@p1^2*(x^2+y^2)-27*@p2^4-8*@p3*x*(x^2-3*y^2)+y^4-x^4+@p4*y^2+@p1*x^2 elseif @v2==28 pz=(x^2+y^2)^2-(@p1*x+@p2*y)*x^2+y^4+10*@p4*y^2*@p3*x^2+5*x^4-y elseif @v2==29 pz=(x^2+y^2)*(y^2+x*(x+@p2))-4*@p1*x*y^2+x^3+@p3*y^3-3*@p4*x*y elseif @v2==30 pz=(x^2+y^2)*(2*(x^2+y^2)-@p1^2)^2-@p2^4*x^2+@p3*y-sqrt(2*pi)*@p4*exp(-x^2/2) elseif @v2==31 pz=@p3*y^2-@p4*x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)+x^2/@p1^2+y^2/@p2^2-1 elseif @v2==32 pz=(x^2+y^2)^2-@p1*x^2-@p2*y^2+(x^2+y^2)^2+4*(@p4+0.5-0.75i)*((@p4+0.5-0.75i)\ -(@p3+0.5-0.75i))*(x^2+y^2)-4*(@p4+0.5-0.75i)^2*x^2 elseif @v2==33 pz=((x-(@p2+1))^2+y^2)*(x*(x-(@p2+1))+y^2)-4*(@p1-3.25+0.25i)*(x-(@p2+1))*y^2+@p3*(x^2+y^2)^3-@p4^3*x*(x^2-3*y^2) elseif @v2==34 pz=@p2*(x^2+y^2)^3-(@p1+2.75)^3*x*(x^2-3*y^2)+(@p3-1.5-2i)^4*y^2-(@p4^2-x^2)^3 elseif @v2==35 pz=x^3+@p2*y^3-@p1^3+y^2-@p3*x^5+@p4*x elseif @v2==36 pz=@p2*(x^2+y^2)^2-(@p1+3.5i)^2*(x^2-y^2)+(x^2+y^2)^2-(2*@p3^2+(@p4-3.25-3i))*x^2+(2*@p3^2-(@p4-3.25-3i))*y^2 elseif @v2==37 pz=(x^2+y^2-(@p1+2i)*y)^2-(@p2-3.5-2.25i)*(x^2+y^2)+(x^2+y^2-@p3*x)^2-@p4^2*(x^2+y^2) elseif @v2==38 pz=(@p1+1-1.25i)*(x^2+y^2-3*x)^2-4*@p2*x^2*(2-x)+2*(2*x^2-(@p3-2)^2)^2-@p4*(2*y-(@p3-2))^2*(y+@p4) elseif @v2==39 pz=x^2*(4*x^2-3*(@p1-3+0.5i)^2)+4*(@p2-1.5)^2*y^2*(y^2-(@p1-3+0.5i)^2) \ +@p3^4*y^4-4*@p3^3*@p4*x*y^3+2*@p3^2*@p4*y^3+6*@p3^2*@p4^2*x^2*y^2 \ -4*@p3*@p4^2*x*y^2-2*@p3^3*x*y^2-2*@p4^2*@p4^2*y^2+@p4^2*y^2+@p3^2*y^2 \ -4*@p3*@p4^3*x^3*y+2*@p4^3*x^2*y+4*@p3^2*@p4*x^2*y+4*@p3*@p4^3*x*y \ -2*@p4^3*y-4*@p3^2*@p4*y+@p4^4*x^4-2*@p3*@p4^2*x^3-2*@p4^4*x^2 \ +@p4^2*x^2+@p3^2*x^2+2*@p3*@p4^2*x-@p3^2-@p4^2+@p4^4 elseif @v2==40 pz=(@p2-3i)*y^2-x^2*log(@p1^2/x^2)+@p3*y-@p4*log(sqrt(1-x^2)) elseif @v2==41 pz=@p2*y^3-(@p1-2.25+1.5i)*x^2+@p3*(x-0.5)^3-3*(@p4+1+0.5i)*y^2 elseif @v2==42 pz=flip(x^2+y^2-4*(@p1-1.75-0.25i)^2)^3-108*@p2^4*x^2+(x^2+y^2)*(x*2+y^2-@p3^2)^2-4*@p4^2*sqr(x^2+y^2-@p3*x)^2 elseif @v2==43 pz=@p1*flip(y^2)-x*cotan(x^2-2*@p2*x+@p3)+(y^2)-x*(x^2+2*@p4*x+@p3) elseif @v2==44 pz=@p1*x^2*y^2*(x^2+y^2)-@p2*acosh(x^2-y^2)^2+(x^2+y^2)^2-x^2*(@p3*x+@p4*y) elseif @v2==45 pz=(y-@p1)^2*(x^2+y^2)-log(@p2*x+@p3*y)^2+y*cosh(x^2+y^2)-@p3*(x^2-y^2)-2*@p4*x*y elseif @v2==46 pz=x*(x^2+y^2)-sqrt(@p2*x*y)-(@p1+3.5i)*y^2+@p3*x^2*(x^2+y^2)-@p4*y*(x^2-y^2) elseif @v2==47 pz=cotanh(@p2^2*y^2)-x^3*flip(@p1-x)+(y^(@p3+1))-@p4*(@p3-x)^@p3*x^@p4 elseif @v2==48 pz=y-@p1*x^2+(@p2-2.5+0.75i)*log(x)+(@p3-4-2.5i)*y-@p4*x+log(x) elseif @v2==49 pz=(@p2-4-2.25i)*x-y*cotan(y/@p1)+@p3*(x^2+y^2)^3-4*(@p4+3-3i)^2*x^2*y^2 elseif @v2==50 pz=x-(@p1-4+3.5i)*sin(@p2*y)+x-@p3*cos(@p4*y) elseif @v2==51 pz=(x^2-(@p2+1.5)*y)^2-(@p1-1.5-0.25i)^2*(x^2-y^2)+(x^2+y^2)*(x^2+y^2+@p3*x)^2-@p4^2*(x^2-y^2)^2 elseif @v2==52 pz=(x^4)-log(@p2*y^4)-cotanh(4*(@p1+3-1i)*x*y^2)+flip(@p4*x*y^2)-@p3*x elseif @v2==53 pz=y-@p1*@p2*x/(x^2+@p1^2)+@p4*y^2-abs(sin(x)+@p3*sin(2*x)) elseif @v2==54 pz=cosh(x^2+y^2)^2+(@p1-2)*x^2+@p2*(y^2)+2*@p3*x+@p4+(x^2+y^2)^2-2*@p1*(x^2)-2*@p2*y^2+@p3 elseif @v2==55 pz=cos(@p3^2-@p1^2+@p2^2+x^2+y^2)^2-4*@p3^2*(x^2+@p2^2)+(2*x*y)-x^4+acos(@p4*y^4) elseif @v2==56 pz=x+cos(@p2^2-y^2)-@p1*sqr((@p2+(@p2^2-y^2))/y)+cotanh(@p3*x^2)+@p4*y^2-e^(2*x-2) elseif @v2==57 pz=(@p1-5-0.25i)^@p2*(cabs(x)^@p2+cabs(y)^@p2)-(x^2+y^2)^@p2+@p3*(x^2+y^2)^2-@p4*x*(x^2-y^2) elseif @v2==58 pz=x-log(((@p1-0.75+0.25i)-sqrt(@p2^2-y^2))/y)-sqrt((@p1-0.75+0.25i)^2-y^2)+@p3*y-x^2-@p4/x elseif @v2==59 pz=x*y+@p1*x^3+@p2*x^2+@p3*x-@p4+flip(x^2+y^2)^2-cos(x^2+y^2)*sqrt(@p1*x+@p2*y)-@p3*x*cos(x^2-3*y^2) elseif @v2==60 pz=cosh(x^2+y^2)^2-exp(@p1*x+@p2*y)*(x^2-y^2)+(x^2+y^2-2*@p3^2)^2-x^2*@p4*(x^2+y^2) elseif @v2==61 pz=y^2*log(@p1+x)-x^2*log(3*@p2-x)+2*x^3+log(2*@p3*x*y^2)-3*x^2+cotan(@p4*y^2) elseif @v2==62 pz=144*@p1*(x^4+y^4)-225*@p2*(x^2+y^2)+350*x^2*y^2+81+3*@p3*y^2-x*(x-@p4)^2 elseif @v2==63 pz=27*@p1*y^2-(@p2-x)*(x+8*(@p3-0.75))^2+x*(@p3-0.75)*(x^2+y^2)-(@p4+4-1i)*(x^2+2*y^2) elseif @v2==64 pz=y^2-x^2*((@p1+2.5)^2-x^2)+(x^2+y^2)*(x^2+y^2-@p4^2)^2+4*(@p2+0.25+1i)^2*y^2*(x^2+y^2-@p3^2) elseif @v2==65 pz=y-8*@p1^3/(x^2+4*(@p2-1.5-0.25i)^2)+(x^2+y^2)^3-@p3*x*(x-(@p4-0.75+2.5i))+y*(y+@p3) elseif @v2==66 pz=y-x*(x^4-(@p1+3i))*cotan(x^2+@p2*y^2)^2+(x^3-x^2-(3*x+(@p3-4+0.75i))*y^2)*acosh(x^3-x^2+(3*x+(@p4-4.25+0.25i))*y^2) elseif @v2==67 pz=recip(@p1*(x^2-1))*@p2^2*x*tanh(@p1*(y^2-1))-@p1*@p2*cotanh(x*y+1)+x+cotanh(y^2)+cosh(@p3*x^3)+@p4*y^4+cotanh(@p3^2*@p4^2*x^5*y^5) elseif @v2==68 pz=(x^2-(@p1-0.9-2i)^2)*(x-@p2)+(y^2-(@p1-0.9-2i)^2)^2+(x^2-(@p3-0.4+0.8i)^2)*(x-(@p4-1-1.5i))^2+(y^2-(@p3-0.4+0.8i)^2)^3 elseif @v2==69 pz=(x^2-(@p1-2+0.25i))*(x-(@p1-2+0.25i))^3+(y^2-@p2^2)^2+((@p2*@p3-x)^2+(@p3-y)^2)/@p4^2-1 elseif @v2==70 pz=(@p1-2+0.25i)*(x^2+y^2)^2-@p2/(x^2-y^2)+(x^2+y^2)^4-@p3*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@p4) elseif @v2==71 pz=(2*@p1)^(@p2-4-1.5i)*y^2-(@p1+x)*(@p1-x)^((@p2-4-1.5i)+1)+(x^2+y^2)^5+@p3*(x^2-y^2)^3-(@p4-0.5-2.5i)^2*y elseif @v2==72 pz=(@p1+0.5+0.25i)*y-(@p2-2.25+3.5i)/(x*cos(x))+@p3/(x*cos(y))+(x^2+y^2)*(x^2-y^2)/(2*@p3*x*y)+(@p4-1) elseif @v2==73 pz=y^2+@p1*x^3*flip(x^2-y^2)-@p2*x^2*y*(x^2+y^2)+flip(@p2*@p3-x*y)^3+(@p3*@p4-(X^2+y^2)^2) elseif @v2==74 pz=y^2+x^2-((x+(@p3*(x-@p1))/sqrt((x-@p1)^2+(y-@p2)^2))-flip(y+(@p3*(y-@p2))/sqrt((x-@p1)^2 \ +(y-@p2)^2)))+x^2-4*@p3*y*log(x^2+y^2)+y^3*@p4^2*tan(x^2-y^2)^4 endif float f=|pz| float g=1/(f+1) float h=2*real(pz)*g float j=2*imag(pz)*g float k=(f-1)*g if @v==0 if i>0 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==1 if i>1 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==2 if i>-1 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif elseif @v==3 if i>2 a=a+(h-b)^@pow+(j-c)^@pow+(k-d)^@pow endif endif i=i+1 b=h c=j d=k endfunc float func ResultIndex(complex pz) if @solid if @invert if a<=@sca index=@adj*a/(i-1) else m_Solid=true endif else if a>@sca index=@adj*a/(i-1) else m_Solid=true endif endif else index=@adj*a/(i-1) endif return index endfunc private: float a float b float c float d int i float index default: title="Langmod" int param version caption="Version" default=100 visible=@version<100 endparam param v2 caption="Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75" endparam param v caption="Variant 2" enum="1""2""3""4" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) endparam param p4 caption="Variant Parameter 4" default=(1,0) endparam func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=0.25 endparam param adj caption="Adjustment" default=1.0 endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_SmescitResu(common.ulb:GradientColoring) { ;The basis of this coloring is from http://linas.org/art-gallery/escape/math.html public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 fpixel=pz endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+cosh(pz) elseif @v==2 pz=pz+1/cabs(pz) elseif @v==3 pz=pz+1/abs(pz) elseif @v==4 pz=pz+1/sqrt(pz) elseif @v==5 pz=pz+fpixel elseif @v==6 pz=pz+flip(fpixel) elseif @v==7 pz=pz-cosh(pz) elseif @v==8 pz=pz-recip(pz) elseif @v==9 pz=pz-1/cabs(pz) elseif @v==10 pz=pz+(pz-1i)/(pz+1i) elseif @v==11 pz=pz+recip(pz) elseif @v==12 pz=pz+log((pz-1i)/(pz+1i)) elseif @v==13 pz=pz+sqr((pz-1i)/(pz+1i)) elseif @v==14 pz=pz-(pz-1i)/(pz+1i) elseif @v==15 pz=pz-abs((pz-1i)/(pz+1i)) elseif @v==16 pz=pz+flip((pz-fpixel)/(pz+fpixel)) elseif @v==17 pz=pz+conj((pz-fpixel)/(pz+fpixel)) elseif @v==18 pz=pz+abs((pz-2)/(1-2*pz)) elseif @v==19 pz=pz+exp((pz-2)/(1-2*pz)) elseif @v==20 pz=pz-conj((pz-2)/(1-2*pz)) elseif @v==21 pz=pz-cabs((pz-2)/(1-2*pz)) elseif @v==22 pz=pz-exp((pz-2)/(1-2*pz)) elseif @v==23 pz=pz+((pz-(fpixel))/(1-(fpixel)*pz)) elseif @v==24 pz=pz+((pz-recip(fpixel))/(1-recip(fpixel)*pz)) elseif @v==25 pz=pz-((pz-recip(fpixel))/(1-recip(fpixel)*pz)) elseif @v==26 pz=pz^3+pz^2+pz+1 elseif @v==27 pz=pz^3+2*pz^2+2*pz+2 elseif @v==28 pz=0.5*pz^3+pz-1 elseif @v==29 pz=pz^3+0.5*pz^2-pz+0.8 elseif @v==30 pz=pz^3+pz^2+pz+fpixel elseif @v==31 pz=0.5*pz^4+0.5*pz^3-pz^2+0.1*pz+1 elseif @v==32 pz=-0.5*pz^4+pz^3-pz^2-pz+1 elseif @v==33 pz=exp(-((pz-2)/4)^2)*cos(pz*2*pi/4) elseif @v==34 pz=1.25*exp(-((pz-2)/4)^2)*cos(pz*2*pi/8) elseif @v==35 pz=-0.25*pz^3*exp(-pz)-1.3*pz elseif @v==36 pz=-3.75*pz/(1+pz^2)+1.5*pz elseif @v==37 pz=pz+1-(0.01/(2*pi))*sin(2*pi*pz) elseif @v==38 pz=pz+1.33-(-0.1/(2*pi))*sin(2*pi*pz) elseif @v==39 pz=recip(1+exp(1.75*pz)) elseif @v==40 pz=pz-(pz^3-1)/(3*pz^2) elseif @v==41 pz=pz-(pz^3-2)/(3*pz^2)+1 elseif @v==42 pz=pz-(pz^3+2)/(3*pz^2) elseif @v==43 pz=pz-(pz^3-fpixel)/(3*pz^2)-0.6 elseif @v==44 pz=pz-(pz^3-cosh(fpixel))/(3*pz^2) elseif @v==45 pz=pz-(pz^3-exp(fpixel))/(3*pz^2) elseif @v==46 pz=pz-(pz^3-1)/(3*pz^2)+cabs(fpixel) elseif @v==47 pz=pz-(pz^3-1)/(3*pz^2)+abs(fpixel) elseif @v==48 pz=pz-0.75*(pz^3-2.75)/(3*pz^2)+conj(fpixel) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a complex fpixel float index default: title="Smescit Resu" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SmescitResu2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @v=="Alain" pz=(x^2-y^2)^2-(@cp1+0.5)^2*x^2+(@cp2+1)^2*y^2 elseif @v=="Astroid" pz=x^(2/3)+y^(2/3)-@cp1^(2/3) elseif @v=="Atripthaloid" pz=x^4*(x^2+y^2)-((@cp2-0.25+0.75i)*x^2-(@cp1-0.65-0.9i)^3)^2 elseif @v=="Beetle" pz=(x^2+y^2)*(x^2+y^2-(@cp1-1.5+0.75i)*x-@cp2*y)-@cp3^2*x^2*y^2 elseif @v=="Besace" pz=(y+(@cp1-1.25-0.85i)*x^2)^2-x^2+x^4 elseif @v=="Biaxial Eight Reverse" pz=(@cp1+0.25-0.5i)^2*y^2-x^2*(y^2-x^2) elseif @v=="Bicorn" pz=y^2*((@cp1-0.3-0.2i)^2-x^2)-(x^2+2*(@cp1-0.3-0.2i)*y-(@cp1-0.3-0.2i)^2)^2 elseif @v=="Bicuspid" pz=(x^2-@cp1^2)*(x-@cp1)^2+(y^2-@cp1^2)^2 elseif @v=="Blade's Cubic" pz=x^3+y^3-@cp1^3 elseif @v=="Bow" pz=x^4-(@cp1+1+1i)*x^2*y+y^3 elseif @v=="Braked Parabola" pz=y-exp(x+@cp1*y) elseif @v=="Bullet-Nose" pz=(@cp1^2-x^2)*(@cp2^2+y^2)-@cp1^2*@cp2^2 elseif @v=="Cardioid" pz=(x^2+y^2-2*(@cp1-1.5)*x)^2-4*(@cp1-1.5)^2*(x^2+y^2) elseif @v=="Cartesian Oval" pz=@cp2*sqrt((x-(@cp1-0.5))^2+y^2)+(@cp3-01+0.5i)*sqrt((x+(@cp1-0.5))^2+y^2)-(@cp4-0.5+1i) elseif @v=="Cassinian Ovals" pz=(x^2+y^2)^2-2*(@cp1-0.35i)^2*(x^2-y^2)+(@cp1-0.35i)^4-@cp2^4 elseif @v=="Catenary" pz=y-@cp1*cosh(x/@cp1) elseif @v=="Chasles Cubic" pz=y-@cp1*x^3-@cp2*x^2*y-@cp3*x*y^2-@cp4*y^3 elseif @v=="Circle" pz=x^2+y^2-@cp1^2 elseif @v=="Circular Cubic" pz=x*(x^2+y^2)+@cp1*x^2+@cp2*y^2+2*@cp3*x+2*@cp4*y+@cp5 elseif @v=="Cissoid of Diocles 1" pz=y^2-x^3/(2*(@cp1-0.75)-x) elseif @v=="Cissoid of Diocles 2" pz=y^2*(2*(@cp1-1-0.5i)-x)-x^8 elseif @v=="Cissoid of zahradnik" pz=@cp3*x^2+2*@cp4*x*y+(@cp5+1)*y^2-2*@cp1*x-2*@cp2*y elseif @v=="Clairaut" pz=(x^2+y^2)^((@cp2+1)/2)-@cp1*y^@cp2 elseif @v=="Clinoid" pz=y-(@cp2-2+0.5i)*e^(x/(@cp1+1))-@cp3*e^(-x/(@cp1+1)) elseif @v=="Cochleoid" pz=(x^2+y^2)*atan(y/x)-(@cp1+1.5)*y elseif @v=="Conchal" pz=((x-(@cp1+0.45))+y^2)*(x+(@cp1+0.45))^2-@cp2^4 elseif @v=="Conchoid of a Circle" pz=(x^2+y^2+@cp3^2-(@cp2+0.25-0.25i)^2)^2*(y^2+(x+(@cp1+0.5i))^2)-4*@cp3^2*(x*(x+(@cp1+0.5i))+y^2)^2 elseif @v=="Conchoid of Nicomedes" pz=(x-@cp2)^2*(x^2+y^2)-(@cp1+1.25-0.25i)^2*x^2 elseif @v=="Conchoid of de Sluze" pz=(@cp1)*(x+@cp1)*(x^2+y^2)-(@cp2-1.15-1i)^2*x^2 elseif @v=="Conic Sections" pz=2*(@cp1-1.5+0.25i)^2*x+(1-(@cp1-1.5+0.25i)^2)*x^2+y^2-(@cp1-1.5+0.25i)^2 elseif @v=="Coriolis' Catenary" pz=y+@cp1*log(cos(x/@cp1)) elseif @v=="Cornoid" pz=(x^2+y^2)^3+(@cp1-0.3-0.45i)^2*(3*x^4-6*x^2*y^2-5*y^4)+8*(@cp1-0.3-0.45i)^4*y^2-4*(@cp1-0.3-0.45i)^6 elseif @v=="Cramer" pz=x*(x^2+y^2)+(@cp1+0.15+@cp2)*x^2-(@cp1+0.15-@cp2)*y^2 elseif @v=="Cross" pz=@cp1^2*y^2+@cp2^2*x^2-x^2*y^2 elseif @v=="Cubic Joint" pz=y^2*x-@cp1*y^2-@cp2*x^2 elseif @v=="Cubic of Apollonius" pz=(x-2*(@cp1-0.85-0.25i))*(x^2+y^2)+@cp2^2*(cos(2*@cp3*x)+sin(2*@cp3*y)) elseif @v=="Deltoid 1" pz=(x^2+y^2+12*(@cp1-0.4)*x+9*(@cp1-0.4)^2)-4*(@cp1-0.4)*(2*x+3*(@cp1-0.4))^3 elseif @v=="Deltoid 2" pz=(x^2+y^2)^2+18*(@cp1-1.385+0.195i)^2*(x^2+y^2)-27*(@cp1-1.385+0.195i)^4-8*(@cp1-1.385+0.195i)*x*(x^2-3*y^2) elseif @v=="Devil 1" pz=y^4-x^4+(@cp1-4+1i)*y^2+(@cp2+2-0.4i)*x^2 elseif @v=="Devil 2" pz=y^4-x^4-(@cp1-1.35+1.5i)^2*y^2+(@cp2-2.4)^2*x^2 elseif @v=="Dipole" pz=(x^2+y^2)^3-(@cp1+0.35)^4*x^2 elseif @v=="Double U" pz=y^2*((@cp1-0.5i)^2-x^2)-(@cp1-0.5i)^4 elseif @v=="Dumbbell" pz=(@cp2-0.25i)^4*y^2-x^4*((@cp1-2.45)^2-x^2) elseif @v=="Duplicatrix Cubic" pz=(@cp1-2.3-0.265i)*y^2-x^2*(x-(@cp1-2.3-0.265i)) elseif @v=="Durer's Conchoid 1" pz=(x^2+x*y+@cp1*x-@cp2^2)^2-(@cp2^2-x^2)*(x-y+@cp1)^2 elseif @v=="Durer's Conchoid 2" pz=2*y^2*(x^2+y^2)-2*@cp2*y^2*(x+y)+(@cp2^2-3*@cp1^2)*y^2-@cp1^2*x^2+2*@cp1^2*@cp2*(x+y)+@cp1^2*(@cp1^2-@cp2^2) elseif @v=="Dwulistne" pz=(x^2+y^2)^2-((@cp1-2.85+0.75i)*x+(@cp2-1.25+2.65i)*y)*x^2 elseif @v=="Egg of Granville 1" pz=x^2*y^2-@cp1^2*(x-(@cp2-(@cp3-2.2+0.45i)))*(@cp2+(@cp3-2.2+0.45i)-x) elseif @v=="Egg of Granville 2" pz=x^2*y^2-(x-(@cp1-1.55+0.65i))*(1-x) elseif @v=="Egg of Kepler" pz=(x^2+y^2)^2-(@cp1-2.5+0.5i)*x^3 elseif @v=="Eight" pz=x^4-(@cp1+0.45+0.175i)^2*(x^2-y^2) elseif @v=="Ellipse" pz=x^2/(@cp1-0.6+0.65i)^2+y^2/@cp2^2-1 elseif @v=="Elongated Cissoid" pz=x*(x^2+y^2)-(@cp1+2*@cp2)*x^2-2*@cp3*x*y-@cp1*y^2 elseif @v=="Fish" pz=(2*x^2+y^2)^2+2*sqrt(2)*@cp1*x*(2*x^2-3*y^2)+2*@cp1^2*(y^2-x^2) elseif @v=="Focal Conic Conchoid" pz=(x^2+y^2-(@cp1-1-0.3i)*(@cp2-0.55)*x)^2-(x^2+y^2)*((@cp2-0.55)*x-((@cp1-1-0.3i)+1))^2 elseif @v=="Folium" pz=(x^2+y^2)*(y^2+x*(x+@cp2))-4*(@cp1-2+0.5i)*x*y^2 elseif @v=="Folium of Descartes" pz=x^3+y^3-3*(@cp1-2.9-0.45i)*x*y elseif @v=="Folium of Durer" pz=(x^2+y^2)*(2*(x^2+y^2)-(@cp1+0.225)^2)^2-(@cp1+0.225)^4*x^2 elseif @v=="Gompertz" pz=y-exp(-exp((@cp1-0.3-1.4i)-@cp2*x)) elseif @v=="Gudermannian" pz=tan(y)-exp(x) elseif @v=="Heat Capacity" pz=y-x-(@cp1+0.5+0.85i)/x^2 elseif @v=="Hippopede" pz=(x^2+y^2)^2-(@cp1+1i)*x^2-(@cp2+1-0.45i)*y^2 elseif @v=="Hippopede of Proclus" pz=(x^2+y^2)^2+4*(@cp2-0.35+0.15i)*((@cp2-0.35+0.15i)-@cp1)*(x^2+y^2)-4*(@cp2-0.35+0.15i)^2*x^2 elseif @v=="Hoerl" pz=y-x^(@cp1+0.5-0.25i)*e^x elseif @v=="Humbert's Cubic" pz=x^3-3*x*y^2-(@cp1+0.2-0.25i)^3 elseif @v=="Hyperbola 1" pz=x^2/(@cp1+0.25+0.5i)^2-y^2/(@cp2-1.25-1i)^2-1 elseif @v=="Hyperbola 2" pz=x^2/(@cp1-1.5-1.25i)^2-y^2/(@cp2-0.25+0.5i)^2+1 elseif @v=="Hyperbolic" pz=x^(@cp1-2-0.5i)*y^@cp2-@cp3 elseif @v=="Hyperbolic Lemniscate" pz=(x^2+y^2)^2-(@cp1-2.35+0.3i)^2*x^2+(@cp2-1.5+1.95i)^2*y^2 elseif @v=="Hyperbolic Spiral" pz=sqrt(x^2+y^2)*atan(y/x)-(@cp1-3-0.3i) elseif @v=="Inverse Logarithmic Curve" pz=y-(@cp2-1.65-1.7i)*exp(@cp1/x) elseif @v=="Isoptic" pz=tan(@cp1+5.85+0.125i)^2*(x+pi/2)^2-y^2+2*@cp2*x elseif @v=="Jefabek" pz=(@cp2-1.15+0.65i)^2*(x^2+y^2-(@cp1-1.85-0.35i)*x)^2-(@cp1-1.85-0.35i)^2*(x^2+y^2)*(x-(@cp1-1.85-0.35i))^2 elseif @v=="Kampyle of Eudoxus" pz=@cp1^2*x^4-(@cp2-0.9-1i)^4*(x^2+y^2) elseif @v=="Kappa" pz=y^2*(x^2+y^2)-(@cp1-1.75+0.5i)^2*x^2 elseif @v=="Kepler's Folium" pz=((x-(@cp2-1-0.5i))^2+y^2)*(x*(x-(@cp2-1-0.5i))+y^2)-4*@cp1*(x-(@cp2-1-0.5i))*y^2 elseif @v=="Kiepert" pz=(x^2+y^2)^3-(@cp1-0.4-1.2i)^3*x*(x^2-3*y^2) elseif @v=="Kieroid" pz=y^2*(x-(@cp1+1-0.25i))^2+x^2*(x-(@cp2-1.25+0.25i))^2-(@cp3+0.65-0.25i)^2*x^2 elseif @v=="Kiss" pz=(@cp1-0.1-0.4i)^4*y^2-((@cp1-0.1-0.4i)^2-x^2)^3 elseif @v=="Klein Quartic" pz=(x^2+y^2-(@cp2+0.5-0.25i)*@cp1^2)^2-@cp3*@cp1*(y-@cp1+sqrt(3)*x)*(y-@cp1-sqrt(3)*x)*(2*y+@cp1) elseif @v=="Kulp Quartic" pz=x^2*y^2-(@cp1-0.35-0.6i)^2*((@cp1-0.35-0.6i)^2-y^2) elseif @v=="Lemniscate of Bernoulli" pz=(x^2+y^2)^2-(@cp1+0.65)^2*(x^2-y^2) elseif @v=="Lemniscate of Booth" pz=(x^2+y^2)^2-(2*@cp1^2+(@cp2-0.25-0.5i))*x^2+(2*@cp1^2-(@cp2-0.25-0.5i))*y^2 elseif @v=="Lemniscate of Montferrier" pz=@cp2^2*y^2-x^2*((@cp1-2.55-0.125i)^2-x^2) elseif @v=="Lemniscatrix of Ökinghaus" pz=y-log(cos(x)+sqrt(1+cos(x)^2)) elseif @v=="Limacon of Pascal 1" pz=(x^2+y^2-@cp1*y)^2-(x^2+y^2) elseif @v=="Limacon of Pascal 2" pz=(x^2+y^2-@cp1*x)^2-(@cp2+0.8-0.25i)^2*(x^2+y^2) elseif @v=="Lissajous 1" pz=2*(2*x^2-(@cp1-2)^2)^2-(@cp1-2)*(2*y-(@cp1-2))^2*(y+(@cp1-2)) elseif @v=="Lissajous 2" pz=x^2*(4*x^2-3*(@cp1-2)^2)+4*(@cp1-2)^2*y^2*(y^2-(@cp1-2)^2) elseif @v=="Lissajous Quadratic" pz=(@cp1-0.75-0.4i)^4*y^4-4*(@cp1-0.75-0.4i)^3*@cp2*x*y^3+2*(@cp1-0.75-0.4i)^2*@cp2*y^3 \ +6*(@cp1-0.75-0.4i)^2*@cp2^2*x^2*y^2-4*(@cp1-0.75-0.4i)*@cp2^2*x*y^2-2*(@cp1-0.75-0.4i)^3*x*y^2 \ -2*(@cp1-0.75-0.4i)^2*@cp2^2*y^2+@cp2^2*y^2+(@cp1-0.75-0.4i)^2*y^2 \ -4*(@cp1-0.75-0.4i)*@cp2^3*x^3*y+2*@cp2^3*x^2*y+4*(@cp1-0.75-0.4i)^2*@cp2*x^2*y+4*(@cp1-0.75-0.4i)*@cp2^3*x*y \ -2*@cp2^3*y-4*(@cp1-0.75-0.4i)^2*@cp2*y+@cp2^4*x^4-2*(@cp1-0.75-0.4i)*@cp2^2*x^3-2*@cp2^4*x^2 \ +@cp2^2*x^2+(@cp1-0.75-0.4i)^2*x^2+2*(@cp1-0.75-0.4i)*@cp2^2*x-(@cp1-0.75-0.4i)^2-@cp2^2+@cp2^4 elseif @v=="Logarithmic Lemniscate" pz=y^2-x^2*log((@cp1+1.25-0.4i)^2/x^2) elseif @v=="Logarithmic Sinusoid" pz=y-log(sqrt(1-x^2)) elseif @v=="Logistic Growth" pz=y-recip(1+(@cp1+0.35-0.5i)*e^x) elseif @v=="Loriga" pz=3*x^2-y^2-@cp1^2 elseif @v=="Maltese Cross" pz=x*y*(x^2-y^2)-x^2-y^2 elseif @v=="Neile's Semi-Cubical Parabola" pz=y^3-@cp1*x^2 elseif @v=="Nephroid" pz=(x^2+y^2-4*(@cp1-1.3+0.4i)^2)^3-108*(@cp1-1.3+0.4i)^4*x^2 elseif @v=="Nephroid of Freeth" pz=(x^2+y^2)*(x*2+y^2-(@cp1-0.85+0.1i)^2)^2-4*(@cp1-0.85+0.1i)^2*(x^2+y^2-(@cp1-0.85+0.1i)*x)^2 elseif @v=="Newton's Diverging Parabolas 1" pz=(@cp1-1.5-1.85i)*y^2-x*(x^2-2*@cp2*x+@cp3) elseif @v=="Newton's Diverging Parabolas 2" pz=y^2-x*(x^2+2*@cp1*x+@cp2) elseif @v=="Oblique Astroid" pz=((x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)^3+27*@cp2^2*x^2*y^2*sin(@cp1)^2)*sin(@cp1)^2\ -@cp2^2*cos(@cp1)*((x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)^2*cos(@cp1)-\ 2*x*y*(9*(x^2+y^2+2*x*y*cos(@cp1)-@cp2^2)*sin(@cp1)^2-8*@cp2^2*cos(@cp1)^2)) elseif @v=="Oblique Bifolium" pz=(x^2+y^2)^2-x^2*((@cp1-2.9+0.125i)*x+@cp2*y) elseif @v=="Oblique Cappa" pz=(x^2+y^2)*y^2-@cp1^2*(x*sin(@cp2)+y*cos(@cp2))^2 elseif @v=="Oblique Cissoid" pz=(x^2+y^2)*(x*cos(@cp2)+y*sin(@cp2))-2*@cp1*y^2 elseif @v=="Oblique Conchoid" pz=(x*y*cos(@cp1)-(y^2+@cp2*y-@cp3^2)*sin(@cp1))^2-(x*sin(@cp1)+y*cos(@cp1)+@cp2*cos(@cp1))^2*(@cp3^2-y^2) elseif @v=="Oblique Pancappa" pz=(y-(@cp1+0.3-0.2i))^2*(x^2+y^2)-(@cp2*x+@cp3*y)^2 elseif @v=="Oblique Parabolic Bifolium" pz=x^3-(@cp1-1.4-0.25i)*(x^2-y^2)-@cp2*x*y elseif @v=="Oblique Strophoid 1" pz=y*(x^2+y^2)-(@cp1-3+0.25i)*(x^2-y^2)-2*(@cp2-1.25-1i)*x*y elseif @v=="Oblique Strophoid 2" pz=x*(x^2+y^2)-@cp1*((x^2-y^2)*sin(@cp2-1.7+0.15i)+2*x*y*cos(@cp2-1.7+0.15i)) elseif @v=="Oblique Trifolium" pz=(x^2+y^2)^2/(2*@cp1)-x*(x^2+y^2)-(x^2-3*y^2)*(x*cos(2*@cp2)+y*sin(@cp2)) elseif @v=="Oblique Versiera" pz=(x^2+y^2)*(x*cos(@cp1+0.55-0.29i)+y*sin(@cp1+0.55-0.29i)-4*cos(@cp1+0.55-0.29i)^2)+2*@cp2*y^2 elseif @v=="Ophiuride" pz=x*(x^2+y^2)-@cp2*x*y-@cp1*y^2 elseif @v=="Orthoconchoid" pz=(y^2+@cp1*y-@cp2^2)^2-x^2*(@cp2^2-y^2) elseif @v=="Oval of Münger" pz=(x^2+y^2)^(2*@cp1+1)-2*(@cp2-1.6-2.225i)*x^(2*@cp1+1)*(x^2+y^2)^@cp1+((@cp2-1.6-2.225i)^2-@cp3^2)*x^(4*@cp1)*@cp4\ -2*(@cp2-1.6-2.225i)*@cp4*cos(@cp5)^(2*@cp1+1)+((@cp2-1.6-2.225i)^2-@cp3^2)*cos(@cp5)^(4*@cp1) elseif @v=="Parabola 1" pz=4*(@cp1-0.9)*(x-@cp2)-(y-@cp3)^2 elseif @v=="Parabola 2" pz=x-@cp1*(y-@cp2)^2-@cp3 elseif @v=="Parabola 3" pz=y-@cp1*x^2-@cp2*x-@cp3 elseif @v=="Parabolic Trifolium" pz=x^2*(x^2+y^2)-(@cp1-0.75-0.2i)*y*(x^2-y^2) elseif @v=="Pear-Shaped Quartic" pz=@cp2^2*y^2-x^3*(@cp1-x) elseif @v=="Pearls of Sluze" pz=y^@cp2-@cp3*(@cp1-x)^@cp4*x^(@cp5-0.75+0.25i) elseif @v=="Planck Radiation" pz=y-cotanh(1/((@cp1-0.85+1.125i)*x))/x^4 elseif @v=="Power Exponential" pz=y-x^(@cp1*x+@cp2) elseif @v=="Pursuit 1" pz=y-(@cp1-0.8+0.7i)*x^2+log(x) elseif @v=="Pursuit 2" pz=y-(@cp1-2.125-1.6i)*x+log(x) elseif @v=="Quadratix of Hippias" pz=x-y*cotan(y/@cp1) elseif @v=="Quadrifolium" pz=(x^2+y^2)^3-4*(@cp1-2.75)^2*x^2*y^2 elseif @v=="Regular Trifolium" pz=(x^2+y^2)^2-(@cp1-2.75-0.25i)*x*(x^2-3*y^2) elseif @v=="Richards" pz=y-1/(1+exp(x))^@cp1 elseif @v=="Right Strophoid" pz=y^2-x^2*((@cp1-1.8-0.6i)-x)/((@cp1-1.8-0.6i)+x) elseif @v=="Rose 1" pz=x-@cp1*sin(@cp2*y) elseif @v=="Rose 2" pz=x-(@cp1-2.5-1.35i)*cos(@cp2*y) elseif @v=="Rosillo" pz=y^2*(@cp3-x)^2-((@cp2-1.75)-x)^2*((@cp1-2)^2-x^2) elseif @v=="Satchel" pz=(x^2-(@cp2+0.42+0.87i)*y)^2-@cp1^2*(x^2-y^2) elseif @v=="Scarab" pz=(x^2+y^2)*(x^2+y^2+(@cp1+1.32-0.225i)*x)^2-@cp2^2*(x^2-y^2)^2 elseif @v=="Scyphoid" pz=x^4-y^4-4*(@cp1-2.5+0.25i)*x*y^2 elseif @v=="Semi-Trident" pz=x*y^2-@cp1*x elseif @v=="Serpentine" pz=y-@cp1*@cp2*x/(x^2+@cp1^2) elseif @v=="Sinus Chain" pz=y^2-abs(sin(x)+0.1*sin(2*x)) elseif @v=="Spiric" pz=(x^2+y^2)^2+((@cp1-0.5+3i)-2)*x^2+@cp2*y^2+2*@cp3*x+@cp4 elseif @v=="Spiric of Perseus" pz=(x^2+y^2)^2-2*@cp1*x^2-2*(@cp2+0.7-0.15i)*y^2+(@cp3+1.125-0.65i) elseif @v=="Spiric Sections" pz=(@cp3^2-@cp1^2+(@cp2-1.15-0.95i)^2+x^2+y^2)^2-4*@cp3^2*(x^2+(@cp2-1.15-0.95i)^2) elseif @v=="Superellipse 1" pz=(x/@cp1)^@cp3+(y/@cp2)^@cp3-1 elseif @v=="Superellipse 2" pz=cabs((x-@cp1)/@cp3)^@cp4+cabs((y-@cp2)/@cp3)^@cp4-1 elseif @v=="Syntractrix" pz=x+sqrt((@cp2+0.65i)^2-y^2)-@cp1*log(((@cp2+0.65i)+sqrt((@cp2+0.65i)^2-y^2))/y) elseif @v=="Szego" pz=x^2+y^2-e^(2*x-2) elseif @v=="Teardrop" pz=y^2-x^@cp1*(1-x) elseif @v=="Tetracuspid" pz=(@cp1+0.45-0.4i)^@cp2*(cabs(x)^@cp2+cabs(y)^@cp2)-(x^2+y^2)^@cp2 elseif @v=="Torpedo" pz=(x^2+y^2)^2-(@cp1-3.5-0.2i)*x*(x^2-y^2) elseif @v=="Tractrix" pz=x-log((@cp1-sqrt(@cp1^2-y^2))/y)-sqrt(@cp1^2-y^2) elseif @v=="Trident 1" pz=y-x^2-(@cp1-0.75-1i)/x elseif @v=="Trident 2" pz=x*y+@cp1*x^3+@cp2*x^2+@cp3*x-(@cp4+0.16-0.124i) elseif @v=="Trifolium 1" pz=(x^2+y^2)^2-(x^2+y^2)*((@cp1-3-0.125i)*x+@cp2*y)-@cp3*x*(x^2-3*y^2) elseif @v=="Trifolium 2" pz=(x^2+y^2)^2-((@cp1-3-0.125i)*x+@cp2*y)*(x^2-y^2) elseif @v=="Trisectrix of Delange" pz=(x^2+y^2-2*(@cp1-0.15+0.1i)^2)^2-x^2*(x^2+y^2) elseif @v=="Trisectrix of Maclaurin" pz=y^2*((@cp1-1.55+0.15i)+x)-x^2*(3*(@cp1-1.55+0.15i)-x) elseif @v=="Tschirnhaus' Cubic" pz=3*(@cp1-2.5+0.6i)*y^2-x*(x-(@cp1-2.5+0.6i))^2 elseif @v=="Besace" pz=(y+@cp1*x^2)^2-x^2+x^4 elseif @v=="Visiera" pz=x*(x^2+y^2)-(@cp1-1.95-0.2i)*(x^2+2*y^2) elseif @v=="Viviani's" pz=y^2-x^2*((@cp1-2-0.325i)^2-x^2) elseif @v=="Watt's" pz=(x^2+y^2)*(x^2+y^2-@cp3^2)^2+4*(@cp1-0.375-1.95i)^2*y^2*(x^2+y^2-(@cp2-2.325-0.125i)^2) elseif @v=="Weibull" pz=y-exp(-(x/(@cp1-0.2+0.58i))^(@cp2+2)) elseif @v=="Witch of Agnesi" pz=y-8*@cp1^3/(x^2+4*@cp1^2) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a float index default: title="Smescit Resu 2 (Curves)" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Curve" enum="Alain""Astroid""Atripthaloid""Beetle""Besace""Biaxial Eight Reverse"\ "Bicorn""Bicuspid""Blade's Cubic""Bow""Braked Parabola""Bullet-Nose"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Chasles Cubic"\ "Circle""Circular Cubic""Cissoid of Diocles 1""Cissoid of Diocles 2"\ "Cissoid of Zahradnik""Clairaut""Clinoid""Cochleoid""Conchal""Conchoid of a Circle"\ "Conchoid of Nicomedes""Conchoid of de Sluze""Conic Sections""Coriolis' Catenary" \ "Cornoid""Cramer""Cross""Cubic Joint""Cubic of Apollonius" \ "Deltoid 1""Deltoid 2""Devil 1""Devil 2""Dipole""Double U"\ "Dumbbell""Duplicatrix Cubic""Durer's Conchoid 1""Durer's Conchoid 2" \ "Dwulistne""Egg of Granville 1""Egg of Granville 2""Egg of Kepler" \ "Eight""Ellipse""Elongated Cissoid""Fish""Focal Conic Conchoid""Folium""Folium of Descartes" \ "Folium of Durer""Gompertz""Gudermannian""Heat Capacity""Hippopede""Hippopede of Proclus""Hoerl""Humbert's Cubic" \ "Hyperbola 1""Hyperbola 2""Hyperbolic""Hyperbolic Lemniscate""Hyperbolic Spiral" \ "Inverse Logarithmic Curve""Isoptic""Jefabek""Kampyle of Eudoxus""Kappa""Kepler's Folium" \ "Kiepert""Kieroid""Kiss""Klein Quartic""Kulp Quartic""Lemniscate of Bernoulli" \ "Lemniscate of Booth""Lemniscate of Montferrier""Lemniscatrix of Ökinghaus" \ "Limacon of Pascal 1""Limacon of Pascal 2""Lissajous 1" \ "Lissajous 2""Lissajous Quadratic""Logarithmic Lemniscate""Logarithmic Sinusoid" \ "Logistic Growth""Loriga""Maltese Cross""Neile's Semi-Cubical Parabola""Nephroid" \ "Nephroid of Freeth""Newton's Diverging Parabolas 1""Newton's Diverging Parabolas 2" \ "Oblique Astroid""Oblique Bifolium""Oblique Cappa""Oblique Cissoid" \ "Oblique Conchoid""Oblique Pancappa""Oblique Parabolic Bifolium""Oblique Strophoid 1" \ "Oblique Strophoid 2""Oblique Trifolium""Oblique Versiera""Ophiuride""Orthoconchoid" \ "Oval of Münger""Parabola 1""Parabola 2""Parabola 3""Parabolic Trifolium""Pear-Shaped Quartic" \ "Pearls of Sluze""Planck Radiation""Power Exponential""Pursuit 1""Pursuit 2""Quadratix of Hippias""Quadrifolium" \ "Regular Trifolium""Richards""Right Strophoid""Rose 1""Rose 2""Rosillo""Satchel""Scarab""Scyphoid" \ "Semi-Trident""Serpentine""Sinus Chain""Spiric""Spiric of Perseus""Spiric Sections" \ "Superellipse 1""Superellipse 2""Syntractrix""Szego""Teardrop""Tetracuspid""Torpedo""Tractrix" \ "Trident 1""Trident 2""Trifolium 1""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin" \ "Tschirnhaus' Cubic""Visiera""Viviani's""Watt's""Weibull""Witch of Agnesi" endparam param cp1 caption="Curve Parameter" default=(1,0) visible=@v!="Lemniscatrix of Ökinghaus" && @v!="Logarithmic Sinusoid" && @v!="Maltese Cross" \ && @v!="Sinus Chain" && @v!="Szego" && @v!="Gudermannian" endparam param cp2 caption="Curve Parameter 2" default=(1,0) visible=@v!="Astroid" && @v!="Besace" && @v!="Biaxial Eight Reverse" && @v!="Bicorn" \ && @v!="Bicuspid" && @v!="Blade's Cubic" && @v!="Bow" && @v!="Braked Parabola" && @v!="Cardioid" \ && @v!="Catenary" && @v!="Circle" && @v!="Cissoid of Diocles 1" \ && @v!="Cissoid of Diocles 2" && @v!="Cochleoid" && @v!="Conic Sections" \ && @v!="Coriolis' Catenary" && @v!="Cornoid" && @v!="Deltoid 1" && @v!="Deltoid 2" \ && @v!="Dipole" && @v!="Double U" && @v!="Duplicatrix Cubic" \ && @v!="Egg of Granville 2" && @v!="Egg of Kepler" && @v!="Eight" \ && @v!="Fish" && @v!="Folium of Descartes" && @v!="Folium of Durer" && @v!="Gudermannian" && @v!="Heat Capacity" \ && @v!="Hoerl" && @v!="Humbert's Cubic" && @v!="Hyperbolic Spiral" && @v!="Kappa" && @v!="Kiepert" \ && @v!="Kiss" && @v!="Kulp Quartic" && @v!="Lemniscate of Bernoulli" && @v!="Lemniscatrix of Ökinghaus" \ && @v!="Limacon of Pascal 1" && @v!="Lissajous 1" && @v!="Lissajous 2" \ && @v!="Logarithmic Lemniscate"&& @v!="Logarithmic Sinusoid" \ && @v!="Logistic Growth" && @v!="Loriga" && @v!="Maltese Cross" && @v!="Neile's Semi-Cubical Parabola" \ && @v!="Nephroid" && @v!="Nephroid of Freeth" && @v!="Parabolic Trifolium" && @v!="Planck Radiation" \ && @v!="Pursuit 1" && @v!="Pursuit 2" && @v!="Quadratix of Hippias" && @v!="Quadrifolium" \ && @v!="Regular Trifolium" && @v!="Richards" && @v!="Right Strophoid" && @v!="Scyphoid" && @v!="Semi-Trident" \ && @v!="Sinus Chain" && @v!="Szego" && @v!="Teardrop" && @v!="Torpedo" && @v!="Tractrix" && @v!="Trident 1" \ && @v!="Trisectrix of Delange" && @v!="Trisectrix of Maclaurin" && @v!="Tschirnhaus' Cubic" && @v!="Visiera" \ && @v!="Viviani's" && @v!="Witch of Agnesi" endparam param cp3 caption="Curve Parameter 3" default=(1,0) visible=@v=="Beetle" || @v=="Cartesian Oval" || @v=="Chasles Cubic" \ || @v=="Circular Cubic" || @v=="Cissoid of Zahradnik" || @v=="Clinoid" \ || @v=="Conchoid of a Circle" || @v=="Cubic of Apollonius" \ || @v=="Egg of Granville 1" || @v=="Elongated Cissoid" || @v=="Hyperbolic" || @v=="Kieroid" || @v=="Klein Quartic" \ || @v=="Newton's Diverging Parabolas 1" || @v=="Oblique Pancappa" || @v=="Oblique Conchoid" || @v=="Oval of Münger" \ || @v=="Parabola 1" || @v=="Parabola 2" || @v=="Parabola 3" || @v=="Pearls of Sluze" || @v=="Rosillo" \ || @v=="Spiric" || @v=="Spiric of Perseus" || @v=="Spiric Sections" || @v=="Superellipse 1" || @v=="Superellipse 2" \ || @v=="Trident 2" || @v=="Trifolium 1" || @v=="Watt's" endparam param cp4 caption="Curve Parameter 4" default=(1,0) visible=@v=="Cartesian Oval" || @v=="Chasles Cubic" || @v=="Circular Cubic" \ || @v=="Cissoid of Zahradnik" || @v=="Oval of Münger" || @v=="Pearls of Sluze" \ || @v=="Spiric" || @v=="Superellipse 2" || @v=="Trident 2" endparam param cp5 caption="Curve Parameter 5" default=(1,0) visible=@v=="Circular Cubic" || @v=="Cissoid of Zahradnik" || @v=="Oval of Münger" || @v=="Pearls of Sluze" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_SmescitResu3(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if @V=="Bogdanov" pz=flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y elseif @V=="Bogdanov-Takens" pz=y+flip(@p1+@p2*x+x^2-x*y) elseif @V=="Brusselator" pz=(1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3) elseif @V=="Buckling Column Model" pz=y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4) elseif @V=="Burgers" pz=@p1*x-y^2+flip(@p2*y+x*y) elseif @V=="Cao-Lai" pz=@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)) elseif @V=="Cathala 1" pz=@p1*x+y+flip(@p2/2+x^2) elseif @V=="Cathala 2" pz=(1-2*@p1)*x+y+flip(2*@p1*@p2*x+@p3*y-2*@p1*x^3) elseif @V=="Chip" pz=y-(x/cabs(x))*cos(sqr(log(abs((@p2-1+1i)*x-@p3))))*atan(sqr(log(abs(@p3*x-(@p2-1+1i)))))+flip(@p1-x) elseif @V=="Chirikov Mod" pz=x+y+((@p1-0.65-0.2i)/2*pi)*sin(2*pi*x)+flip(y+((@p1-0.65-0.2i)/2*pi)*sin(2*pi*x)) elseif @V=="Coupled Logistic" pz=(1-@p1)*@p2*x*(1-x)+@p1*@p2*y*(1-y)+flip((1-@p1)*@p2*y*(1-y)+@p1*@p2*x*(1-x)) elseif @V=="Cremona" pz=x*cos(@p1)-(y-x^2)*sin(@p1)+flip(x*sin(@p1)-(y-x^2)*cos(@p1)) elseif @V=="Damped Pendulum" pz=y+flip(-@p1*sin(x)-@p2*y) elseif @V=="de Jong" pz=sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)) elseif @V=="Duffing 1" pz=y+flip(x-x^3-@p1*y+@p2) elseif @V=="Duffing 2" pz=y+flip(-@p1*x-@p2*x^3+@p3) elseif @V=="Duffing 3" pz=y+flip(-x-x^3+(@p1+@p2*x^2+@p3*@p4*x)*y+@p4*@p5) elseif @V=="Duffing 4" pz=y+flip(-@p1*x-(((@p2+1i)-@p1)/2)*(cabs(x+1)-cabs(x-1))-@p3*y+@p4) elseif @V=="Duffing 5" pz=y+flip(-@p1*x-@p2*x^3-@p3*x^5+(@p4-2+1i)) elseif @V=="Duffing 6" pz=y+flip(-@p2*x+@p1*y-y^3) elseif @V=="Garrote-Mira" pz=y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)) elseif @V=="Gingerbread" pz=1-(@p1-2.15-0.25i)*y+@p2*cabs(x)+flip(x) elseif @V=="Gumowski-Mira 1" k=x x=y+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) pz=x+flip(y) elseif @V=="Gumowski-Mira 2" k=x x=y+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) pz=x+flip(y) elseif @V=="Gumowski-Mira 3" k=x x=y+(@p2+0.25-0.5i)*y*(1-(@p2+0.25-0.5i)*y^2)+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2/(1-x^2) pz=x+flip(y) elseif @V=="Gumowski-Mira 4" k=x x=y+@p2*y*(1-@p2*y^2)+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) y=-k+(@p1-0.25+0.25i)*x+2*(1-(@p1-0.25+0.25i))*x^2*exp((1-x^2)/4) pz=x+flip(y) elseif @V=="Gumowski-Mira 5" pz=@p1*(x*cos(@p2)-y*sin(@p2))+x*y+flip(@p1*(x*sin(@p2)+y*cos(@p2))+x^2+y^3) elseif @V=="Gumowski-Mira Mod 1" pz=(1-(@p1+0.1i))*x+y+flip(y+(@p2-0.55-0.35i)*x+2*(1-(@p2-0.55-0.35i))*x^2*(1+x^2)^(-2)) elseif @V=="Gumowski-Mira Mod 2" pz=@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V=="Hamilton" pz=x+(@p1-1+0.25i)*@p2*sin(2*pi*y)+flip(y-((@p1-1+0.25i)/@p2)*sin(2*pi*(x+(@p1-1+0.25i)*@p2*sin(2*pi*y)))) elseif @V=="Hamilton Torus" pz=-sin(y)*(1-(@p1-0.25+1.25i))+flip(sin(x)*(1+(@p1-0.25+1.25i))) elseif @V=="HCA" pz=1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)) elseif @V=="Henon 1" pz=1-@p1*x^2+y+flip(@p2*x) elseif @V=="Henon 2" pz=-(y-x^2)*sin(2*pi/@p1)+x*cos(2*pi/@p1)\ +flip((y-x^2)*cos(2*pi/@p1)+x*sin(2*pi/@p1)) elseif @V=="Henon 3" pz=y+flip(@p2^(-1)*(1-@p1*y^2-@p2*x)) elseif @V=="Henon 4" pz=exp(-@p1*@p2/2)*(x*cos(@p2*@p3)+(1/@p3)*(y-(@p4+x^2)+@p1*x/2)*sin(@p2*@p3))\ +flip(exp(-@p1*@p2/2)*(-@p3*x*sin(@p2*@p3)+(y-(@p4+x^2)+@p1*x/2)*cos(@p2*@p3))-@p1*x/2) elseif @V=="Henon 5" pz=y+(@p1-1.85-0.85i)*cos(pi*x/2)-1+flip(@p2*x) elseif @V=="Henon-Heiles 1" pz=-@p1*x-@p2*x*y+flip(-@p3*y-@p4*x^2+@p5*y^2) elseif @V=="Henon-Heiles 2" pz=y+flip(-@p1*x-@p2*x^2+@p3) elseif @V=="Hopalong" pz=y-(x/cabs(x))*sqrt(cabs(@p2*x-@p3))+flip(@p1-x) elseif @V=="Horsthemke-Lefever" pz=@p1*x*(1-x/(@p3-1.8-0.45i))-@p2*x*y+flip(-@p2*x*y+(@p4+1.125+0.65i)*(@p5-y)) elseif @V=="Ikeda" pz=@p1+(@p2-2.25+0.125i)*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip((@p2-2.25+0.125i)*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Ilhem-Amel 1" pz=x^3+(@p1-1.45+0.15i)*x+@p2+y+flip(@p3*x) elseif @V=="Ilhem-Amel 2" pz=(@p4-0.5)*x^3+(@p1-0.375-2.4i)*x+@p2/2+@p5*y+flip(@p3*x+@p6*y) elseif @v=="Jiang" pz=y+flip(x+@p1*x^2+(@p2-0.65+4.7i)*y^2-(@p3-0.065-2.75i)*x*y-(@p4+1.1+0.2i)) elseif @V=="Kam Torus" pz=x*cos(@p1-2.1-1.5i)+(x^2-y)*sin(@p1-2.1-1.5i)+flip(x*sin(@p1-2.1-1.5i)-(x^2-y)*cos(@p1-2.1-1.5i)) elseif @V=="Kan" pz=@p3*sin(y+sin(@p1*y))+flip((@p4-0.58)*sin(x+sin(@p2*x))) elseif @v=="Knot" pz=-y+flip(x^4-y) elseif @V=="Kolmogorov-Volterra" pz=(x*((@p1-1.15+0.75i)-x^2)-@p2*x*y)/(1+x^2)+flip((@p3*x^2-1)*y/(1+x^2)) elseif @v=="Li" pz=(@p1-2.575+0.9i)*cos(y)+flip(@p2*x*sin(y)) elseif @V=="Lozi" pz=1+y-@p1*cabs(x)+flip(@p2*x) elseif @V=="Marotto-Lorenz" pz=(1-(@p1-0.5-0.15i)*x-@p2*y)*((@p1-0.5-0.15i)*x+@p2*y)+flip(x) elseif @V=="Martin" pz=y+sin(x)+flip(@p1-x) elseif @V=="Mira 1" pz=@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(@p2*y+@p1*x+2*(1-@p1)*x^2/(1+(@p2*y\ +@p1*x+2*(1-@p1)*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V=="Mira 1" pz=x^2-y^2+(@p1-0.7)*x+@p2+flip(2*x*y-5*(@p1-0.7)*y/2+@p3) elseif @V=="Mira 2" pz=(1-@p1)*x+y+flip(@p1*@p2*x+@p3*y-@p1*x^3) elseif @V=="Mira 3" pz=(@p1-1-1.5i)*x+y+flip(@p2+x^2) elseif @V=="Modified Lozi" pz=1+@p1*(cabs(x)-y^2)+y+flip(@p2*x) elseif @V=="Nowicki-Swirszcz" pz=3*x*((x-y)^2-(@p1+3.5-1i))/((3*x-y)^2-@p2)+flip(y*(y^2+2*x*y-3*x^2-@p3)/((3*x-y)^2-@p4)) elseif @V=="Multifold Henon" pz=1-@p1*sin(x)+@p2*y+flip(x) elseif @V=="Oscillating Chemical Reaction" pz=((@p1-4.9-1.75i)-x-4*x*y)/(1+x^2)+flip((@p2-2.2-3.55i)*x*(1-y)/(1+x^2)) elseif @V=="Pendulum" pz=y+flip(-sin(x)+@p1) elseif @V=="Pendulum Morozov" pz=y+flip(-sin(x)+y*(@p1+(@p2+2.95-1.25i)*cos(@p3*x))*(-@p4)) elseif @V=="Pharaoh" pz=-y+@p1*cos(x)*sin(1-real(pz)^2-y^2)+@p3+flip(x+@p2*cos(y)*sin(1-x^2-y^2)+@p4) elseif @V=="Pickover 1" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Pickover 2" pz=sin(@p1*y)+sqr(sin(@p1*x))+flip(sin(@p2*x)+sqr(sin(@p2*y))) elseif @V=="Pickover 3" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin((@p2-4.3-0.9i)*x)+(sin((@p2-4.3-0.9i)*y))^2+(sin(@p3*y))^3) elseif @V=="Pickover 4" pz=abs(sin(@p1*y))+(sin(@p1*x))^2+flip(abs(sin(@p2*x))+(sin(@p1*y))^2) elseif @V=="Pickover 5" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin((@p3+2-1i)*x)+@p4*cos((@p3+2-1i)*y)) elseif @V=="Pickover 6" pz=x-(@p1+0.325+0.85i)*sin(y+tan((@p2-2+1i)*y))+flip(y-(@p1+0.325+0.85i)*sin(x+tan((@p2-2+1i)*x))) elseif @V=="Pickover 7" pz=@p1*sin(y+tan((@p2-1+1i)*y))+flip(@p1*sin(x+tan((@p2-1+1i)*x))) elseif @V=="Polyharmonic Pendulum" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Quadruptwo" pz=y-(x/cabs(x))*sin(log(abs((@p2-1+0.5i)*x-@p3)))*atan(sqr(log(abs(@p3*x-(@p2-1+0.5i)))))+flip(@p1-x) elseif @V=="Rayleigh" pz=y+flip(-(x+@p2*y^3-@p1*y)/@p3) elseif @V=="Sine" pz=y+flip((@p1-2.35+1.75i)*sin(x)+(@p2-0.65-4.5i)*y) elseif @V=="Sine-Sine" pz=sin(x)-sin(2*y)+flip(x) elseif @V=="Sprott" pz=(1+(@p1-2.325+1i)*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2) elseif @V=="Sprott-Elhadj" pz=(@p1-2.325-2.65i)*x/(1+y^2)+flip(x+@p2*y) elseif @V=="Standard Map" pz=x+@p1*sin(y)+flip(y+x+@p1*sin(y)) elseif @V=="Strelkova-Anishchenko" pz=1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)) elseif @V=="Svensson" pz=@p4*sin((@p1+0.5+0.5i)*x)-sin((@p2-3.8-0.33i)*y)+flip(@p3*cos((@p1+0.5+0.5i)*x)+cos((@p2-3.8-0.33i)*y)) elseif @V=="Threeply" pz=y-(x/cabs(x))*(abs(sin(x)*cos(@p2-1+1i)+@p3-x*sin((@p1-5.3+0.58i)+(@p2-1+1i)+@p3)))+flip((@p1-5.3+0.58i)-x) elseif @V=="Tinkerbell" pz=x^2+-y^2+@p1*x+@p2*y+flip(2*x*y+@p3*x+@p4*y) elseif @V=="Ushiki" pz=((@p1-3.7+0.2i)-x-@p2*y)*x+flip((@p3-y-@p4*x)*y) elseif @V=="Van der Pol 1" pz=@p1*(x-x^3/3-y)+flip(x/@p1) elseif @V=="Van der Pol 2" pz=y+flip(@p1*(1-x^2)*y-x) elseif @V=="Volterra" pz=exp(y)-1+@p2*(exp(x)-1)*exp(y)/(@p2+exp(2*x))+flip(@p1*(1-exp(x))-@p1*@p2*(exp(x)-1)*exp(x)/(@p2+exp(2*x))) elseif @V=="Volterra-Lotka 1" pz=@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y) elseif @V=="Volterra-Lotka 2" pz=@p1*x*(1-x-(@p2-1.6+0.58i)*y)+flip(@p3*y*(1-y-@p4*x)) elseif @V=="Zaslavsky" pz=(x+@p1*sin(y))*cos(2*pi/(@p2-2.65+0.32i))+y*sin(2*pi/(@p2-2.65+0.32i))+flip(-(x+@p1*sin(y))*sin(2*pi/(@p2-2.65+0.32i))+y*cos(2*pi/(@p2-2.65+0.32i))) elseif @V=="Zito" pz=x*y+@p1*x-y+flip(x+y) endif a=a+exp(@adj*log(log(cabs(pz)))) endfunc float func ResultIndex(complex pz) if @solid if @invert if a<@sca index=a else m_Solid=true endif else if a>=@sca index=a else m_Solid=true endif endif else index=a endif return index endfunc private: float a float index default: title="Smescit Resu 3 (Attractors)" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Attractor" enum="Bogdanov""Bogdanov-Takens""Brusselator""Buckling Column Model""Burgers"\ "Cao-Lai""Cathala 1""Cathala 2""Chip""Chirikov Mod""Coupled Logistic""Cremona""Damped Pendulum""de Jong"\ "Duffing 1""Duffing 2""Duffing 3""Duffing 4""Duffing 5""Duffing 6""Garrote-Mira"\ "Gingerbread""Gumowski-Mira 1""Gumowski-Mira 2""Gumowski-Mira 3""Gumowski-Mira 4"\ "Gumowski-Mira 5""Gumowski-Mira Mod 1""Gumowski-Mira Mod 2""Hamilton"\ "Hamilton Torus""HCA""Henon 1""Henon 2""Henon 3"\ "Henon 4""Henon 5""Henon-Heiles 1""Henon-Heiles 2""Hopalong""Horsthemke-Lefever"\ "Ikeda""Ilhem-Amel 1""Ilhem-Amel 2""Jiang""Kam Torus""Kan"\ "Knot""Kolmogorov-Volterra""Li""Lozi""Marotto-Lorenz""Martin""Mira 1""Mira 2""Mira 3""Modified Lozi"\ "Nowicki-Swirszcz""Multifold Henon""Oscillating Chemical Reaction""Pendulum""Pendulum Morozov""Pharaoh""Pickover 1"\ "Pickover 2""Pickover 3""Pickover 4""Pickover 5""Pickover 6""Pickover 7""Polyharmonic Pendulum"\ "Quadruptwo""Rayleigh""Sine""Sine-Sine""Sprott""Sprott-Elhadj""Standard Map""Strelkova-Anishchenko"\ "Svensson""Threeply""Tinkerbell""Ushiki""Van der Pol 1""Van der Pol 2""Volterra"\ "Volterra-Lotka 1""Volterra-Lotka 2""Zaslavsky""Zito" endparam param p1 caption="Attractor Parameter" default=(1,0) visible=@v!="Knot" && @v!="Sine-Sine" endparam param p2 caption="Attractor Parameter 2" default=(1,0) visible=@v!="Chirikov Mod" && @v!="Cremona" && @v!="Gumowski-Mira 1" && @v!="Gumowski-Mira 2" && @v!="Hamilton Torus" && @v!="Henon 2" \ && @v!="Kam Torus" && @v!="Martin" && @v!="Knot" && @v!="Pendulum" && @v!="Sine-Sine" && @v!="Standard Map" \ && @v!="Van der Pol 1" && @v!="Van der Pol 2" && @v!="Zito" endparam param p3 caption="Attractor Parameter 3" default=(1,0) visible=@v=="Bogdanov" || @v=="Brusselator" || @v=="Buckling Column Model" || @v=="Cathala 2" \ || @v=="Chip" || @v=="de Jong" || @v=="Duffing 2" || @v=="Duffing 3" || @v=="Duffing 4" || @v=="Duffing 5" \ || @v=="Henon 4" || @v=="Henon-Heiles 1" || @v=="Henon-Heiles 2" || @v=="Hopalong" \ || @v=="Horsthemke-Lefever" || @v=="Ikeda" || @v=="Ilhem-Amel 1" || @v=="Ilhem-Amel 2" \ || @v=="Kan" || @v=="Kolmogorov-Volterra" || @v=="Mira 1" || @v=="Mira 2" \ || @v=="Nowicki-Swirszcz" || @v=="Pharaoh" || @v=="Pickover 1" || @v=="Pickover 3" \ || @v=="Pickover 5" || @v=="Jiang" || @v=="Pendulum Morozov" || @v=="Polyharmonic Pendulum" || @v=="Quadruptwo" \ || @v=="Rayleigh" || @v=="Svensson" || @v=="Threeply" || @v=="Tinkerbell" || @v=="Ushiki" \ || @v=="Volterra-Lotka 1" || @v=="Volterra-Lotka 2" endparam param p4 caption="Attractor Parameter 4" default=(1,0) visible=@v=="Buckling Column Model" || @v=="de Jong" || @v=="Duffing 3" || @v=="Duffing 4" || @v=="Duffing 5" \ || @v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ikeda" || @v=="Kan" \ || @v=="Nowicki-Swirszcz" || @v=="Pharaoh" || @v=="Pickover 1" || @v=="Pickover 5" || @v=="Jiang" \ || @v=="Pendulum Morozov" || @v=="Polyharmonic Pendulum" || @v=="Ilhem-Amel 2" || @v=="Svensson" || @v=="Tinkerbell" \ || @v=="Ushiki" || @v=="Volterra-Lotka 1" || @v=="Volterra-Lotka 2" endparam param p5 caption="Attractor Parameter 5" default=(1,0) visible=@v=="Duffing 3" || @v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ilhem-Amel 2" endparam param p6 caption="Attractor Parameter 6" default=(1,0) visible=@v=="Ilhem-Amel 2" endparam param adj caption="Adjustment" default=-0.05 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=3.8 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_IFB27(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(acosh(pz)))+imag(fn3(pz)) if a<@p4 pz=pz*cabs(@p1)+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*sin(@p25)+@p9 endif if @p10<=a pz=pz*acos(@p1)+@p11 endif return pz endfunc default: title="IFB 27" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=1.06223 endparam param p1 caption="IFB Parameter a1" default=(-0.11,-1.22) endparam param p25 caption="IFB Parameter a2" default=(0.73725,0.36784) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Loop Parameter 1" default=(1,0) endparam param p7 caption="Loop Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_IFB30(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(flip(pz)))+imag(fn3(sqr(pz))) if a<@p4 pz=pz*@p1+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*atan(@p25)+@p9 endif if @p10<=a pz=pz*sqr(@p1)+@p11 endif return pz endfunc default: title="IFB 30" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=8.96206 endparam param p1 caption="IFB Parameter a1" default=(-0.47784,-1.06235) endparam param p25 caption="IFB Parameter a2" default=(0.47451,-0.84078) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(1,0) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=-5.93008 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Loop Parameter 1" default=(0.8949,-0.28902) endparam param p7 caption="Loop Parameter 2" default=(0.44667,-0.35471) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_IFB65(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn4(pz) a=fn1(conj(sqr(@p5))) b=fn2(sqrt(acos(@p5))) return pz endfunc complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6-1.516 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="2" if real(fn3(sqrt(pz)))>@p6+1 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="3" if real(fn3(sqr(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="4" if real(fn3(cotanh(pz)))>@p6-0.872 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="5" if real(fn3(cotan(pz)))>@p6-0.021 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="6" if real(fn3(atanh(pz)))>@p6-0.296 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="7" if real(fn3(atan(pz)))>@p6-1.178 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="8" if real(fn3(acosh(pz)))>@p6+1.708 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="9" if real(fn3(acos(pz)))>@p6-1.573 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="10" if real(fn3(cos(pz)))>@p6+0.129 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="11" if real(fn3(asinh(pz)))>@p6-1.158 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="12" if real(fn3(sinh(pz)))>@p6-0.66 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="13" if real(fn3(sin(pz)))>@p6-0.951 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="14" if real(fn3(recip(pz)))>@p6-0.3 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="15" if real(fn3(round(pz)))>@p6-2.542 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="16" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6+2.325 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="17" if real(fn3(pz))+imag(fn3(log(pz)))>@p6+2.657 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="18" if real(fn3(pz))+imag(fn3(sqrt(pz)))>@p6+5.107 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="19" if real(fn3(pz))+imag(fn3(sqr(pz)))>@p6-0.913 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="20" if real(fn3(pz))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="21" if real(fn3(pz))+imag(fn3(cotan(pz)))>@p6-2.077 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="22" if real(fn3(pz))+imag(fn3(atan(pz)))>@p6+0.497 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="23" if real(fn3(pz))+imag(fn3(tanh(pz)))>@p6+0.497 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="24" if real(fn3(pz))+imag(fn3(acosh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="25" if real(fn3(pz))+imag(fn3(acos(pz)))>@p6-0.6124 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="26" if real(fn3(cabs(pz)))+imag(fn3(conj(pz)))>@p6+0.441 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="27" if real(fn3(cabs(pz)))+imag(fn3(cotan(pz)))>@p6+1.578 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="28" if real(fn3(cabs(pz)))+imag(fn3(acosh(pz)))>@p6-0.415 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="29" if real(fn3(cabs(pz)))+imag(fn3(recip(pz)))>@p6+2.99 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="30" if real(fn3(abs(pz)))+imag(fn3(sqrt(pz)))>@p6+4.153 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="31" if real(fn3(abs(pz)))+imag(fn3(cotanh(pz)))>@p6+1.495 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="32" if real(fn3(abs(pz)))+imag(fn3(atanh(pz)))>@p6+6.394 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="33" if real(fn3(abs(pz)))+imag(fn3(atan(pz)))>@p6+1.135 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="34" if real(fn3(abs(pz)))+imag(fn3(tanh(pz)))>@p6+1.135 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="35" if real(fn3(abs(pz)))+imag(fn3(tan(pz)))>@p6+1.628 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="36" if real(fn3(abs(pz)))+imag(fn3(asinh(pz)))>@p6+2.251 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="37" if real(fn3(abs(pz)))+imag(fn3(asin(pz)))>@p6+13.71 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="38" if real(fn3(log(pz)))+imag(fn3(cotanh(pz)))>@p6+1.171 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="39" if real(fn3(log(pz)))+imag(fn3(cotan(pz)))>@p6+0.756 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="40" if real(fn3(log(pz)))+imag(fn3(tanh(pz)))>@p6+1.752 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="41" if real(fn3(log(pz)))+imag(fn3(acosh(pz)))>@p6-0.49 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="42" if real(fn3(log(pz)))+imag(fn3(acos(pz)))>@p6-0.699 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="43" if real(fn3(atan(pz)))+imag(fn3(flip(pz)))>@p6-2.7 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="44" if real(fn3(sqrt(pz)))+imag(fn3(cotanh(pz)))>@p6+1.294 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="45" if real(fn3(sqrt(pz)))+imag(fn3(cotan(pz)))>@p6+1.294 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="46" if real(fn3(sqrt(pz)))+imag(fn3(tanh(pz)))>@p6+1.169 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="47" if real(fn3(sqrt(pz)))+imag(fn3(acosh(pz)))>@p6+0.131 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="48" if real(sqr((pz)))+imag(fn3(cabs(pz)))>@p6+0.006 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="49" if real(sqr((pz)))+imag(fn3(abs(pz)))>@p6+0.25 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="50" if real(sqr((pz)))+imag(fn3(cotanh(pz)))>@p6+0.25 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="51" if real(sqr((pz)))+imag(fn3(acosh(pz)))>@p6-0.705 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="52" if real(sqr((pz)))+imag(fn3(cos(pz)))>@p6+10.734 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="53" if real(sqr((pz)))+imag(fn3(sin(pz)))>@p6+0.437 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="54" if real(fn3(cotanh(pz)))+imag(fn3(flip(pz)))>@p6-2.885 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="55" if real(fn3(cotanh(pz)))+imag(fn3(conj(pz)))>@p6-0.892 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="56" if real(fn3(cotanh(pz)))+imag(fn3(cabs(pz)))>@p6-0.949 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="57" if real(fn3(cotanh(pz)))+imag(fn3(abs(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="58" if real(fn3(cotanh(pz)))+imag(fn3(sqrt(pz)))>@p6-2.948 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="59" if real(fn3(cotanh(pz)))+imag(fn3(cotan(pz)))>@p6-0.035 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="60" if real(fn3(cotanh(pz)))+imag(fn3(atan(pz)))>@p6-0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="61" if real(fn3(cotanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="62" if real(fn3(cotanh(pz)))+imag(fn3(acosh(pz)))>@p6-0.822 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="63" if real(fn3(cotanh(pz)))+imag(fn3(cosh(pz)))>@p6-0.967 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="64" if real(fn3(cotan(pz)))+imag(fn3(flip(pz)))>@p6 -2.254 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="65" if real(fn3(cotan(pz)))+imag(fn3(cotanh(pz)))>@p6-0.136 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="66" if real(fn3(cotan(pz)))+imag(fn3(atan(pz)))>@p6-0.281 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="67" if real(fn3(cotan(pz)))+imag(fn3(tanh(pz)))>@p6-0.073 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="68" if real(fn3(cotan(pz)))+imag(fn3(acosh(pz)))>@p6-1.713 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="69" if real(fn3(cotan(pz)))+imag(fn3(recip(pz)))>@p6-0.218 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="70" if real(fn3(round(pz)))+imag(fn3(acos(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="71" if real(fn3(atanh(pz)))+imag(fn3(abs(pz)))>@p6-0.296 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="72" if real(fn3(atanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.213 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="73" if real(fn3(atanh(pz)))+imag(fn3(cotan(pz)))>@p6-1.147 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="74" if real(fn3(atanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.254 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="75" if real(fn3(atan(pz)))+imag(fn3(cabs(pz)))>@p6-1.168 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="76" if real(fn3(atan(pz)))+imag(fn3(abs(pz)))>@p6+0.14 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="77" if real(fn3(atan(pz)))+imag(fn3(sqrt(pz)))>@p6+0.244 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="78" if real(fn3(atan(pz)))+imag(fn3(cotanh(pz)))>@p6+1.2 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="79" if real(fn3(atan(pz)))+imag(fn3(cotan(pz)))>@p6+0.38 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="80" if real(fn3(atan(pz)))+imag(fn3(atanh(pz)))>@p6-0.038 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="81" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6-0.9 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="82" if real(fn3(atan(pz)))+imag(fn3(tanh(pz)))>@p6+0.356 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="83" if real(fn3(atan(pz)))+imag(fn3(tan(pz)))>@p6-0.391 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="84" if real(fn3(atan(pz)))+imag(fn3(acosh(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="85" if real(fn3(atan(pz)))+imag(fn3(asinh(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="86" if real(fn3(tanh(pz)))+imag(fn3(abs(pz)))>@p6+0.242 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="87" if real(fn3(tanh(pz)))+imag(fn3(cotanh(pz)))>@p6-0.9 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="88" if real(fn3(tanh(pz)))+imag(fn3(atan(pz)))>@p6-0.713 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="89" if real(fn3(tanh(pz)))+imag(fn3(tanh(pz)))>@p6-0.952 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="90" if real(fn3(tan(pz)))+imag(fn3(recip(pz)))>@p6-0.36 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="91" if real(fn3(tan(pz)))+imag(fn3(cotan(pz)))>@p6-1.139 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="92" if real(fn3(acosh(pz)))+imag(fn3(trunc(pz)))>@p6+0.159 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="93" if real(fn3(asinh(pz)))+imag(fn3(abs(pz)))>@p6+0.823 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="94" if real(fn3(asin(pz)))+imag(fn3(atan(pz)))>@p6+0.823 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="95" if real(fn3(ceil(pz)))+imag(fn3(asinh(pz)))>@p6+3.19 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="96" if real(fn3(ceil(pz)))+imag(fn3(tan(pz)))>@p6+3.065 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="97" if real(fn3(ceil(pz)))+imag(fn3(atan(pz)))>@p6-0.693 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="98" if real(fn3(ceil(pz)))+imag(fn3(abs(pz)))>@p6-2.935 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="99" if real(fn3(floor(pz)))+imag(fn3(log(pz)))>@p6+2.276 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="100" if real(fn3(floor(pz)))+imag(fn3(sqrt(pz)))>@p6+3.252 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="101" if real(fn3(trunc(pz)))+imag(fn3(tanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="102" if real(fn3(trunc(pz)))+imag(fn3(cotanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="103" if real(fn3(round(pz)))+imag(fn3(cotanh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="104" if real(fn3(round(pz)))+imag(fn3(acosh(pz)))>@p6-0.236 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif endif return pz endfunc private: complex a complex b default: title="IFB 65" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96""97""98""99""100"\ "101""102""103""104" endparam param p5 caption="IFB Parameter 1" default=(-0.689,0.628) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(2.606,-0.224) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(1.01,0.55) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB74(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @V=="1" pz=@p6*pz+@p7 if @Va=="1" float a=real(pz) elseif @Va=="2" float a=real(exp(pz))-0.671 elseif @Va=="3" float a=real(cotanh(pz))+0.322 elseif @Va=="4" float a=real(atan(pz))+0.588 elseif @Va=="5" float a=real(tanh(pz))+0.444 elseif @Va=="6" float a=real(acos(pz)) elseif @Va=="7" float a=real(sin(pz))-0.888 elseif @Va=="8" float a=real(recip(pz))-0.533 elseif @Va=="9" float a=real(ceil(pz)) elseif @Va=="10" float a=real(floor(pz)) elseif @Va=="11" float a=imag(exp(pz))-2.309 elseif @Va=="12" float a=imag(sqr(pz))-1.598 elseif @Va=="13" float a=real(pz)+imag(pz) elseif @Va=="14" float a=real(sqr(pz))+imag(sqr(pz)) elseif @Va=="15" float a=real(cotanh(pz))+imag(cotanh(pz))-1.243 elseif @Va=="16" float a=real(atan(pz))+imag(atan(pz))+0.533 elseif @Va=="17" float a=real(acosh(pz))+imag(acosh(pz))-1.443 elseif @Va=="18" float a=real(asinh(pz))+imag(asinh(pz)) elseif @Va=="19" float a=real(ceil(pz))+imag(ceil(pz))-3.663 elseif @Va=="20" float a=real(floor(pz))+imag(floor(pz)) elseif @Va=="21" float a=real(pz)-imag(pz) elseif @Va=="22" float a=real(cotanh(pz))-imag(cotanh(pz))-0.355 elseif @Va=="23" float a=real(atanh(pz))-imag(atanh(pz)) elseif @Va=="24" float a=real(atan(pz))-imag(atan(pz))-0.444 elseif @Va=="25" float a=real(tanh(pz))-imag(tanh(pz))-0.488 elseif @Va=="26" float a=real(asinh(pz))-imag(asinh(pz))-0.782 elseif @Va=="27" float a=real(ceil(pz))-imag(ceil(pz)) elseif @Va=="28" float a=real(trunc(pz))-imag(trunc(pz)) else float a=real(round(pz))-imag(round(pz)) endif if a<@p4 pz=pz*fn2(sqrt(@p1))+@p2 endif if a>@p4 && a<@p5 pz=pz*fn2(cabs(@p1))+@p3 endif if a>@p5 pz=pz*fn2(@p1)+@p8 endif else while i<@iter i=i+1 pz=@p6*pz+@p7 if @Va=="1" float a=real(pz) elseif @Va=="2" float a=real(exp(pz))-0.671 elseif @Va=="3" float a=real(cotanh(pz))+0.322 elseif @Va=="4" float a=real(atan(pz))+0.588 elseif @Va=="5" float a=real(tanh(pz))+0.444 elseif @Va=="6" float a=real(acos(pz)) elseif @Va=="7" float a=real(sin(pz))-0.888 elseif @Va=="8" float a=real(recip(pz))-0.533 elseif @Va=="9" float a=real(ceil(pz)) elseif @Va=="10" float a=real(floor(pz)) elseif @Va=="11" float a=imag(exp(pz))-2.309 elseif @Va=="12" float a=imag(sqr(pz))-1.598 elseif @Va=="13" float a=real(pz)+imag(pz) elseif @Va=="14" float a=real(sqr(pz))+imag(sqr(pz)) elseif @Va=="15" float a=real(cotanh(pz))+imag(cotanh(pz))-1.243 elseif @Va=="16" float a=real(atan(pz))+imag(atan(pz))+0.533 elseif @Va=="17" float a=real(acosh(pz))+imag(acosh(pz))-1.443 elseif @Va=="18" float a=real(asinh(pz))+imag(asinh(pz)) elseif @Va=="19" float a=real(ceil(pz))+imag(ceil(pz))-3.663 elseif @Va=="20" float a=real(floor(pz))+imag(floor(pz)) elseif @Va=="21" float a=real(pz)-imag(pz) elseif @Va=="22" float a=real(cotanh(pz))-imag(cotanh(pz))-0.355 elseif @Va=="23" float a=real(atanh(pz))-imag(atanh(pz)) elseif @Va=="24" float a=real(atan(pz))-imag(atan(pz))-0.444 elseif @Va=="25" float a=real(tanh(pz))-imag(tanh(pz))-0.488 elseif @Va=="26" float a=real(asinh(pz))-imag(asinh(pz))-0.782 elseif @Va=="27" float a=real(ceil(pz))-imag(ceil(pz)) elseif @Va=="28" float a=real(trunc(pz))-imag(trunc(pz)) else float a=real(round(pz))-imag(round(pz)) endif if a<@p4 pz=pz*fn2(sqrt(@p1))+@p2 endif if a>@p4 && a<@p5 pz=pz*fn2(cabs(@p1))+@p3 endif if a>@p5 pz=pz*fn2(@p1)+@p8 endif endwhile pz=pz*@adj endif return pz endfunc private: int i default: title="IFB 74" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Type" enum="1""2" endparam param Va caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29" endparam param p1 caption="IFB Parameter a" default=(1.236,0.751) endparam param p2 caption="IFB Parameter b1" default=(0.196,0.694) endparam param p3 caption="IFB Parameter b2" default=(0.785,-0.432) endparam param p8 caption="IFB Parameter b3" default=(-1.099,-0.772) endparam param p4 caption="IFB Parameter c1" default=-0.5 endparam param p5 caption="IFB Parameter c2" default=0.5 endparam param p6 caption="Loop Parameter 1" default=(0.627,0.7) endparam param p7 caption="Loop Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc param iter caption="Iterations" visible=@V=="2" default=32 endparam param adj caption="Adjustment" default=1.139 visible=@V=="2" endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Chebyshev-Halley(common.ulb:ConvergentFormula) { ;Family of Chebyshev-Halley type methods ;https://www.researchgate.net/publication/233907415_Note_on_Super-Halley_Method_and_its_Variants ;CH Parameter 3 = 0 is Chebyshev method ;CH Parameter 3 = 0.5 is Halley method ;CH Parameter 3 = 1 is Super-Halley method public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@pzp1*@pzf(pz)+@pzp2 if @v_SFormula==100 f=pz^@pow-@p2 f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) else f=pz^@power-@p2 f1=@power*pz^(@power-1) f2=(@power-1)*@power*pz^(@power-2) endif a=@p4*f/f1 b=@p5*f2*a/f1 return pz-@p1*a*(1+(b/(1-@p3*b))/2)+@c endfunc default: title="Chebyshev-Halley" int param v_SFormula caption="Version" default=101 visible=@v_SFormula<101 endparam param pzp1 caption="Z Parameter 1" default=(1,0) endparam param pzp2 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="CH Parameter 1" default=(1,0) endparam param p2 caption="CH Parameter 2" default=(1,0) endparam param p3 caption="CH Parameter 3" default=(-0.5,0) endparam param p4 caption="CH Parameter 4" default=(1,0) endparam param p5 caption="CH Parameter 5" default=(1,0) endparam param c caption="Julia Seed" default=(0,0) endparam param pow caption="Exponent" default=3 visible=@v_SFormula==100 endparam param power caption="Exponent" default=(3,0) visible=@v_SFormula>100 endparam func sf caption="Start Function" default=ident() endfunc func pzf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Newton-Hines(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*@zf(pz)+@zp2 if @v==0 f=pz^@pow-@p3 f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*((pz-1)/(pz+1))^@pow/(pz^2-1) elseif @v==2 f=((pz^2-1)/(pz+1))^@pow-@p3 f1=@pow*(pz-1)^(@pow-1) elseif @v==3 f=((pz^3-1)/(pz^2+1))^@pow-@p3 f1=@pow*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow-1) elseif @v==4 f=((pz^2+1)/pz)^@pow-@p3 f1=@pow*(pz^2-1)*(pz+1/pz)^@pow/(pz^3+pz) elseif @v==5 f=(pz+pz^2)^@pow-@p3 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+((pz-1i)/(pz+1i))^@pow-@p3 f1=@pow*pz^(@pow-1)+2i*@pow*((pz-1i)/(pz+1i))^@pow/(pz^2+1) elseif @v==7 f=((pz^2-1i)/(pz+1i))^@pow-@p3 f1=@pow*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow-1) elseif @v==8 f=((pz^2-1i)/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz)^(@pow-1) elseif @v==9 f=((pz^2+1i)/(pz+1))^@pow-@p3 f1=@pow*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow-1)/(pz+1)^2 elseif @v==10 f=(pz+1i)^@pow-@p3 f1=@pow*(pz+1i)^(@pow-1) elseif @v==11 f=(1/pz^2+1/pz)^@pow-@p3 f1=@pow*(pz+2)*((pz+1)/pz^2)^(@pow-1)/pz^2 elseif @v==12 f=pz^@pow*(pz-2)/(1-2*pz)-(@p3-0.5) f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 f=((pz^2-2)/(1-2*pz))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==14 f=((1-2*pz)/(pz^2-2))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==15 f=recip(pz)^@pow-@p3 f1=-@pow*recip(pz)^(@pow+1) elseif @v==16 f=(pz+sqr(pz)+1/pz)^@pow-@p3 f1=@pow*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow-1) elseif @v==17 f=(sqr(pz)-1/pz)^@pow-@p3 f1=@pow*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow-1) elseif @v==18 f=(pz-1i-1i/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow-1) elseif @v==19 f=(pz+1i-1i/pz^2)^@pow-@p3 f1=@pow*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow-1) elseif @v==20 f=(pz+pz^2)^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*(2*pz+1)*(pz^2+pz)^(@pow-1)+@pow*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow-1) elseif @v==21 f=(pz^(@pow+1)-@p3)/(pz^@pow+@p3) f1=(@pow+1)*pz^@pow/(pz^@pow+@p3)-@pow*pz^(@pow-1)*(pz^(@pow+1)-@p3)/(pz^@pow+@p3)^2 elseif @v==22 f=(pz^(@pow+1)+@p3)/(pz^@pow-1i) f1=(@pow+1)*pz^@pow/(pz^@pow-1i)-@pow*pz^(@pow-1)*(pz^(@pow+1)+@p3)/(pz^@pow-1i)^2 elseif @v==23 f=(pz^2+pz/1i)^@pow-@p3 f1=@pow*(2*pz-1i)*(pz*(pz-1i))^(@pow-1) elseif @v==24 f=((pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2))^2 f1=2*@pow*pz^(@pow-1)*(pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2)^2-2*@pow*(pz^@pow+(@p3-1)-1)^2/(@pow*pz+(@p3-1)-2)^3 elseif @v==25 f=tan(pz)^@pow-@p3 f1=@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==26 f=cotan(pz)^@pow-@p3 f1=-@pow*cotan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==27 f=tanh(pz)^@pow-@p3 f1=@pow*tanh(pz)^@pow/(sinh(pz)*cosh(pz)) elseif @v==28 f=(1/cos(pz))^@pow-@p3 f1=@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==29 f=(1/sin(pz))^@pow-@p3 f1=-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==30 f=pz^@pow+(1/sin(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==31 f=pz^@pow+(1/cos(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==32 f=pz^@pow+(pz^2)^@pow+1i*(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3i*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==33 f=(pz-1i)^@pow+(pz^2-1i)^@pow+1i*(pz^3-1i)^@pow-@p3 f1=2*@pow*pz*(pz^2-1i)^(@pow-1)+3*@pow*pz*2*(pz^3-1i)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==34 f=(pz+1i)^@pow+(pz^2+1i)^@pow+1i*(pz^3+1i)^@pow-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+3*@pow*pz*2*(pz^3+1i)^(@pow-1)+@pow*(pz+1i)^(@pow-1) elseif @v==35 f=9*pz^@pow+3i*pz^(@pow+1)+(1/cos(pz))^@pow-@p3 f1=9*@pow*pz^(@pow-1)+3i*(@pow+1)*pz^@pow+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==36 f=pz^@pow+pz^(@pow+1)+pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow+(@pow+2)*pz^(@pow+1) elseif @v==37 f=pz^@pow+pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==38 f=2*pz^@pow-3i*pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=2*@pow*pz^(@pow-1)-3i*(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==39 f=pz^@pow+(pz^2)^@pow+(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==40 f=(pz+cotanh(pz))^@pow-@p3 f1=-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) elseif @v==41 f=(pz^2*(pz-2)/(1-2*pz))^@pow-@p3 f1=@pow*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow/((pz-2)*pz*(2*pz-1)) elseif @v==42 f=pz^@pow+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow f1=@pow*pz^(@pow-1)+@pow*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow elseif @v==43 f=pz^@pow+1i*(pz-1/pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==44 f=pz^(@pow+1)-1i*(pz-1/pz)^@pow-@p3 f1=(@pow+1)*pz^@pow-1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==45 f=pz^@pow+pz^(@pow-1)+1i*(pz-1/pz)^@pow+tan(pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1)+@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==46 f=(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==47 f=pz^@pow+(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==48 f=(pz+1i*pz)^@pow+pz^3/1i+(pz+cotanh(pz))^@pow-@p3 f1=@pow*((1+1i)*pz)^@pow/pz+3*pz^2/1i-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) else f=(pz^2+1i)^@pow+(pz+2i)^(@pow+1)-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+(@pow+1)*(pz+2i)^@pow endif return pz-@p1*f/(f1-@p2*f/pz) endfunc default: title="Newton-Hines" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param p2 caption="Hines Parameter" default=(1,0) endparam param p1 caption="Newton Parameter 1" default=(1,0) endparam param p3 caption="Newton Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Metabrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@sf(pz) endif c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 a=pz^@pow+c b=c^@pow+pz d=a^@pow+b f=b^@pow+a g=d^@pow+f h=f^@pow+d j=g^@pow+h k=h^@pow+g pz=j^@pow+k return pz endfunc private: complex c default: title="Metabrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(2,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MetalogMod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @sv==0 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) endif c=@pf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @mj==0 pz=((((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))*((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))+((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c)))\ *(((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))*((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz))+((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c)))\ +(((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c))*((@p1*c*(1-c)+pz)*(@p1*c*(1-c)+pz)+(@p1*pz*(1-pz)+c))+((@p1*pz*(1-pz)+c)*(@p1*pz*(1-pz)+c)+(@p1*c*(1-c)+pz)))) else pz=((((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))*((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))+((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c)))\ *(((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))*((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz))+((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c)))\ +(((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c))*((@p1*@c*(1-@c)+pz)*(@p1*@c*(1-@c)+pz)+(@p1*pz*(1-pz)+@c))+((@p1*pz*(1-pz)+@c)*(@p1*pz*(1-pz)+@c)+(@p1*@c*(1-@c)+pz)))) endif return pz endfunc private: complex c default: title="Metalog Mod" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param sv caption="Start Type" enum="Parameter""Pixel" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 && @sv==0 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @sv==1) endfunc param p1 caption="MLM Parameter" default=(0.5,0) endparam param c caption="Julia Seed" default=(0,0) visible=@mj==1 endparam func pf caption="Pixel Function" default=ident() visible=@mj==0 endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AleatorJBivar2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) pk=pz pz=pz+@sp*fn2(pz) pk=pk+@sp*fn2(pk) i2=0 c=@c return pz return pk endfunc private: float values[#maxiter] int i int seed complex pk int i2 complex c complex func Iterate(complex pz) if @av==0 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+@ap*@af(values[i2])+c elseif @av==1 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+a^2+c elseif @av==2 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==3 pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==4 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+@ap*@af(values[i2])+c elseif @av==5 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+pk^2+c elseif @av==6 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c else pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c endif i2=i2+1 return pz return pk endfunc default: title="Aleator J Bivar 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param ap caption="Aleator Parameter" default=(0.5,0) endparam func af caption="Aleator Function" default=sqr() endfunc param seed caption="Random Seed" default=12345678 endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func fn3 caption="Bivar Function" default=ident() endfunc param c caption="Julia Seed" default=(-0.7825,0) endparam func fn1 caption="Start Function" default=ident() endfunc param sp caption="Start Parameter" default=(0,0) endparam func fn2 caption="Start Function 2" default=ident() visible=@sp!=0 endfunc param pzp1 caption="Z Parameter 1" default=(0.7,0) endparam param pzp2 caption="Z Parameter 2" default=(-0.7,0) endparam param pkp1 caption="K Parameter 1" default=(0.7,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Felescarte2(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e100 i=@iter i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) d=x if @v=="1" x=@p1*x y=@p2*y elseif @v=="2" x=@p1*x^2 y=@p2*y+x elseif @v=="3" x=y y=@p1+@p2*d+d^2-d*y elseif @v=="4" x=(@p1+0.5)*x-y^2 y=@p2*y+d*y elseif @v=="5" x=y y=-(@p1*d^3+(@p2-1.5)*d+@p3*y)/(@p4-1.5) elseif @v=="6" x=@p1*x+y y=(@p2-0.5)+d^2 elseif @v=="7" x=@p1*x*y+y y=y+y^2*d+@p2*d elseif @v=="8" x=@p1*x/y y=@p2*y+d^2 elseif @v=="9" x=y y=-@p2*d+@p1*y-y^3 elseif @v=="10" x=(@p1+2)*x^2+@p2*(y-x) y=1-(@p1+2)*y^2+@p2*d^2 elseif @v=="11" x=@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) y=@p2*(d*sin(@p3-@p4/(d^2+y^2+1))+y*cos(@p3-@p4/(d^2+y^2+1))) elseif @v=="12" x=(@p1-2.5)*x*(1-x/@p3)-@p2*x*y y=-@p2*d*y+@p4*(@p5-y) elseif @v=="13" x=@p1*(x-y) y=@p2*(x+y) elseif @v=="14" x=x+@p1*flip(y) y=y-@p2*cabs(d) elseif @v=="15" x=x+@p1*exp(y) y=y-@p2*cabs(d) elseif @v=="16" x=x+@p1*sqrt(y) y=y-@p2*sqrt(d) elseif @v=="17" x=x+@p1*sqr(y) y=y-@p2*sqrt(d) elseif @v=="18" x=x+(@p1-1+0.5i)*tan(y) y=y-@p2*cosh(d) elseif @v=="19" x=x+(@p1-1.5)*tan(y) y=y-@p2*cos(d) elseif @v=="20" x=x+@p1*acosh(y) y=y-@p2*cos(d) elseif @v=="21" x=x+@p1*cosh(y) y=y-@p2*cos(d) elseif @v=="22" x=x+@p1*sin(y) y=y-@p2*cos(d) elseif @v=="23" x=x+@p1*cosh(y) y=y-@p2*recip(d) elseif @v=="24" x=x^3+(@p1-2)*x+@p2+y y=@p3*d elseif @v=="25" x=1+y-@p1*cabs(x) y=@p2*d elseif @v=="26" x=(1-@p1*x-@p2*y)*(@p1*x+@p2*y) y=d elseif @v=="27" x=@p2*y+sin(x) y=@p1-d elseif @v=="28" x=x^2-y^2+(@p1+1)*x+@p2 y=2*d*y-5*(@p1+1)*y/2 elseif @v=="29" x=(1-(@p1+1))*x+y y=(@p1+1)*@p2*d+@p3*y-(@p1+1)*d^3 elseif @v=="30" x=1+(@p1-2.5)*(cabs(x)-y^2)+y y=@p2*d elseif @v=="31" x=3*x*((x-y)^2-(@p1-1.5))/((3*x-y)^2-@p2) y=y*(y^2+2*d*y-3*d^2-(@p3-1.5))/((3*d-y)^2-@p4) elseif @v=="32" x=1-@p1*sin(x)+@p2*y y=d elseif @v=="33" x=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) y=-@p1*sin(d)-@p2*sin(3*d)+@p3*sin(@p4) elseif @v=="34" x=x+@p1*sin(y) y=y+@p2*d+@p1*sin(y) elseif @v=="35" x=1-@p1*x^2+@p2*(y-x) y=1-@p1*y^2+@p2*(d-y) elseif @v=="36" x=sin(x)-sin(2*@p1*y) y=@p2*d elseif @v=="37" x=(1+@p1*(@p2+1))*x-(@p2+1)*x*y y=(1-(@p2+1))*y+(@p2+1)*d^2 elseif @v=="38" x=(@p1+3)*x/(1+y^2) y=d+@p2*y elseif @v=="39" x=sin(@p1*y)+@p2*sin(@p1*x) y=sin((@p3+2.5)*d)+@p4*sin((@p3+2.5)*y) elseif @v=="40" x=sin(@p1*y)+sqr(sin(@p1*x)) y=sin((@p2+2)*d)+sqr(sin((@p2+2)*y)) elseif @v=="41" x=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin((@p2-0.3)*x)+(sin((@p2-0.3)*y))^2+(sin(@p3*y))^3) y=sin((@p2-0.3)*d)+(sin((@p2-0.3)*y))^2+(sin(@p3*y))^3 elseif @v=="42" x=abs(sin(@p1*y))+(sin(@p1*x))^2 y=abs(sin(@p2*d))+(sin(@p1*y))^2 elseif @v=="43" x=sin(@p1*y)+(@p2-1.5)*cos(@p1*x) y=sin((@p3-0.35-1i)*d)+@p4*cos((@p3-0.35-1i)*y) elseif @v=="44" x=x-(@p1+0.325+0.85i)*sin(y+tan((@p2-2+1i)*y)) y=y-(@p1+0.325+0.85i)*sin(d+tan((@p2-2+1i)*d)) elseif @v=="45" x=@p1*sin(y+tan((@p2-1+1i)*y)) y=@p1*sin(d+tan((@p2-1+1i)*d)) elseif @v=="46" x=@p4*sin((@p1+1-1i)*x)-sin(@p2*y) y=@p3*cos((@p1+1-1i)*d)+cos(@p2*y) elseif @v=="47" x=x^2+-y^2+(@p1+1-1i)*x+@p2*y y=2*d*y+@p3*d+@p4*y elseif @v=="48" x=((@p1+1.5)-x-@p2*y)*x y=(@p3-y-@p4*d)*y elseif @v=="49" x=@p1*log(cabs(x))-y y=@p2*log(cabs(d))+d elseif @v=="50" x=cabs(x)-@p1*y y=@p2*cabs(d)+d elseif @v=="51" x=sqr(cabs(x))-(@p1-2-0.5i)*y y=(@p2-0.7)*(cabs(d))+d elseif @v=="52" x=sqr(cabs(x))-@p1*y y=@p2*flip(cabs(d))+d elseif @v=="53" x=sqr(cabs(x))-(@p1+1i)*y y=@p2*exp(cabs(d))+d elseif @v=="54" x=cos(cabs(x))-(@p1-1-0.5i)*y y=(@p2-0.75-0.25i)*sin(cabs(d))+d elseif @v=="55" x=sin(cabs(x))-(@p1-1.25-0.75i)*y y=@p2*sin(cabs(d))+d elseif @v=="56" x=flip(cabs(x))-@p1*y y=@p2*recip(cabs(d))+d elseif @v=="57" x=@p1*(x-x^3/3-y) y=d/@p2 elseif @v=="58" x=@p2*y y=(@p1+2)*(1-d^2)*y-d elseif @v=="59" x=exp(y)-1+@p2*(exp(x)-1)*exp(y)/(@p2+exp(2*x)) y=@p1*(1-exp(d))-@p1*@p2*(exp(d)-1)*exp(d)/(@p2+exp(2*d)) elseif @v=="60" x=@p1*x-@p2*x*y y=-@p3*y+@p4*d*y elseif @v=="61" x=@p1*x*(1-x-(@p2-2)*y) y=@p3*y*(1-y-(@p4-2)*d) elseif @v=="62" x=(x+@p1*sin(y))*cos(2*pi/@p2)+y*sin(2*pi/@p2) y=-(d+@p1*sin(y))*sin(2*pi/@p2)+y*cos(2*pi/@p2) elseif @v=="63" x=x*y+@p1*x-y y=d+@p2*y elseif @v=="64" x=@p1*y y=y*(1-d^2)-(@p2-0.3)*d elseif @v=="65" x=@p1*exp(y) y=y*flip(1-d^2)-@p2*d elseif @v=="66" x=(@p1-1.65)*sqr(y) y=y*flip(1-d^2)-@p2*d elseif @v=="67" x=@p1*y y=y*cosh(1-d^2)-@p2*d elseif @v=="68" x=@p1*y y=y*recip(1-d^2)-@p2*d elseif @v=="69" x=(@p1-0.25)*exp(y) y=y*recip(1-d^2)-@p2*d elseif @v=="70" x=@p1*sqr(y) y=y*recip(1-d^2)-(@p2-3.3+0.85i)*d elseif @v=="71" x=@p1*sin(y) y=y*recip(1-d^2)-(@p2-3.3+0.85i)*d endif z=x+flip(y) i=i+1 float x1=real(z) float y1=imag(z) float b=|(2*x1+y1)%@adj2+flip((-x1+y1)%@adj2)| if b@sca index=@adj*a*i2/17 else m_Solid=true endif else if a<=@sca index=@adj*a*i2/17 else m_Solid=true endif endif else index=@adj*a*i2/17 endif return index endfunc private: float a int i int i2 float index default: title="Felescarte 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71" endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@v=="5" || @v=="11" || @v=="12" || @v=="24" || @v=="29" \ || @v=="31" || @v=="33" || @v=="39" || @v=="41" || @v=="43" \ || @v=="47" || @v=="48" || @v=="60" || @v=="61" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@v=="5" || @v=="11" || @v=="12" || @v=="31" || @v=="33" \ || @v=="39" || @v=="43" || @v=="47" || @v=="48" || @v=="60" || @v=="61" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@v=="12" endparam func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param iter caption="Adjustment 1" default=0 endparam param adj caption="Adjustment 2" default=1.0 endparam param adj2 caption="Modulus" default=15.0 endparam param solid caption="Solid Color" default=true endparam param sca caption="Solid Color Adjustment" default=2.0 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_IFB31(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(pz)) if a<@p4 pz=pz*sqrt(@p1)+@p2 endif if @p5<=a pz=pz*flip(@p25)+@p3 endif if a<@p8 pz=pz*@p25+@p9 endif if @p10<=a pz=pz*abs(@p1)+@p11 endif return pz endfunc default: title="IFB 31" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=0.2555797 endparam param p1 caption="IFB Parameter a1" default=(-0.11,-1.22) endparam param p25 caption="IFB Parameter a2" default=(0.986863,0.078824) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_HiskersBant(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==0 pz=@sf(pz) else pz=@sp endif c=@cf(fpixel) else pz=@sf(pz) c=@seed endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 c=@cp1*c+@cp2 if @v==0 pz=c/pz^@pow+@p1 c=c*pz^@pow-@p1 elseif @v==1 a=pz pz=c/pz^@pow+@p1 c=c*a^@pow-@p1 elseif @v==2 c=c*pz^@pow-@p1 pz=c/pz^@pow+@p1 elseif @v==3 pz=c/pz^@pow+@p1 c=c*sqr(pz)^@pow-@p1 elseif @v==4 a=pz pz=c/pz^@pow+@p1 c=c*sqr(a)^@pow-@p1 elseif @v==5 pz=sqr(c/pz^@pow)+@p1 c=c*pz^@pow-@p1 endif return pz endfunc default: title="Hisker's Bant" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(1,0) visible=@mj==0 && @st==1 endparam param seed caption="Julia Seed" default=(-0.5,0) visible=@mj==1 endparam param v caption="HB Variant" enum="1""2""3""4""5""6" endparam param p1 caption="HB Parameter" default=(0.27,0) endparam param pow caption="Exponent" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param cp1 caption="C Parameter 1" default=(-1,0) endparam param cp2 caption="C Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc func cf caption="C Function" default=ident() visible=@mj==0 endfunc func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_MoukonyFazurut(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @st==0 pz=@sf(pz) c=@sf(fpixel) else pz=@sp c=@cf(fpixel) endif else pz=@sf(pz) if @version<101 c=@c else c=@c1 endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 d=(pz^2-@mfp1)/(pz^2+@mfp1) f=@mfp2+@mfp3*@mff(pz+c) pz=d*f*pz return pz endfunc default: title="Moukony Fazurut" int param version caption="Version" default=101 visible=@version<101 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@mj==0 && @st==1 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc func cf caption="C Function" default=ident() visible=(@mj==0 && @st==1) endfunc param mfp1 caption="MF Parameter 1" default=(-1,0) endparam param mfp2 caption="MF Parameter 2" default=(1,0) endparam param mfp3 caption="MF Parameter 3" default=(1,0) endparam param c caption="Julia Seed" default=(0.3,0) visible=(@mj==1 || (@mj==0 && @st==0)) && @version==100 endparam param c1 caption="Julia Seed" default=(0.3,0) visible=@mj==1 && @version==101 endparam func mff caption="MF Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Memzon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==0 pz=@sf(pz) else pz=@sp endif else pz=@sf(pz) endif i=0 return pz endfunc private: complex fPixel int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if @mj==0 if i<@mtp pz=pz^2+@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2+@mtf2(pz)+@c1 i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@c2 i=0 endif endif elseif @v==1 if @mj==0 if i<@mtp pz=pz^2+@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2-@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2+@mtf2(pz)+@c1+0.3 i=i+1 else pz=@mtf1(pz)^2-@mtf2(pz)+@c2+0.75 i=0 endif endif else if @mj==0 if i<@mtp pz=pz^2-@mtf2(pz)+@pp1*@pf(fpixel) i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@pp2*@pf(fpixel) i=0 endif else if i<@mtp pz=pz^2-@mtf2(pz)+@c1+2 i=i+1 else pz=@mtf1(pz)^2+@mtf2(pz)+@c2 i=0 endif endif endif return pz endfunc default: title="Memzon X 1" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="Mandelbrot""Julia" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@mj==0 && @st==1 endparam func sf caption="Start Function" default=ident() visible=@mj==1 || (@mj==0 && @st==0) endfunc param v caption="Memzon Variant" enum="1""2""3" endparam param mtp caption="Memzon Parameter" default=5 endparam func mtf1 caption="Memzon Function 1" default=sqr() endfunc func mtf2 caption="Memzon Function 2" default=ident() endfunc func pf caption="Pixel Function" default=ident() visible=@mj==0 endfunc param c1 caption="Julia Seed 1" default=(-1,0) visible=@mj==1 endparam param c2 caption="Julia Seed 2" default=(-1.5,0) visible=@mj==1 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@mj==0 endparam param pp2 caption="Pixel Parameter 2" default=(1,0) visible=@mj==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc private: complex fPixel int i complex func Iterate(complex pz) if @v==0 pz=pz elseif @v==1 pz=sqr(pz) elseif @v==2 pz=cosh(pz) elseif @v==3 pz=cos(pz) elseif @v==4 pz=sinh(pz) elseif @v==5 pz=sin(pz) elseif @v==6 pz=pz^3 elseif @v==7 pz=pz-pz^2 elseif @v==8 pz=pz-0.5*exp(pz) elseif @v==9 pz=pz-2*tan(pz) elseif @v==10 pz=pz-0.375*cosh(pz) elseif @v==11 pz=pz-0.5*cos(pz) else pz=pz-2*sin(pz) endif pz=@zp1*pz+@zp2 if i<@mtp pz=pz^2+@pf(fpixel) i=i+1 else pz=exp(@mp1*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) i=0 endif return pz endfunc default: title="Memzon Mandelbrot/Munster" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param mtp caption="Memzon Parameter" default=5 min=1 endparam func pf caption="Pixel Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=0.0 endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param v caption="Z Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltMandelbrotNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if i<1 if @st==0 pz=pz^2+@pp*@sf(fpixel) else pz=pz^2+@pf(fpixel) endif i=i+1 else if @nv==0 f=pz^3-@np2 f1=3*pz^2 elseif @nv==1 f=pz^3+((pz-1)/(pz+1))^3-@np2 f1=3*pz^2+2*3*((pz-1)/(pz+1))^3/(pz^2-1) elseif @nv==2 f=((pz^2-1)/(pz+1))^3-@np2 f1=3*(pz-1)^2 elseif @nv==3 f=((pz^3-1)/(pz^2+1))^3+@np2 f1=3*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^2 elseif @nv==4 f=((pz^2+1)/pz)^3-@np2 f1=3*(pz^2-1)*(pz+1/pz)^3/(pz^3+pz) elseif @nv==5 f=pz^3+((pz-1i)/(pz+1i))^3-@np2 f1=3*pz^2+6i*((pz-1i)/(pz+1i))^3/(pz^2+1) elseif @nv==6 f=((pz^2-1i)/(pz+1i))^3+@np2 f1=3*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^2 elseif @nv==7 f=((pz^2-1i)/pz)^3-@np2 f1=3*(1+1i/pz^2)*(pz-1i/pz)^2 elseif @nv==8 f=((pz^2+1i)/(pz+1))^3-@np2 f1=3*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^2/(pz+1)^2 elseif @nv==9 f=(pz+1i)^3-@np2 f1=3*(pz+1i)^2 elseif @nv==10 f=(1/pz^2+1/pz)^3-@np2 f1=3*(pz+2)*((pz+1)/pz^2)^2/pz^2 elseif @nv==11 f=pz^3*(pz-2)/(1-2*pz)-@np2 f1=pz^2*(3*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @nv==12 f=((pz^2-2)/(1-2*pz))^3-@np2 f1=6*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^3/((2*pz-1)*(pz^2-2)) elseif @nv==13 f=recip(pz)^4-@np2 f1=-4*recip(pz)^3 elseif @nv==14 f=(pz+sqr(pz)+1/pz)^4-@np2 f1=4*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^3 elseif @nv==15 f=(sqr(pz)-1/pz)^4-@np2 f1=4*(1/pz^2+2*pz)*((pz^3-1)/pz)^3 elseif @nv==16 f=(pz-1i-1i/pz)^4-@np2 f1=4*(1+1i/pz^2)*(pz-1i/pz-1i)^3 elseif @nv==17 f=(pz+1i-1i/pz^2)^4-@np2 f1=4*(1+2i/pz^3)*(pz-1i/pz^2+1i)^3 elseif @nv==18 f=(pz+pz^2)^4+((pz-1)/(pz+1))^4-@np2 f1=4*(2*pz+1)*(pz^2+pz)^3+4*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^3 elseif @nv==19 f=pz^4+2*pz^3-3*pz^2+4*pz+@np2 f1=4*pz^3+6*pz^2-6*pz+4 elseif @nv==20 f=pz^5+1/pz+@np2 f1=(5*pz^6-1)/pz^2 elseif @nv==21 f=(pz^2-1)^3/pz^2-@np2 f1=4*pz^3+2/pz^3-6*pz elseif @nv==22 f=pz^4+recip(pz)^4+pz^7/(pz-1)^3+@np2 f1=4*pz^3-4*recip(pz)^3+pz^6*(4*pz-7)/(pz-1)^4 elseif @nv==23 f=((pz^2-1)/(pz+1))^3+pz^4+recip(pz)^4-@np2 f1=3*(pz-1)^2-4*recip(pz)^3 elseif @nv==24 f=(pz^2*(pz-2)/(1-2*pz))^2+@np2 f1=2*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^2/((pz-2)*pz*(2*pz-1)) elseif @nv==25 f=pz^3*(pz-1)+(pz^3-1)/pz-@np2 f1=4*pz^3-3*pz^2+1/pz^2+2*pz elseif @nv==26 f=pz^2*(pz+1)+(pz^4-1)/pz-@np2 f1=6*pz^2+1/pz^2+2*pz elseif @nv==27 f=pz^2*(pz+1)-(pz^4-1)/pz+pz^4-@np2 f1=4*pz^3-1/pz^2+2*pz elseif @nv==28 f=pz^3/3+pz^4/4+pz^5/5+recip(pz)^4-@np2 f1=pz^4+pz^3+pz^2-4*recip(pz)^3 elseif @nv==29 f=1/pz+1/pz^2+1/pz^3-@np2 f1=(pz^2+2*pz+3)/pz^4 elseif @nv==30 f=1/pz+1/pz^2+1/pz^3+pz^5-@np2 f1=(pz^2+2*pz+3)/pz^4+5*pz^4 elseif @nv==31 f=1/pz+1/pz^2+1/pz^3+1/pz^4+1/pz^5-@np2 f1=(pz^4+2*pz^3+3*pz^2+4*pz+5)/pz^6 elseif @nv==32 f=pz+1/pz+pz^2+1/pz^3+pz^4+1/pz^5-@np2 f1=-5/pz^6-3/pz^4+4*pz^3-1/pz^2+2*pz+1 elseif @nv==33 f=pz+1/pz^2+pz^3+1/pz^4+pz^5+1/pz^6-@np2 f1=-6/pz^7-4/pz^5+5*pz^4-2/pz^3+3*pz^2+1 elseif @nv==34 f=pz+1/pz+pz^2+1/pz^2+pz^3+1/pz^3-@np2 f1=(3*pz^6+2*pz^5+pz^4-pz^2-2*pz-3)/pz^4 else f=(pz+1/pz^3)^2-@np2 f1=2*(pz^4-3)*(pz^4+1)/pz^7 endif pz=pz-@np1*f/f1 i=0 endif return pz endfunc private: complex fpixel int i default: title="Alt Mandelbrot/Newton" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param np1 caption="Newton Parameter 1" default=(1,0) endparam param np2 caption="Newton Parameter 2" default=(1,0) endparam param nv caption="Newton Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_MemzonIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 float a=real(pz)*imag(@d1)+real(@d1)*imag(pz) if i<@mp if a<@c1 pz=pz*fn1(@a1)+@b1 endif if @c2<=a pz=pz*fn2(@a1)+@b2 endif i=i+1 else if a<@c3 pz=pz*fn3(@a2)+@b3 endif if @c4<=a pz=pz*fn4(@a2)+@b4 endif i=0 endif return pz endfunc default: title="Memzon IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param a1 caption="IFB Parameter a1" default=(0.95,-0.65) endparam param a2 caption="IFB Parameter a2" default=(1,-0.4) endparam param b1 caption="IFB Parameter b1" default=(1,0) endparam param b2 caption="IFB Parameter b2" default=(1,0) endparam param b3 caption="IFB Parameter b3" default=(1,0) endparam param b4 caption="IFB Parameter b4" default=(1,0) endparam param c1 caption="IFB Parameter c1" default=0.0 endparam param c2 caption="IFB Parameter c2" default=0.0 endparam param c3 caption="IFB Parameter c3" default=0.0 endparam param c4 caption="IFB Parameter c4" default=0.0 endparam param d1 caption="IFB Parameter d1" default=(0,1) endparam func fn1 caption="IFB Function 1" default=sqr() endfunc func fn2 caption="IFB Function 2" default=flip() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc func fn4 caption="IFB Function 4" default=conj() endfunc param mp caption="Memzon Parameter" default=1 min=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltJuliaIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=pz^@pow+@c i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*sqr(@p1)+@p2 endif if @p5<=a pz=pz*log(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*sqr(@p1)+@p2 endif if @p5<=a pz=pz*log(@p1)+@p3 endif i=i+1 else pz=pz^@pow+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Julia/IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Julia First""IFB First" endparam param p1 caption="IFB parameter a" default=(0.55,0.52) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam param c caption="Julia Seed" default=(-1.2,0.7) endparam param pow caption="Julia Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0.11) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltMunsterIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=exp(@mp2*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=exp(@mp2*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=0 endif endif return pz endfunc private: int i default: title="Alt Munster/IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Munster First""IFB First" endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param mp1 caption="Munster parameter 1" default=(2,0) endparam param mp2 caption="Munster parameter 2" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltJuliaIFB2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i<1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c i=i+1 else float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif else if i<1 float a=real(pz)*imag(@p6)+real(@p6)*imag(pz) if a<@p4 pz=pz*fn1(@p1)+@p2 endif if @p5<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Julia/IFB 2" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="Julia First""IFB First" endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam param p4 caption="IFB parameter c1" default=0.0 endparam param p5 caption="IFB parameter c2" default=0.0 endparam param p6 caption="IFB parameter d" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param c caption="Julia Seed" default=(0,0) endparam param pow caption="Julia Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltModJM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i<1 pz=(pz^(@jpow+1)-1)/(pz^(@jpow-1)+1)+@c i=i+1 else if @st==0 pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@pp*@sf(pixel) else pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@sf(pixel) endif i=0 endif else if i<1 if @st==0 pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@pp*@sf(pixel) else pz=(pz^(@mpow+1)-1)/(pz^(@mpow-1)+1)+@sf(pixel) endif i=i+1 else pz=(pz^(@jpow+1)-1)/(pz^(@jpow-1)+1)+@c i=0 endif endif return pz endfunc private: int i default: title="Alt Mod Julia/Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam param v caption="Alt Variant" enum="Julia First""Mandelbrot First" endparam param c caption="Julia Seed" default=(1,0) endparam param jpow caption="Julia Exponent" default=(2,0) endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param mpow caption="Mandelbrot Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltMandelbrotBurningShip(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @st==0 if @v==0 if i<1 pz=pz^@pow+@pp*@pf(fpixel) i=i+1 else pz=abs(pz)^@pow+@pp*@pf(fpixel) i=0 endif else if i<1 pz=abs(pz)^@pow+@pp*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp*@pf(fpixel) i=0 endif endif else if @v==0 if i<1 pz=pz^@pow+@pf(fpixel) i=i+1 else pz=abs(pz)^@pow+@pf(fpixel) i=0 endif else if i<1 pz=abs(pz)^@pow+@pf(fpixel) i=i+1 else pz=pz^@pow+@pf(fpixel) i=0 endif endif endif return pz endfunc private: complex fpixel int i default: title="Alt Mandelbrot/Burning Ship" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(1,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() endfunc param v caption="Alt Variant" enum="Mandelbrot First""Burning Ship First" endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_3AltMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==0 if @v==0 if i==0 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@sf(fpixel) i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@sf(fpixel) i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@sf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@sf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@sf(fpixel) i=0 endif endif else if @v==0 if i==0 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@pf(fpixel) i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=i+1 else pz=pz^@pow+@pp1*@pf(fpixel) i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@pp3*@pf(fpixel) i=i+1 elseif i==1 pz=pz^@pow+@pp1*@pf(fpixel) i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@pp2*@pf(fpixel) i=0 endif endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i==0 pz=pz^@pow+@c1 i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=0 endif elseif @v==1 if i==0 pz=pz^@pow+@c1 i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=0 endif elseif @v==2 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 elseif i==1 pz=pz^@pow+@c1 i=i+1 else pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=0 endif elseif @v==3 if i==0 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 elseif i==1 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 else pz=pz^@pow+@c1 i=0 endif elseif @v==4 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 elseif i==1 pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=i+1 else pz=pz^@pow+@c1 i=0 endif elseif @v==5 if i==0 pz=(pz^(@pow+2)-1)/(pz^@pow+1)+@c3 i=i+1 elseif i==1 pz=pz^@pow+@c1 i=i+1 else pz=(pz^(@pow+1)-1)/(pz^(@pow-1)+1)+@c2 i=0 endif endif return pz endfunc private: int i default: title="3Alt Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c1 caption="Julia Seed 1" default=(0.85,-0.4) endparam param c2 caption="Julia Seed 2" default=(1,0) endparam param c3 caption="Julia Seed 3" default=(1,0) endparam param pow caption="Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltMandelbrotJuliaIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @v==0 if i==0 pz=pz^@jpow+@c i=i+1 elseif i==1 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 else float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif elseif @v==1 if i==0 pz=pz^@jpow+@c i=i+1 elseif i==1 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=0 endif elseif @v==2 if i==0 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 elseif i==1 pz=pz^@jpow+@c i=i+1 else float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=0 endif elseif @v==3 if i==0 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 elseif i==1 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 else pz=pz^@jpow+@c i=0 endif elseif @v==4 if i==0 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 elseif i==1 if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=i+1 else pz=pz^@jpow+@c i=0 endif elseif @v==5 if i==0 float a=real(pz) if a<0 pz=pz*fn1(@p1)+@p2 endif if 0<=a pz=pz*fn2(@p1)+@p3 endif i=i+1 elseif i==1 pz=pz^@jpow+@c i=i+1 else if @st==0 pz=pz^@mpow+@sf(fpixel) else pz=pz^@mpow+@pf(fpixel) endif i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot/Julia/IFB" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c caption="Julia Seed" default=(-0.3,0) endparam param p1 caption="IFB parameter a" default=(1.2,0) endparam param p2 caption="IFB parameter b1" default=(1,0) endparam param p3 caption="IFB parameter b2" default=(1,0) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc param jpow caption="Julia Exponent" default=(2,0) endparam param mpow caption="Mandelbrot Exponent" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 float a=real(pz)*imag(@c)+real(@c)*imag(pz) if i==0 if a<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 elseif i==1 if a<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 else if a<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=0 endif return pz endfunc private: int i default: title="3Alt IFB" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param a1 caption="IFB parameter a1" default=(-0.75,-0.9) endparam param a2 caption="IFB parameter a2" default=(-0.95,-0.4) endparam param a3 caption="IFB parameter a3" default=(0.85,-0.5) endparam param b1 caption="IFB parameter b1" default=(1.2,0) endparam param b2 caption="IFB parameter b2" default=(1,0) endparam param b3 caption="IFB parameter b3" default=(1,0) endparam param b4 caption="IFB parameter b4" default=(1.2,0) endparam param b5 caption="IFB parameter b5" default=(1,0) endparam param b6 caption="IFB parameter b6" default=(1,0) endparam param c caption="IFB parameter c" default=(0,1) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc func fn3 caption="IFB Function 3" default=flip() endfunc func fn4 caption="IFB Function 4" default=conj() endfunc func fn5 caption="IFB Function 5" default=cotanh() endfunc func fn6 caption="IFB Function 6" default=flip() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltMagnetMandelbrotJulia(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) i=0 return pz endfunc private: complex fpixel int i complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 if i==0 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 elseif i==1 pz=pz^2+@sf(fpixel) i=i+1 else pz=pz^2+@c i=0 endif elseif @v==1 if i==0 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=pz^2+@sf(fpixel) i=0 endif elseif @v==2 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 else pz=pz^2+@sf(fpixel) i=0 endif elseif @v==3 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=pz^2+@sf(fpixel) i=i+1 else pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=0 endif elseif @v==4 if i==0 pz=pz^2+@sf(fpixel) i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=0 endif else if i==0 pz=pz^2+@sf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@p1-1)/(2*pz+@p1-2))^2 i=i+1 else pz=pz^2+@c i=0 endif endif return pz endfunc default: title="3Alt Magnet/Mandelbrot/Julia" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="Magnet Parameter" default=(1,0) endparam param c caption="Julia Seed" default=(-1.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v2==0 pz=pz elseif @v2==1 pz=sqr(pz) elseif @v2==2 pz=recip(pz) elseif @v2==3 pz=pz+sqr(pz) elseif @v2==4 pz=pz-sqr(pz) elseif @v2==5 pz=pz^3 elseif @v2==6 pz=pz+sqr(pz)/2 elseif @v2==7 pz=pz-sqr(pz)/2 elseif @v2==8 pz=pz+sqr(pz)/3 elseif @v2==9 pz=pz-sqr(pz)/3 elseif @v2==10 pz=pz+pz^3/2 elseif @v2==11 pz=pz-pz^3/2 elseif @v2==12 pz=pz+pz^3/3 elseif @v2==13 pz=pz-pz^3/3 endif if @v==0 if i==0 pz=pz-@np1*(pz-1) i=i+1 elseif i==1 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 else pz=pz-@np3*(pz^3-1)/(3*pz^2) i=0 endif elseif @v==1 if i==0 pz=pz-@np1*(pz-1) i=i+1 elseif i==1 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 else pz=pz-@np2*(pz^2-1)/(2*pz) i=0 endif elseif @v==2 if i==0 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 elseif i==1 pz=pz-@np1*(pz-1) i=i+1 else pz=pz-@np3*(pz^3-1)/(3*pz^2) i=0 endif elseif @v==3 if i==0 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 elseif i==1 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 else pz=pz-@np1*(pz-1) i=0 endif elseif @v==4 if i==0 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 elseif i==1 pz=pz-@np1*(pz-1) i=i+1 else pz=pz-@np2*(pz^2-1)/(2*pz) i=0 endif elseif @v==5 if i==0 pz=pz-@np3*(pz^3-1)/(3*pz^2) i=i+1 elseif i==1 pz=pz-@np2*(pz^2-1)/(2*pz) i=i+1 else pz=pz-@np1*(pz-1) i=0 endif endif return pz endfunc private: int i default: title="3Alt Newton" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param v caption="Alt Variant" enum="123""132""213""231""312""321" endparam param v2 caption="Modifier" enum="ident(z)""sqr(z)""recip(z)""z+sqr(z)""z-sqr(z)""cube(z)"\ "z+sqr(z)/2""z-sqr(z)/2""z+sqr(z)/3""z-sqr(z)/3""z+cube(z)/2"\ "z-cube(z)/2""z+cube(z)/3""z-cube(z)/3" endparam param np1 caption="Newton Parameter 1" default=(-0.5,0) endparam param np2 caption="Newton Parameter 2" default=(1.55,0) endparam param np3 caption="Newton Parameter 3" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000000001 exponential=true endparam } class OM_3AltMagnetJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) m_ZOld=pz if @f pz=flip(pz) endif pz=@zp1*pz+@zp2 if i==0 pz=((pz^2+@mp1-1)/(2*pz+@mp1-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2-1)/(2*pz+@mp2-2))^2 i=i+1 else pz=((pz^2+@mp3-1)/(2*pz+@mp3-2))^2 i=0 endif return pz endfunc default: title="3Alt Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Magnet Parameter 1" default=(2.35,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param f caption="flip(z)" default=false endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif i=0 return pz endfunc private: complex fpixel int i complex func Iterate(complex pz) ,m_ZOld=pz pz=@zp1*pz+@zp2 if @st==0 if i==0 pz=((pz^2+@mp1*@sf(fpixel)-1)/(2*pz+@mp1*@sf(fpixel)-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2*@sf(fpixel)-1)/(2*pz+@mp2*@sf(fpixel)-2))^2 i=i+1 else pz=((pz^2+@mp3*@sf(fpixel)-1)/(2*pz+@mp3*@sf(fpixel)-2))^2 i=0 endif else if i==0 pz=((pz^2+@mp1*@pf(fpixel)-1)/(2*pz+@mp1*@pf(fpixel)-2))^2 i=i+1 elseif i==1 pz=((pz^2+@mp2*@pf(fpixel)-1)/(2*pz+@mp2*@pf(fpixel)-2))^2 i=i+1 else pz=((pz^2+@mp3*@pf(fpixel)-1)/(2*pz+@mp3*@pf(fpixel)-2))^2 i=0 endif endif return pz endfunc default: title="3Alt Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam func sf caption="Start Function" default=ident() visible=@st==0 endfunc param sp caption="Start Parameter 1" default=(0,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() visible=@st==1 endfunc param mp1 caption="Magnet Parameter 1" default=(0.3,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Upper Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Lower Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_3AltMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @rec pz=recip(pz) endif if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=pz+0.35*conj(flip(pz)) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=pz^2*(pz-1.5)/(1-1.5*pz) elseif @m==5 pz=pz^2*(pz-1.5)/(1-1.5*pz) pz=flip(pz) elseif @m==6 pz=pz^2*(pz-1.5)/(1-1.5*pz) pz=flip(conj(pz)) elseif @m==7 pz=pz^2*(pz+1.5)/(1+1.5*pz) elseif @m==8 pz=pz^2*(pz+1.5)/(1+1.5*pz) pz=flip(pz) else pz=pz^2*(pz+1.5)/(1+1.5*pz) pz=flip(conj(pz)) endif pz=@zp1*pz+@zp2 if i==0 pz=exp(@mp4*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) i=i+1 else pz=exp(@mp6*1i)*pz^2*(pz-@mp3)/(1-@mp3*pz) i=0 endif return pz endfunc private: int i default: title="3Alt Munster" int param version caption="Version" default=100 visible=@version<100 endparam param rec caption="Recip(Z)" default=false endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10" endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param mp3 caption="Munster Parameter 3" default=(1.25,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MunsterX(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @rec pz=recip(pz) endif if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=pz+0.35*conj(flip(pz)) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=pz-0.2*sqr(recip(pz)) elseif @m==5 pz=recip(flip(pz)) elseif @m==6 pz=(pz-11)/(1-11*pz) elseif @m==7 pz=(pz-11)/(1-11*pz) pz=flip(pz) elseif @m==8 pz=(pz-11)/(1-11*pz) pz=flip(conj(pz)) elseif @m==9 pz=(pz+6)/(1+6*pz) elseif @m==10 pz=pz^2*(pz-5)/(1-5*pz) elseif @m==11 pz=pz^2*(pz-5)/(1-5*pz) pz=recip(flip(pz)) elseif @m==12 pz=pz^2*(pz-5)/(1-5*pz) pz=recip(pz) elseif @m==13 pz=pz^2*(pz-5)/(1-5*pz) pz=flip(conj(pz)) else pz=pz^2*(pz+3)/(1+3*pz) pz=flip(recip(pz)) endif pz=@zp1*pz+@zp2 if i<1 pz=exp(@mp4*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz) elseif i>0 && i<@mem pz=exp(@mp5*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz) else pz=exp(@mp6*1i)*pz^2*(pz-@mp3)/(1-@mp3*pz) endif i=i+1 return pz endfunc private: int i default: title="Memzon Munster" int param version caption="Version" default=100 visible=@version<100 endparam param rec caption="Recip(Z)" default=false endparam param mem caption="X Parameter" default=6 min=2 endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15" endparam func sf caption="Start Function" default=ident() endfunc param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(2,0) endparam param mp3 caption="Munster Parameter 3" default=(1.25,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MemzonWigwamBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @m==0 pz=pz elseif @m==1 pz=flip(pz) elseif @m==2 pz=conj(pz) elseif @m==3 pz=flip(conj(pz)) elseif @m==4 pz=conj(flip(pz)) elseif @m==5 pz=pz+flip(conj(pz)) else pz=pz-flip(conj(pz)) endif if i<@mtp if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif i=0 endif return pz endfunc default: title="Memzon Wigwam/Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param mtp caption="Memzon Parameter" default=2 min=1 endparam func sf caption="Start Function" default=ident() endfunc param m caption="Modifier" enum="1""2""3""4""5""6""7" endparam param wp caption="Wigwam Parameter" default=(0.25,1.05) endparam param bp1 caption="Barnsley Parameter 1" default=(0.9,0.25) endparam param bp2 caption="Barnsley Parameter 2" default=(1.6,-1.15) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonWigwam(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+0.1*flip(pz) elseif @v==2 pz=pz+0.1*exp(pz) elseif @v==3 pz=pz+0.1*acos(pz) elseif @v==4 pz=pz+0.1*cos(pz) elseif @v==5 pz=pz+0.1*trunc(pz) elseif @v==6 pz=pz-0.1*flip(pz) elseif @v==7 pz=pz-0.1*conj(pz) elseif @v==8 pz=pz-0.1*cabs(pz) elseif @v==9 pz=pz-0.1*abs(pz) elseif @v==10 pz=pz-0.1*sqr(pz) elseif @v==11 pz=pz-0.1*acosh(pz) elseif @v==12 pz=pz-0.1*cosh(pz) elseif @v==13 pz=pz-0.1*cos(pz) elseif @v==14 pz=pz+0.1*flip(abs(pz)) elseif @v==15 pz=pz+0.1*flip(floor(pz)) elseif @v==16 pz=pz-0.1*flip(conj(pz)) elseif @v==17 pz=pz-0.1*flip(acosh(pz)) elseif @v==18 pz=pz-0.1*flip(ceil(pz)) elseif @v==19 pz=pz-0.1*flip(floor(pz)) elseif @v==20 pz=pz+0.1*cabs(exp(pz)) elseif @v==21 pz=pz-0.1*cabs(round(pz)) elseif @v==22 pz=pz+0.1*abs(sqrt(pz)) elseif @v==23 pz=pz+0.1*exp(sqrt(pz)) elseif @v==24 pz=pz+0.1*exp(sqr(pz)) elseif @v==25 pz=pz+0.1*exp(atan(pz)) elseif @v==26 pz=pz+0.1*exp(cos(pz)) elseif @v==27 pz=pz-0.1*exp(exp(pz)) elseif @v==28 pz=pz-0.1*exp(cosh(pz)) elseif @v==29 pz=pz-0.1*exp(cos(pz)) elseif @v==30 pz=pz+0.1*exp(trunc(pz)) elseif @v==31 pz=pz+0.1*log(cos(pz)) elseif @v==32 pz=pz+0.1*sqrt(sqrt(pz)) elseif @v==33 pz=pz-0.1*sqrt(acosh(pz)) elseif @v==34 pz=pz+0.1*sqr(atanh(pz)) elseif @v==35 pz=pz+0.1*sqr(cos(pz)) elseif @v==36 pz=pz-0.1*sqr(cosh(pz)) elseif @v==37 pz=pz+0.1*cotanh(acos(pz)) elseif @v==38 pz=pz+0.1*cotanh(cosh(pz)) elseif @v==39 pz=pz-0.1*cotanh(log(pz)) elseif @v==40 pz=pz+0.1*atanh(acos(pz)) elseif @v==41 pz=pz+0.1*atanh(cos(pz)) elseif @v==42 pz=pz-0.1*atanh(acosh(pz)) elseif @v==43 pz=pz-0.1*atanh(cos(pz)) elseif @v==44 pz=pz+0.1*atan(cos(pz)) elseif @v==45 pz=pz+0.1*atan(log(pz)) elseif @v==46 pz=pz+0.1*acos(trunc(pz)) elseif @v==47 pz=pz+0.1*acos(recip(pz)) elseif @v==48 pz=pz+0.1*acos(exp(pz)) elseif @v==49 pz=pz+0.1*acos(sqrt(pz)) elseif @v==50 pz=pz+0.1*cosh(sqr(pz)) elseif @v==51 pz=pz-0.1*cosh(sqr(pz)) elseif @v==52 pz=pz-0.1*asin(acosh(pz)) else pz=pz-0.1*asin(cosh(pz)) endif if i<@mtp if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 else if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=0 endif return pz endfunc default: title="Memzon Wigwam" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mtp caption="Memzon Parameter" default=5 min=1 endparam param v caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54" endparam param wp1 caption="Wigwam Parameter 1" default=(1,0.4) endparam param wp2 caption="Wigwam Parameter 2" default=(-1,0.5) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_MemzonWigwam2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz elseif @v==1 pz=pz+0.1*sqr(pz) elseif @v==2 pz=pz+0.1*cabs(pz) elseif @v==3 pz=pz+0.1*abs(pz) elseif @v==4 pz=pz-0.1*cos(pz) elseif @v==5 pz=pz+0.1*cosh(pz) elseif @v==6 pz=pz-0.01*recip(pz) elseif @v==7 pz=pz-0.1*conj(flip(pz)) elseif @v==8 pz=pz-0.1*cabs(pz) elseif @v==9 pz=pz-0.1*abs(sqrt(pz)) elseif @v==10 pz=pz-0.1*abs(sin(pz)) elseif @v==11 pz=pz-0.1*exp(abs(pz)) elseif @v==12 pz=pz-0.01*exp(exp(pz)) elseif @v==13 pz=pz-0.1*exp(sqr(pz)) elseif @v==14 pz=pz+0.1*log(acosh(pz)) elseif @v==15 pz=pz-0.1*sqrt(sqrt(pz)) elseif @v==16 pz=pz-0.1*sqrt(sqr(pz)) elseif @v==17 pz=pz-0.1*sqrt(cotanh(pz)) elseif @v==18 pz=pz-0.1*atan(exp(pz)) elseif @v==19 pz=pz-0.1*acosh(cos(pz)) elseif @v==20 pz=pz-0.1*acosh(abs(pz)) elseif @v==21 pz=pz-0.1*recip(acosh(pz)) elseif @v==22 pz=pz+0.1*cabs(acosh(pz)) elseif @v==23 pz=pz+0.1*sqrt(cos(pz)) elseif @v==24 pz=pz+0.1*sqrt(tanh(pz)) elseif @v==25 pz=pz+0.1*atan(acos(pz)) elseif @v==26 pz=pz+0.1*sin(acos(pz)) elseif @v==27 pz=pz+0.1*recip(acos(pz)) elseif @v==28 pz=pz+0.1*floor(pz) elseif @v==29 pz=pz+0.1*floor(flip(pz)) elseif @v==30 pz=pz-0.1*floor(flip(pz)) elseif @v==31 pz=pz+0.1*sqrt(tanh(pz)) elseif @v==32 pz=pz-0.1*ceil(abs(pz)) elseif @v==33 pz=pz+0.1*sqrt(cos(pz)) elseif @v==34 pz=pz-0.1*ceil(cabs(pz)) elseif @v==35 pz=pz-0.1*sqrt(abs(pz)) elseif @v==36 pz=pz+0.1*trunc(exp(pz)) elseif @v==37 pz=pz+0.1*cotanh(recip(pz)) elseif @v==38 pz=pz+0.1*round(atanh(pz)) elseif @v==39 pz=pz-0.1*cotan(tanh(pz)) elseif @v==40 pz=pz-0.1*tanh(exp(pz)) elseif @v==41 pz=pz-0.1*cosh(cosh(pz)) elseif @v==42 pz=pz-0.1*cosh(atan(pz)) elseif @v==43 pz=pz-0.1*cosh(sqrt(pz)) elseif @v==44 pz=pz-0.1*cosh(cabs(pz)) elseif @v==45 pz=pz-0.1*cos(atanh(pz)) else pz=pz-0.1*cos(atan(pz)) endif if i==0 if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 elseif i>0 && i<@mtp if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=i+1 else i=0 endif return pz endfunc default: title="Memzon Wigwam 2" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param mtp caption="Memzon Parameter" default=5 min=2 endparam param v caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47" endparam param wp1 caption="Wigwam Parameter 1" default=(1.05,0.8) endparam param wp2 caption="Wigwam Parameter 2" default=(-1.05,0.2) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_IFB33(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=1/real(fn3(round(trunc(pz)))) if a<@p4 pz=pz*recip(@p1)+@p2 endif if @p5<=a pz=pz*ceil(@p25)+@p3 endif if a<@p8 pz=pz*tan(@p25)+@p9 endif if @p10<=a pz=pz*recip(@p1)+@p11 endif return pz endfunc default: title="IFB 33" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=-1.38 endparam param p1 caption="IFB Parameter a1" default=(-2,-1) endparam param p25 caption="IFB Parameter a2" default=(2.4,1.05) endparam param p2 caption="IFB Parameter b1" default=(0.26,2.26) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1.2,-0.7) endparam param p11 caption="IFB Parameter b4" default=(10.75,-2.36) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(0.82,-1.02) endparam param p7 caption="Z Parameter 2" default=(1.45,-1.7) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltWigwam(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @m==0 pz=pz elseif @m==1 pz=flip(pz)-0.5 elseif @m==2 pz=conj(pz) elseif @m==3 pz=pz+0.35*conj(flip(pz)) elseif @m==4 pz=pz-0.3*flip(trunc(pz)) elseif @m==5 pz=pz+0.35*sin(pz) elseif @m==6 pz=pz-0.1*acosh(pz) elseif @m==7 pz=pz+0.9*cosh(asin(pz)) elseif @m==8 pz=pz-2*sin(pz) elseif @m==9 pz=pz-2.05*sin(asin(pz)) elseif @m==10 pz=pz+0.35*cos(asin(pz)) elseif @m==11 pz=pz+0.9*atan(cos(pz)) else pz=pz-0.05*atan(cotanh(pz)) endif pz=@zp1*pz+@zp2 if i==0 if real(pz)<0.5 pz=@wp1*pz else pz=@wp1*(1-pz) endif i=i+1 elseif i==1 if real(pz)<0.5 pz=@wp2*pz else pz=@wp2*(1-pz) endif i=i+1 else if real(pz)<0.5 pz=@wp3*pz else pz=@wp3*(1-pz) endif i=0 endif return pz endfunc private: int i default: title="3Alt Wigwam" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param wp1 caption="Wigwam parameter 1" default=(1.35,-0.42) endparam param wp2 caption="Wigwam parameter 2" default=(0.93,0.03) endparam param wp3 caption="Wigwam parameter 3" default=(-1.02,0.31) endparam param m caption="Modifier" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltBivarJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pk=@sf(pz) pz=@sf(pz) i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i<1 a=pz pz=pz^2+@bp1*pk+@c1 pk=pk^2+@bp2*a+@c1 i=i+1 else b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2 i=0 endif else if i<1 b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2 i=i+1 else a=pz pz=pz^2+@bp1*pk+@c1 pk=pk^2+@bp2*a+@c1 i=0 endif endif return pz return pk endfunc default: title="Alt Bivar Julia" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Julia Seed 1" default=(-0.15,-0.1) endparam param c2 caption="Julia Seed 2" default=(0,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AltBivarMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pk=@sf(pz) pz=@sp else pz=@sp pk=@sp endif i=0 return pz return pk endfunc private: complex fpixel complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i<1 a=pz pz=pz^2+@bp1*pk+@c1*@pf(fpixel) pk=pk^2+@bp2*a+@c1*@pf(fpixel) i=i+1 else b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2*@pf(fpixel) i=0 endif else if i<1 b=pk pk=@bp3*@bf(pk/pz)+@bp4 pz=pz^2+b^2+@c2*@pf(fpixel) i=i+1 else a=pz pz=pz^2+@bp1*pk+@c1*@pf(fpixel) pk=pk^2+@bp2*a+@c1*@pf(fpixel) i=0 endif endif return pz return pk endfunc default: title="Alt Bivar Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param av caption="Alt Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.1,0) visible=@sv!=0 endparam param c1 caption="Pixel Parameter 1" default=(-0.35,0) endparam param c2 caption="Pixel Parameter 2" default=(-0.45,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam func sf caption="Start Function" default=ident() visible=@sv!=3 endfunc func pf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_AwunonIxatrisep4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz pz=fn1(pz) if @sv=="1" pz=pz elseif @sv=="2" if real(pz)imag(pz) pz=flip(pz) endif elseif @sv=="4" if real(pz)imag(pz) pz=flip(pz) endif pz=2*abs(pz) elseif @Va=="16" if real(pz)>imag(pz) pz=flip(pz) endif pz=-2*abs(pz) elseif @Va=="17" if real(pz)>imag(pz) pz=flip(pz) endif pz=1.75*tanh(pz) elseif @Va=="18" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif elseif @Va=="19" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif pz=flip(pz) elseif @Va=="20" if real(pz)<0 pz=-real(pz)+flip(imag(pz)) endif pz=2.3*pz elseif @Va=="21" pz=pz+0.1*cos(pz) elseif @Va=="22" pz=pz-0.0175*recip(pz) elseif @Va=="23" pz=pz+0.0175*recip(pz) endif pz=recip(pz) pz=@p2*fn4(log(abs((10*pz^9-495*pz^8+10560*pz^7-127050*pz^6+946638*pz^5\ -4510275*pz^4+13667720*pz^3-25228500*pz^2+25507152*pz\ -10628640)/10628640)))^2+@p3*@fn5(fpixel) endwhile pz=@adj*pz/100 return pz endfunc private: complex fpixel int i default: title="Awunon Ixatrisep 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param Va caption="Loop Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23" endparam param p1 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param p2 caption="Labs Parameter" default=(1,0) endparam param p3 caption="Pixel Parameter " default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function 1" default=ident() endfunc func fn3 caption="Z Function 2" default=ident() endfunc func fn4 caption="Labs Function" default=ident() endfunc func fn5 caption="Pixel Function" default=ident() endfunc param p6 caption="Möbius Parameter" default=(0,0) endparam param p8 caption="Add Sqr Parameter" default=(0,0) endparam param iter caption="Iterations" default=2 endparam param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IFB34(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 x=cos(@p26)*real(pz)-sin(@p26)*imag(pz) y=sin(@p26)*real(pz)+cos(@p26)*imag(pz) pz=x+flip(y) float a=real(fn3(flip(pz)))-real(fn3(cotan(pz))) if a<@p4 pz=pz*flip(@p1)+@p2 endif if @p5<=a pz=pz*atan(@p25)+@p3 endif if a<@p8 pz=pz*sinh(@p25)+@p9 endif if @p10<=a pz=pz*conj(@p1)+@p11 endif return pz endfunc default: title="IFB 34" int param version caption="Version" default=100 visible=@version<100 endparam param p26 caption="T Parameter" default=1.0 endparam param p1 caption="IFB Parameter a1" default=(-0.84569,-0.74706) endparam param p25 caption="IFB Parameter a2" default=(1,0) endparam param p2 caption="IFB Parameter b1" default=(3.47,2.31) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(1,0) endparam param p11 caption="IFB Parameter b4" default=(0.03,0) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_DKPT(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) return pz endfunc default: title="DKPT" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="DKPT Parameter 1" default=(1,0) endparam param p2 caption="DKPT Parameter 2" default=(1,0) endparam param p3 caption="DKPT Parameter 3" default=(1,0) endparam param p4 caption="DKPT Parameter 4" default=(9.5,0) endparam param p5 caption="DKPT Parameter 5" default=(-7.5,0) endparam param p6 caption="DKPT Parameter 6" default=(-2.55,0) endparam param p7 caption="DKPT Parameter 7" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AltDKPT(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if i==0 pz=pz-@p5*(pz^4+pz^3+pz^2+pz-@p1)/((pz-@p2)*(pz-@p3)*(pz-@p4)) i=i+1 else pz=pz+@p5*(pz^4+pz^3+pz^2+pz-@p1)/((pz-@p2)*(pz-@p3)*(pz-@p4)) i=0 endif return pz endfunc private: int i default: title="Alt DKPT" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="DKPT Parameter 1" default=(1.75,0) endparam param p2 caption="DKPT Parameter 2" default=(1.25,0) endparam param p3 caption="DKPT Parameter 3" default=(-2.55,0) endparam param p4 caption="DKPT Parameter 4" default=(0.45,0) endparam param p5 caption="DKPT Parameter 5" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AltDKPTNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @av==0 if i==0 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) i=i+1 else pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/(4*pz^3+3*@p1*pz^2+2*@p2*pz+@p3) i=0 endif else if i==0 pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/(4*pz^3+3*@p1*pz^2+2*@p2*pz+@p3) i=i+1 else pz=pz-(pz^4+@p1*pz^3+@p2*pz^2+@p3*pz-@p4)/((pz-@p5)*(pz-@p6)*(pz-@p7)) i=0 endif endif return pz endfunc private: int i default: title="Alt DKPT/Newton" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param p1 caption="Parameter 1" default=(4.15,0) endparam param p2 caption="Parameter 2" default=(1,0) endparam param p3 caption="Parameter 3" default=(1,0) endparam param p4 caption="Parameter 4" default=(9.5,0) endparam param p5 caption="Parameter 5" default=(-7.5,0) endparam param p6 caption="Parameter 6" default=(-2.55,0) endparam param p7 caption="Parameter 7" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_IFB36(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p6*pz+@p7 float a=real(@fn3(cotanh(pz))*exp(@p26))+imag(@fn3(flip(pz))*@p26) if a<@p4 pz=pz*cabs(@p1)+@p2 endif if @p5<=a pz=pz*atan(@p25)+@p3 endif if a<@p8 pz=pz*@p25+@p9 endif if @p10<=a pz=pz*sqr(@p1)+@p11 endif return pz endfunc default: title="IFB 36" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="IFB Parameter a1" default=(0.521,-1.01) endparam param p25 caption="IFB Parameter a2" default=(-0.576,0.854) endparam param p2 caption="IFB Parameter b1" default=(2.629,2.73) endparam param p3 caption="IFB Parameter b2" default=(-0.04,-0.5) endparam param p9 caption="IFB Parameter b3" default=(0.79,-0.105) endparam param p11 caption="IFB Parameter b4" default=(1.98,-0.79) endparam param p4 caption="IFB Parameter c1" default=0.0 endparam param p5 caption="IFB Parameter c2" default=0.0 endparam param p8 caption="IFB Parameter c3" default=0.0 endparam param p10 caption="IFB Parameter c4" default=0.0 endparam param p26 caption="IFB Parameter d" default=(2.156,9.669) endparam param p6 caption="Z Parameter 1" default=(0.685,0.736) endparam param p7 caption="Z Parameter 2" default=(-1.4,0.37) endparam func fn1 caption="Start Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltMandelbrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3+@p2*@pf(fpixel) i=i+1 else pz=pz^4+@p3*@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4+@p2*@pf(fpixel) i=i+1 else pz=pz^3+@p3*@pf(fpixel) i=0 endif elseif @av==2 if i==0 pz=pz^3+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^4+@p3*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=pz^3+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p3*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=pz^4+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^3+@p3*@pf(fpixel) i=0 endif elseif @av==5 if i==0 pz=pz^4+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p3*@pf(fpixel) i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*c i=i+1 elseif i==1 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 else pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*c i=i+1 elseif i==1 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 else pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=0 endif elseif @av==2 if i==0 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 elseif i==1 pz=pz^2+@p1*c i=i+1 else pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=0 endif elseif @av==3 if i==0 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 elseif i==1 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 else pz=pz^2+@p1*c i=0 endif elseif @av==4 if i==0 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p1*c i=i+1 else pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=0 endif else if i==0 pz=((pz^2+@p1*c)^2+@p2*c^2+pz)^2+(@p3*c^2+pz)^2+pz^2+@p3*c i=i+1 elseif i==1 pz=(pz^2+@p1*c)^2+@p2*c^2+pz i=i+1 else pz=pz^2+@p1*c i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 else pz=3*pz^3+@p3*@pf(fpixel)^3 i=0 endif elseif @av==1 if i==0 pz=pz+@p1*@pf(fpixel) i=i+1 elseif i==1 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 else pz=2*pz^2+@p2*@pf(fpixel)^2 i=0 endif elseif @av==2 if i==0 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 elseif i==1 pz=pz+@p1*@pf(fpixel) i=i+1 else pz=3*pz^3+@p3*@pf(fpixel)^3 i=0 endif elseif @av==3 if i==0 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 elseif i==1 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 else pz=pz+@p1*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 elseif i==1 pz=pz+@p1*@pf(fpixel) i=i+1 else pz=2*pz^2+@p2*@pf(fpixel)^2 i=0 endif else if i==0 pz=3*pz^3+@p3*@pf(fpixel)^3 i=i+1 elseif i==1 pz=2*pz^2+@p2*@pf(fpixel)^2 i=i+1 else pz=pz+@p1*@pf(fpixel) i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*exp(c) i=i+1 elseif i==1 pz=pz^2+@p2*tan(c) i=i+1 else pz=pz^2+@p3*sqr(c) i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*exp(c) i=i+1 elseif i==1 pz=pz^2+@p3*sqr(c) i=i+1 else pz=pz^2+@p2*tan(c) i=0 endif elseif @av==2 if i==0 pz=pz^2+@p2*tan(c) i=i+1 elseif i==1 pz=pz^2+@p1*exp(c) i=i+1 else pz=pz^2+@p3*sqr(c) i=0 endif elseif @av==3 if i==0 pz=pz^2+@p2*tan(c) i=i+1 elseif i==1 pz=pz^2+@p3*sqr(c) i=i+1 else pz=pz^2+@p1*exp(c) i=0 endif elseif @av==4 if i==0 pz=pz^2+@p3*sqr(c) i=i+1 elseif i==1 pz=pz^2+@p1*exp(c) i=i+1 else pz=pz^2+@p2*tan(c) i=0 endif else if i==0 pz=pz^2+@p3*sqr(c) i=i+1 elseif i==1 pz=pz^2+@p2*tan(c) i=i+1 else pz=pz^2+@p1*exp(c) i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltMandelbrot6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@p1*sqr(exp(c)) i=i+1 elseif i==1 pz=pz^2+@p2*sin(sin(c)) i=i+1 else pz=pz^2+@p3*c i=0 endif elseif @av==1 if i==0 pz=pz^2+@p1*sqr(exp(c)) i=i+1 elseif i==1 pz=pz^2+@p3*c i=i+1 else pz=pz^2+@p2*sin(sin(c)) i=0 endif elseif @av==2 if i==0 pz=pz^2+@p2*sin(sin(c)) i=i+1 elseif i==1 pz=pz^2+@p1*sqr(exp(c)) i=i+1 else pz=pz^2+@p3*c i=0 endif elseif @av==3 if i==0 pz=pz^2+@p2*sin(sin(c)) i=i+1 elseif i==1 pz=pz^2+@p3*c i=i+1 else pz=pz^2+@p1*sqr(exp(c)) i=0 endif elseif @av==4 if i==0 pz=pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p1*sqr(exp(c)) i=i+1 else pz=pz^2+@p2*sin(sin(c)) i=0 endif else if i==0 pz=pz^2+@p3*c i=i+1 elseif i==1 pz=pz^2+@p2*sin(sin(c)) i=i+1 else pz=pz^2+@p1*sqr(exp(c)) i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 6" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param p1 caption="C Parameter 1" default=(1,0) endparam param p2 caption="C Parameter 2" default=(1,0) endparam param p3 caption="C Parameter 3" default=(1,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func pf caption="C Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_3AltJuliaMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@pf(fpixel) i=i+1 elseif i==1 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 else pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 else pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=0 endif elseif @av==2 if i==0 pz=pz^2+@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 else pz=(pz^2+@pf(fpixel))^2+@c i=0 endif elseif @av==3 if i==0 pz=pz^2+@c i=i+1 elseif i==1 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 else pz=(pz^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=pz^2+@pf(fpixel) i=i+1 else pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==5 if i==0 pz=(pz^2+@c)^2+@pf(fpixel) pz=pz^2+@c i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=0 endif elseif @av==6 if i==0 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 else pz=pz^2+@pf(fpixel) i=0 endif elseif @av==7 if i==0 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 else pz=pz^2+@c i=0 endif elseif @av==8 if i==0 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@pf(fpixel) i=i+1 else pz=(pz^2+@pf(fpixel))^2+@c i=0 endif elseif @av==9 if i==0 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=pz^2+@c i=i+1 else pz=(pz^2+@c)^2+@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=((pz^2+@pf(fpixel))^2+@c)^2+@pf(fpixel) i=i+1 elseif i==1 pz=(pz^2+@pf(fpixel))^2+@c i=i+1 else pz=pz^2+@pf(fpixel) i=0 endif elseif @av==11 if i==0 pz=((pz^2+@c)^2+@pf(fpixel))^2+@c i=i+1 elseif i==1 pz=(pz^2+@c)^2+@pf(fpixel) i=i+1 else pz=pz^2+@c i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt Julia/Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c caption="Seed" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ModifiedNewton3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) else if @st==0 pz=@pf(pz) else pz=@sp endif endif i=0 return pz endfunc private: int i complex fpixel complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@zp1*pz+@zp2 if @alt if i==0 if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2+@pf(fpixel) endif i=i+1 else if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(pz-m_ZOld)+@p2*pz)/@p2+@pf(fpixel) endif i=0 endif else if @jm==0 pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 elseif @jm==1 pz=pz-@p4*(pz^3-@p3)/(3*pz^2)+@pf(fpixel) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2 else pz=pz-@p4*(pz^3-@p3)/(3*pz^2) pz=@p1*pz+((1-@p1)*(pz^3-@p3)/(m_ZOld-pz)+@p2*pz)/@p2+@pf(fpixel) endif endif return pz endfunc default: title="Modified Newton 3" int param version caption="Version" default=100 visible=@version<100 endparam param alt caption="Alt" default=false endparam param jm caption="J/M" enum="J""M1""M2" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 && @st==1 endparam func pf caption="Pixel Function" default=ident() endfunc param p1 caption="MN Parameter 1" default=(-0.25,0) endparam param p2 caption="MN Parameter 2" default=(2,0) endparam param p3 caption="MN Parameter 3" default=(1,0) endparam param p4 caption="MN Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_3AltMandelbrot7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz) c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 else pz=pz^3+(@c3*exp(c)-1)*pz i=0 endif elseif @av==1 if i==0 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 else pz=pz^3+(@c2*sqr(c)-1)*pz i=0 endif elseif @av==2 if i==0 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 else pz=pz^3+(@c3*exp(c)-1)*pz i=0 endif elseif @av==3 if i==0 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 else pz=pz^3+(@c1*cotanh(c)-1)*pz i=0 endif elseif @av==4 if i==0 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c1*cotanh(c)-1)*pz i=i+1 else pz=pz^3+(@c2*sqr(c)-1)*pz i=0 endif elseif @av==5 if i==0 pz=pz^3+(@c3*exp(c)-1)*pz i=i+1 elseif i==1 pz=pz^3+(@c2*sqr(c)-1)*pz i=i+1 else pz=pz^3+(@c1*cotanh(c)-1)*pz i=0 endif endif return pz endfunc private: complex c int i default: title="3Alt Mandelbrot 7" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param c1 caption="C Parameter 1" default=(1,0) endparam param c2 caption="C Parameter 2" default=(1,0) endparam param c3 caption="C Parameter 3" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ModifiedMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz) return pz endfunc private: complex fpixel complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz^2+@pf(fpixel)+@c1 pz=pz^2-@c2*pz return pz endfunc default: title="Modified Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param c1 caption="Seed 1" default=(0,0) endparam param c2 caption="Seed 2" default=(-2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_3AltWigwamGlynnBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 elseif i==1 pz=pz^1.5+@glp i=i+1 else if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=0 endif elseif @av==1 if i==0 if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 elseif i==1 if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=i+1 else pz=pz^1.5+@glp i=0 endif elseif @av==2 if i==0 pz=pz^1.5+@glp i=i+1 elseif i==1 if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 else if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=0 endif elseif @av==3 if i==0 pz=pz^1.5+@glp i=i+1 elseif i==1 if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=i+1 else if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=0 endif elseif @av==4 if i==0 if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=i+1 elseif i==1 if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=i+1 else pz=pz^1.5+@glp i=0 endif elseif @av==5 if i==0 if @bv==0 if imag(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif else if real(pz)>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif endif i=i+1 elseif i==1 pz=pz^1.5+@glp i=i+1 else if real(pz)<0.5 pz=@wp*pz else pz=@wp*(1-pz) endif i=0 endif endif return pz endfunc private: int i default: title="3Alt Wigwam/Glynn/Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="wgb""wbg""gwb""gbw""bwg""bgw" endparam param bv caption="Barnsley Variant" enum="1""2" endparam func sf caption="Start Function" default=ident() endfunc param wp caption="Wigwam Parameter" default=(0.9,0.05) endparam param glp caption="Glynn Parameter" default=(0,0) endparam param bp1 caption="Barnsley Parameter 1" default=(1.2,-0.25) endparam param bp2 caption="Barnsley Parameter 2" default=(-0.155,-0.145) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltGlynn(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 pz=pz^1.5+@c1 i=i+1 elseif i==1 pz=pz^1.5+@c2 i=i+1 else pz=pz^1.5+@c3 i=0 endif return pz endfunc private: int i default: title="3Alt Glynn" int param version caption="Version" default=100 visible=@version<100 endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Glynn Parameter 1" default=(-0.5,0) endparam param c2 caption="Glynn Parameter 2" default=(0.75,0) endparam param c3 caption="Glynn Parameter 3" default=(-0.125,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@pf(pz) else pz=@sp endif i=0 c=@pf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+c+@c1 i=i+1 elseif i==1 pz=pz^2+@c2 i=i+1 else pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=0 endif elseif @av==1 if i==0 pz=pz^2+c+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=i+1 else pz=pz^2+@c2 i=0 endif elseif @av==2 if i==0 pz=pz^2+@c2 i=i+1 elseif i==1 pz=pz^2+c+@c1 i=i+1 else pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=0 endif elseif @av==3 if i==0 pz=pz^2+@c2 i=i+1 elseif i==1 pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=i+1 else pz=pz^2+c+@c1 i=0 endif elseif @av==4 if i==0 pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=i+1 elseif i==1 pz=pz^2+c+@c1 i=i+1 else pz=pz^2+@c2 i=0 endif else if i==0 pz=pz^2*(pz-@c3*1i)/(pz+@c3*1i) i=i+1 elseif i==1 pz=pz^2+@c2 i=i+1 else pz=pz^2+c+@c1 i=0 endif endif return pz endfunc private: int i complex c default: title="3Alt X 1" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==1 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Seed 1" default=(0.45,-0.75) endparam param c2 caption="Seed 2" default=(0.65,0) endparam param c3 caption="Seed 3" default=(-0.7,0.1) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX2J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^3*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^4*(pz-1i)/(pz+1i)+@c3 i=0 endif elseif @av==1 if i==0 pz=pz^2*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^4*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^3*(pz-1i)/(pz+1i)+@c3 i=0 endif elseif @av==2 if i==0 pz=pz^3*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^4*(pz-1i)/(pz+1i)+@c3 i=0 endif elseif @av==3 if i==0 pz=pz^3*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^4*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^2*(pz-1i)/(pz+1i)+@c3 i=0 endif elseif @av==4 if i==0 pz=pz^4*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^3*(pz-1i)/(pz+1i)+@c3 i=0 endif else if i==0 pz=pz^4*(pz-1i)/(pz+1i)+@c1 i=i+1 elseif i==1 pz=pz^3*(pz-1i)/(pz+1i)+@c2 i=i+1 else pz=pz^2*(pz-1i)/(pz+1i)+@c3 i=0 endif endif return pz endfunc private: int i default: title="3Alt X 2 J" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Seed 1" default=(-0.7,0.15) endparam param c2 caption="Seed 2" default=(-0.33,0.05) endparam param c3 caption="Seed 3" default=(-0.6,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX2M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^4*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^3*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif elseif @av==2 if i==0 pz=pz^3*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^4*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=pz^3*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^2*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=pz^4*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^3*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif else if i==0 pz=pz^4*(pz-1i)/(pz+1i)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3*(pz-1i)/(pz+1i)+@c2*@pf(fpixel) i=i+1 else pz=pz^2*(pz-1i)/(pz+1i)+@c3*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="3Alt X 2 M" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(0.5,0) endparam param c2 caption="Pixel Parameter 2" default=(1,0) endparam param c3 caption="Pixel Parameter 3" default=(1.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX3M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^4*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^3*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif elseif @av==2 if i==0 pz=pz^3*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^4*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=pz^3*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=pz^4*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^3*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif else if i==0 pz=pz^4*(pz-1)/(pz+1)+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^3*(pz-1)/(pz+1)+@c2*@pf(fpixel) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="3Alt X 3 M" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(0.5,0) endparam param c2 caption="Pixel Parameter 2" default=(1,0) endparam param c3 caption="Pixel Parameter 3" default=(1.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX3J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^3*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^4*(pz-1)/(pz+1)+@c3 i=0 endif elseif @av==1 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^4*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^3*(pz-1)/(pz+1)+@c3 i=0 endif elseif @av==2 if i==0 pz=pz^3*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^4*(pz-1)/(pz+1)+@c3 i=0 endif elseif @av==3 if i==0 pz=pz^3*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^4*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3 i=0 endif elseif @av==4 if i==0 pz=pz^4*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^3*(pz-1)/(pz+1)+@c3 i=0 endif else if i==0 pz=pz^4*(pz-1)/(pz+1)+@c1 i=i+1 elseif i==1 pz=pz^3*(pz-1)/(pz+1)+@c2 i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3 i=0 endif endif return pz endfunc private: int i default: title="3Alt X 3 J" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Seed 1" default=(1.5,0) endparam param c2 caption="Seed 2" default=(0.85,0) endparam param c3 caption="Seed 3" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX4J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=i+1 else pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3 i=0 endif elseif @av==1 if i==0 pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=i+1 elseif i==1 pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3+1.8 i=i+1 else pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=0 endif elseif @av==2 if i==0 pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=i+1 elseif i==1 pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=i+1 else pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3+1.8 i=0 endif elseif @av==3 if i==0 pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=i+1 elseif i==1 pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3 i=i+1 else pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=0 endif elseif @av==4 if i==0 pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3 i=i+1 elseif i==1 pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=i+1 else pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=0 endif else if i==0 pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3+1.8 i=i+1 elseif i==1 pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2 i=i+1 else pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1 i=0 endif endif return pz endfunc private: int i default: title="3Alt X 4 J" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam func sf caption="Start Function" default=ident() endfunc param c1 caption="Seed 1" default=(1.5,0) endparam param c2 caption="Seed 2" default=(0.85,0) endparam param c3 caption="Seed 3" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX4M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 pz=pz^2*(pz-exp(pz))/(pz+exp(pz))+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2*(pz-tanh(pz))/(pz+tanh(pz))+@c2*@pf(fpixel) i=i+1 else pz=pz^2*(pz-sqr(pz))/(pz+sqr(pz))+@c3*@pf(fpixel) i=0 endif return pz endfunc private: int i complex fpixel default: title="3Alt X 4 M" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(1.5,0) endparam param c2 caption="Pixel Parameter 2" default=(0.85,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 if @av==0 || @av==1 || @av==2 || @av==3 || @av==4 || @av==5 pz=@sp else pz=@sp+1 endif else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==1 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==2 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==3 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==4 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==5 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==6 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==7 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==8 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==9 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==11 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==12 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==13 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==14 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==15 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==16 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==17 if i==0 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==18 if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==19 if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==20 if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==21 if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==22 if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif else if i==0 pz=(pz^5+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^4+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="4Alt X 1" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(-0.95,0) endparam param c2 caption="Pixel Parameter 2" default=(0.85,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.15,0) endparam param c4 caption="Pixel Parameter 4" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 if @av==0 || @av==1 || @av==2 || @av==3 || @av==4 || @av==5 pz=@sp else pz=@sp+1 endif else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==1 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==2 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==3 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif elseif @av==4 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==5 if i==0 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif elseif @av==6 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==7 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==8 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==9 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==11 if i==0 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif elseif @av==12 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==13 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif elseif @av==14 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=0 endif elseif @av==15 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif elseif @av==16 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif elseif @av==17 if i==0 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==1 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif elseif @av==18 if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==19 if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=pz^3+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif elseif @av==20 if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=0 endif elseif @av==21 if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif elseif @av==22 if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=pz^3+@c1*@pf(fpixel) i=i+1 else pz=(pz^4+@c2*@pf(fpixel))/pz i=0 endif else if i==0 pz=(pz^6+@c4*@pf(fpixel))/pz^3 i=i+1 elseif i==1 pz=(pz^5+@c3*@pf(fpixel))/pz^2 i=i+1 elseif i==2 pz=(pz^4+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^3+@c1*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="4Alt X 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(-0.95,0) endparam param c2 caption="Pixel Parameter 2" default=(0.85,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.15,0) endparam param c4 caption="Pixel Parameter 4" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 if @av==0 || @av==1 || @av==2 || @av==3 || @av==4 || @av==5 pz=@sp else pz=@sp+1 endif else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==1 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==2 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==3 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==4 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==5 if i==0 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==6 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==7 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==8 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==9 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==11 if i==0 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==12 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==13 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==14 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=0 endif elseif @av==15 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==16 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==17 if i==0 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==18 if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==19 if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif elseif @av==20 if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=0 endif elseif @av==21 if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 elseif i==2 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif elseif @av==22 if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=pz^2+@c1*@pf(fpixel) i=i+1 else pz=(pz^3+@c2*@pf(fpixel))/pz i=0 endif else if i==0 pz=(pz^5+@c4*@pf(fpixel))/(pz^3+@c4*@pf(fpixel)) i=i+1 elseif i==1 pz=pz^4/(pz^2+@c3*@pf(fpixel)) i=i+1 elseif i==2 pz=(pz^3+@c2*@pf(fpixel))/pz i=i+1 else pz=pz^2+@c1*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="4Alt X 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(-0.95,0) endparam param c2 caption="Pixel Parameter 2" default=(0.85,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.15,0) endparam param c4 caption="Pixel Parameter 4" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 if @av==0 || @av==1 || @av==2 || @av==3 || @av==4 || @av==5 pz=@sp else pz=@sp+1 endif else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==1 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==2 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==5 if i==0 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif elseif @av==6 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==7 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==8 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==9 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif elseif @av==10 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==11 if i==0 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif elseif @av==12 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==13 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif elseif @av==14 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=0 endif elseif @av==15 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif elseif @av==16 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif elseif @av==17 if i==0 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif elseif @av==18 if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==19 if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif elseif @av==20 if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=0 endif elseif @av==21 if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif elseif @av==22 if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=i+1 else pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=0 endif else if i==0 pz=((pz^2-@c4*@pf(fpixel))/(pz+@c4*@pf(fpixel)))^5/pz^3+@c4*@pf(fpixel) i=i+1 elseif i==1 pz=((pz^2-@c3*@pf(fpixel))/(pz+@c3*@pf(fpixel)))^4/pz^2+@c3*@pf(fpixel) i=i+1 elseif i==2 pz=((pz^2-@c2*@pf(fpixel))/(pz+@c2*@pf(fpixel)))^3/pz+@c2*@pf(fpixel) i=i+1 else pz=((pz^2-@c1*@pf(fpixel))/(pz+@c1*@pf(fpixel)))^2+@c1*@pf(fpixel) i=0 endif endif return pz endfunc private: int i complex fpixel default: title="4Alt X 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(1,0) endparam param c2 caption="Pixel Parameter 2" default=(1,0) endparam param c3 caption="Pixel Parameter 3" default=(1,0) endparam param c4 caption="Pixel Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_EoseneFaspic6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=sqr(fn1(pz)) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p5*pz+@p6 if @V2=="1" float k=real(fn2(pz)) elseif @V2=="2" float k=imag(fn2(pz)) elseif @V2=="3" float k=real(fn2(pz))+imag(fn2(pz)) elseif @V2=="4" float k=real(fn2(pz))-imag(fn2(pz)) elseif @V2=="5" float k=real(fn2(pz))*imag(fn2(pz)) elseif @V2=="6" float k=real(fn2(pz))^imag(fn2(pz)) elseif @V2=="7" float k=real(fn2(exp(pz))) elseif @V2=="8" float k=real(fn2(round(pz))) else float k=imag(fn2(acos(pz))) endif if k<0 pz=pz*@p1-@p4 else pz=pz*abs(@p1)+@p4 endif if @V=="1" pz=@p2*abs(pz)^@pow+fpixel+@p3 elseif @V=="2" pz=@p2*abs(flip(pz))^@pow+fpixel+@p3 elseif @V=="3" pz=@p2*abs(abs(pz)^@pow+fpixel-conj(fpixel))+@p3 elseif @V=="4" pz=@p2*abs(abs(pz)^@pow+fpixel-cabs(fpixel))+@p3 elseif @V=="5" pz=@p2*abs(flip(pz))^@pow+floor(fpixel)+@p3 elseif @V=="6" pz=@p2*abs(flip(pz))^@pow+round(fpixel)+@p3 elseif @V=="7" pz=@p2*abs(abs(pz)^@pow+fpixel-abs(fpixel))+@p3 elseif @V=="8" pz=@p2*abs(abs(pz)^@pow+fpixel-exp(fpixel))+@p3 elseif @V=="9" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-conj(fpixel))+@p3 elseif @V=="10" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="11" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-abs(fpixel))+@p3 elseif @V=="12" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-exp(fpixel))+@p3 elseif @V=="13" pz=abs(@p2*abs(pz)^@pow+flip(fpixel))+@p3 elseif @V=="14" pz=@p2*conj(abs(pz)^@pow+flip(fpixel)-abs(fpixel))+@p3 elseif @V=="15" pz=abs(@p2*abs(pz)^@pow+floor(fpixel))+@p3 elseif @V=="16" pz=abs(@p2*abs(pz)^@pow+round(fpixel))+@p3 elseif @V=="17" pz=abs(@p2*abs(conj(pz))^@pow+flip(fpixel))+@p3 elseif @V=="18" pz=@p2*flip(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="19" pz=@p2*flip(abs(pz))^@pow+2*fpixel+@p3 elseif @V=="20" pz=@p2*flip(abs(pz))^@pow+flip(fpixel)+fpixel+@p3 elseif @V=="21" pz=@p2*flip(abs(pz))^@pow+conj(fpixel)+fpixel+@p3 elseif @V=="22" pz=@p2*abs(pz)^@pow+cabs(fpixel)+fpixel+@p3 elseif @V=="23" pz=@p2*abs(pz)^@pow+abs(fpixel)+fpixel+@p3 elseif @V=="24" pz=@p2*abs(pz)^@pow+conj(fpixel)+fpixel+@p3 elseif @V=="25" pz=@p2*conj(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="26" pz=@p2*abs(pz)^@pow+fpixel-conj(fpixel)+@p3 elseif @V=="27" pz=@p2*abs(pz)^@pow+fpixel-cabs(fpixel)+@p3 elseif @V=="28" pz=@p2*abs(pz)^@pow+fpixel-abs(fpixel)+@p3 elseif @V=="29" pz=@p2*abs(pz)^@pow+fpixel-exp(fpixel)+@p3 elseif @V=="30" pz=@p2*abs(pz)^@pow+flip(fpixel)-conj(fpixel)+@p3 elseif @V=="31" pz=@p2*abs(pz)^@pow+flip(fpixel)-cabs(fpixel)+@p3 elseif @V=="32" pz=@p2*abs(pz)^@pow+flip(fpixel)-abs(fpixel)+@p3 elseif @V=="33" pz=@p2*abs(pz)^@pow+flip(fpixel)-exp(fpixel)+@p3 endif endwhile pz=@adj*pz/100 return pz endfunc private: complex fpixel int i default: title="Eosene Faspic 6" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="EF Variant 1" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33" endparam param V2 caption="EF Variant 2" enum="1""2""3""4""5""6""7""8""9" default=8 endparam param p1 caption="EF Parameter 1" default=(0.8,-1) endparam param p2 caption="EF Parameter 2" default=(1,0) endparam param p3 caption="EF Parameter 3" default=(0,0) endparam param p4 caption="EF Parameter 4" default=(1,0) endparam param p5 caption="Z Parameter 1" default=(1,0) endparam param p6 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Loop Function" default=ident() endfunc param pow caption="Exponent" default=(1,0) endparam param iter caption="Iterations" default=11 endparam param adj caption="Adjustment" default=101.21145 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_EoseneFaspic7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=sqr(fn1(pz)) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p5*pz+@p6+fn2(fpixel) float k=imag(pz) if k<0 pz=pz*@p1+@p4 else pz=pz*conj(@p1)+@p4 endif if k<0 pz=pz*@p1+@p7 else pz=pz*conj(@p1)+@p7 endif if @acc==true pz=pz+cabs(fpixel) endif if @V=="1" pz=@p2*abs(pz)^@pow+fpixel+@p3 elseif @V=="2" pz=@p2*abs(flip(pz))^@pow+fpixel+@p3 elseif @V=="3" pz=@p2*abs(abs(pz)^@pow+fpixel-conj(fpixel))+@p3 elseif @V=="4" pz=@p2*abs(abs(pz)^@pow+fpixel-cabs(fpixel))+@p3 elseif @V=="5" pz=@p2*flip(abs(pz^@pow)+fpixel)+@p3 elseif @V=="6" pz=@p2*abs(pz+cabs(fpixel))^@pow+fpixel+@p3 elseif @V=="7" pz=@p2*abs(abs(pz)^@pow+fpixel-abs(fpixel))+@p3 elseif @V=="8" pz=@p2*abs(abs(pz)^@pow+fpixel-exp(fpixel))+@p3 elseif @V=="9" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-conj(fpixel))+@p3 elseif @V=="10" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="11" pz=@p2*abs(abs(pz)^@pow+flip(fpixel)-abs(fpixel))+@p3 elseif @V=="12" pz=@p2*abs(pz+cabs(fpixel))^@pow+flip(fpixel)+@p3 elseif @V=="13" pz=abs(@p2*abs(pz)^@pow+flip(fpixel))+@p3 elseif @V=="14" pz=@p2*conj(abs(pz)^@pow+flip(fpixel)-abs(fpixel))+@p3 elseif @V=="15" pz=@p2*abs(pz)^@pow+flip(fpixel)-abs(fpixel)+fpixel+@p3 elseif @V=="16" pz=@p2*abs(pz)^@pow-cabs(fpixel)+flip(fpixel)-fpixel+@p3 elseif @V=="17" pz=abs(@p2*abs(conj(pz))^@pow+flip(fpixel))+@p3 elseif @V=="18" pz=@p2*flip(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="19" pz=@p2*flip(abs(pz))^@pow+2*fpixel+@p3 elseif @V=="20" pz=@p2*flip(abs(pz))^@pow+flip(fpixel)+fpixel+@p3 elseif @V=="21" pz=@p2*flip(abs(pz)^@pow+fpixel)+flip(fpixel)+@p3 elseif @V=="22" pz=@p2*abs(pz)^@pow-abs(fpixel)+flip(fpixel)-fpixel+@p3 elseif @V=="23" pz=@p2*abs(pz)^@pow+flip(fpixel)-abs(fpixel)+@p3 elseif @V=="24" pz=@p2*abs(pz)^@pow+conj(fpixel)+fpixel+@p3 elseif @V=="25" pz=@p2*conj(abs(pz)^@pow+flip(fpixel)-cabs(fpixel))+@p3 elseif @V=="26" pz=@p2*abs(pz)^@pow+fpixel-conj(fpixel)+@p3 elseif @V=="27" pz=@p2*abs(pz)^@pow+fpixel-cabs(fpixel)+@p3 elseif @V=="28" pz=@p2*abs(pz)^@pow+fpixel-abs(fpixel)+@p3 elseif @V=="29" pz=@p2*abs(pz)^@pow+fpixel-exp(fpixel)+@p3 elseif @V=="30" pz=@p2*abs(pz)^@pow+flip(fpixel)-conj(fpixel)+@p3 elseif @V=="31" pz=@p2*abs(pz)^@pow+flip(fpixel)-cabs(fpixel)+@p3 endif endwhile pz=@adj*pz/100 return pz endfunc private: complex fpixel int i default: title="Eosene Faspic 7" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="EF Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31" endparam param p5 caption="Z Parameter 1" default=(1,0) endparam param p6 caption="Z Parameter 2" default=(0,0) endparam param p1 caption="EF Parameter a" default=(0.8,-1) endparam param p4 caption="EF Parameter b1" default=1.0 endparam param p7 caption="EF Parameter b2" default=1.0 endparam param p2 caption="EF Parameter c1" default=(1,0) endparam param p3 caption="EF Parameter c2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Pixel Function" default=zero() endfunc param acc caption="Add Cabs(C)" default=false endparam param pow caption="Exponent" default=(1,0) endparam param iter caption="Iterations" default=5 endparam param adj caption="Adjustment" default=101.21145 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_LabsX14(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=fn1(pz) if @S=="1" pz=pz^2+@sp*(2*pz-1i)/(pz+2i)/(pz-1) elseif @S=="2" pz=pz+(pz-@sp*1i)/(pz+@sp*1i) elseif @S=="3" pz=(pz+@sp*1i)/(pz-@sp*1i) elseif @S=="4" pz=pz^2*(pz-@sp)/(1-@sp*pz) elseif @S=="5" pz=(cotanh(pz)-@sp*1i)/(pz+cotanh(@sp)) elseif @S=="6" pz=pz+((pz^2+@sp-1)/(2*pz+@sp-2))^2 elseif @S=="7" pz=pz^2*((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) elseif @S=="8" pz=(pz+@sp*1i)/(pz-@sp*1i) elseif @S=="9" pz=@sp*(pz+1i)*(pz-1)/(pz+1) elseif @S=="10" pz=@sp*(pz+1i)*(pz-1)/(pz-1i) elseif @S=="11" pz=pz+pz^2*cosh((pz-@sp)/(1-@sp*pz)) elseif @S=="12" pz=pz+@sp*pz^3 elseif @S=="13" pz=@sp*(pz-0.5)/(1-0.5*pz)/(pz-1i) elseif @S=="14" pz=@sp*(pz-0.5)/(1i-0.5*pz)/(pz-1) elseif @S=="15" pz=(sqr(pz)-@sp*1i)/(pz+sqr(@sp)) elseif @S=="16" pz=pz+pz^2*cos((pz-@sp)/(1-@sp*pz)) elseif @S=="17" pz=pz^2*sqr((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) elseif @S=="18" pz=pz^2*exp((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) endif return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p12*fn2(pz)+@p13 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p7*pz+1) pz=pz+@p8*sqr(pz) pz=pz+@p9/pz if @Va=="None" pz=pz elseif @Va=="1" pz=pz-1/sqr(pz) elseif @Va=="2" pz=pz+(pz+1i)/(pz-1i) elseif @Va=="3" if real(pz)imag(pz) pz=flip(pz) endif pz=0.5*pz elseif @Va=="6" pz=pz+(sqr(pz)+1)/(sqr(pz)-1) elseif @Va=="7" if |pz|<1 pz=pz/|pz| endif pz=0.75*pz elseif @Va=="8" pz=pz+(pz+1)/(pz-1) elseif @Va=="9" pz=pz+cotan(pz) elseif @Va=="10" if real(pz)>imag(pz) pz=flip(pz) endif pz=0.54*conj(pz) elseif @Va=="11" pz=pz+(pz-1)/(pz+1) elseif @Va=="12" if real(pz)imag(pz) pz=flip(pz) endif pz=(@p1-1.45)*abs(pz)+@p2 pz=((pz^2-0.8)/(2*pz-1.8))^2 pz=(pz^2/(2*pz-1))^2 f=pz+1/pz f1=1-1/pz^2 pz=pz-@p3*f/f1 if @JM=="J" pz=@p10*fn4(log(abs(pz)))+@p11 else pz=@p10*fn4(log(abs(pz)))+@pp*@fn5(fpixel) endif endwhile pz=pz*51/50 return pz endfunc private: complex fpixel int i default: title="Labs X 14" int param version caption="Version" default=100 visible=@version<100 endparam param JM caption="J/M" enum="J""M" endparam param S caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param sp caption="Start Parameter" default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36" endparam param iter caption="Iterations" default=2 endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(0,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam func fn2 caption="Z Function" default=ident() endfunc func fn5 caption="Pixel Function" default=ident() visible=@JM=="M" endfunc func fn4 caption="Labs Function" default=ident() endfunc param p10 caption="Labs Parameter" default=(1,0) endparam param p11 caption="Labs Parameter 2" visible=@JM=="J" default=(0,0) endparam param pp caption="Pixel Parameter" default=(1,0) visible=@jm=="M" endparam param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p7 caption="Möbius Parameter 2" default=(0,0) endparam param p12 caption="Z Parameter 1" default=(1,0) endparam param p13 caption="Z Parameter 2" default=(0,0) endparam param p8 caption="Add Sqr Parameter" default=(0,0) endparam param p9 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_LabsX25J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=fn1(pz) if @S=="1" pz=(@sp+1)*pz+@sp*(pz-1i)/(pz+1i) elseif @S=="2" pz=pz+(@sp+1)*(pz-1i)/(pz+1i) elseif @S=="3" pz=pz+(@sp+1)*(pz^2-1i)/(pz+1) elseif @S=="4" pz=pz^2*(pz-(@sp+2))/(1-(@sp+2)*pz) elseif @S=="5" pz=pz+(@sp+1)*pz^3/(pz^2-1i) elseif @S=="6" pz=pz+(@sp+1)*(pz-1)*(pz+1i) elseif @S=="7" pz=pz+(@sp+1)*(pz+1)*(pz-1i) elseif @S=="8" pz=pz-(@sp+1)*(3*pz^2)/(pz^3-1i) elseif @S=="9" pz=pz+(@sp+1)*(pz+1)*(pz-1i)/(pz-1) elseif @S=="10" pz=pz+(@sp+1)*(pz+1)/(pz-1i)*(pz-1) elseif @S=="11" pz=(@sp+1)*(pz+1)/(pz-1i)*(pz+1i) elseif @S=="12" pz=(@sp+1)*(pz+1)/pz*(pz+1i) elseif @S=="13" pz=pz+(@sp+1)*(pz^2-pz-1)/(pz+1) elseif @S=="14" pz=pz+(@sp+1)*(pz^2-1) elseif @S=="15" pz=pz+(@sp+1)*(pz^3-1i) elseif @S=="16" pz=pz+(@sp+1)/exp(pz) endif return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p12*fn2(flip(cotanh(pz)))+@p3 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p7*pz+1) pz=pz+@p8*sqr(pz) if @Va=="None" pz=pz elseif @Va=="1" if real(pz)1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="10" pz=((pz^2+1)/(2*pz))^2 elseif @Va=="11" if |pz|<1 pz=pz/|pz| endif pz=pz-0.5i*pz elseif @Va=="12" pz=pz-(sinh(pz)^2-1i)/(2*pz) elseif @Va=="13" if |pz|>1 pz=pz/|pz| endif pz=tan(pz) elseif @Va=="14" pz=pz-0.3*abs(pz) elseif @Va=="15" if |pz|<1 pz=pz/|pz| endif pz=pz-0.3i*recip(pz) elseif @Va=="16" pz=pz+0.3i*abs(pz) elseif @Va=="17" pz=(pz-1.5i)/(sqr(pz)+1i) elseif @Va=="18" pz=pz+1i*cotan(pz)^2 elseif @Va=="19" pz=pz-0.3*sqr(pz) elseif @Va=="20" if |pz|>1 pz=pz/|pz| endif pz=abs(pz) elseif @Va=="21" pz=pz+1i*recip(pz)^2 elseif @Va=="22" if |pz|<1 pz=pz/|pz| endif pz=pz+0.3i*sin(pz) elseif @Va=="23" if real(pz)1 pz=pz/|pz| endif pz=sinh(pz) elseif @Va=="28" pz=(pz+0.5i)/(sqr(pz)+1i) elseif @Va=="29" if real(pz)1 pz=pz/|pz| endif pz=-sqr(pz) elseif @Va=="39" if real(pz)1 pz=pz/|pz| endif pz=sin(pz) elseif @Va=="44" pz=pz-0.3i*abs(pz) elseif @Va=="45" if real(pz)1 pz=pz/|pz| endif pz=abs(pz) elseif @Va=="21" if real(pz)1 pz=pz/|pz| endif pz=sin(pz) elseif @Va=="25" pz=pz+0.85*recip(pz) elseif @Va=="26" if |pz|>1 pz=pz/|pz| endif pz=-sqr(pz) elseif @Va=="27" pz=flip((pz^2+1)/(2*pz))^2 elseif @Va=="28" if real(pz)1 pz=pz/|pz| endif elseif @Va=="3" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) elseif @Va=="4" if real(pz)imag(pz) pz=flip(pz) endif endif pz=@p1*(pz-real(pz)/cabs(real(pz)))^2 pz=@p2*fn3(log(abs(pz)))+@p3*fn4(fpixel) endwhile pz=pz*51/50 return pz endfunc private: complex fpixel int i default: title="Labs Temorof" int param version caption="Version" default=100 visible=@version<100 endparam param S caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param sp caption="Start Parameter" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc param Va caption="Modification" enum="None""1""2""3""4""5" endparam param iter caption="Iterations" default=3 endparam param p2 caption="Labs Parameter" default=(1,0) endparam param p1 caption="Temorof Parameter" default=1.0 endparam param p3 caption="Pixel Parameter" default=(1,0) endparam func fn3 caption="Labs Function" default=ident() endfunc func fn4 caption="Pixel Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p4 caption="Z Parameter 1" default=(1,0) endparam param p5 caption="Z Parameter 2" default=(0,0) endparam param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p7 caption="Möbius Parameter 2" default=(0,0) endparam param p8 caption="Add Sqr Parameter" default=(0,0) endparam param p9 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_4AltMunsterM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 pz=exp(@mp5*1i)*pz^2*(pz-@mp1)/(1-@mp1*pz)+@c1*c i=i+1 elseif i==1 pz=exp(@mp6*1i)*pz^2*(pz-@mp2)/(1-@mp2*pz)+@c2*c i=i+1 elseif i==2 pz=exp(@mp7*1i)*pz^2*(pz-@mp3)/(1-@mp3*pz)+@c3*c i=i+1 else pz=exp(@mp8*1i)*pz^2*(pz-@mp4)/(1-@mp4*pz)+@c4*c i=0 endif return pz endfunc private: int i complex c default: title="4Alt Munster M" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam param c1 caption="Pixel Parameter 1" default=(1,0) endparam param c2 caption="Pixel Parameter 2" default=(1,0) endparam param c3 caption="Pixel Parameter 3" default=(1,0) endparam param c4 caption="Pixel Parameter 4" default=(1,0) endparam param mp1 caption="Munster Parameter 1" default=(2,0) endparam param mp2 caption="Munster Parameter 2" default=(0.5,0) endparam param mp3 caption="Munster Parameter 3" default=(1.5,0) endparam param mp4 caption="Munster Parameter 4" default=(-0.5,0) endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param mp7 caption="Munster Parameter 7" default=0.0 endparam param mp8 caption="Munster Parameter 8" default=0.0 endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 pz=pz^@pow1+@c1*c/(pz^@pow2-@mp1) i=i+1 elseif i==1 pz=pz^@pow1+@c2*c/(pz^@pow2-@mp2) i=i+1 elseif i==2 pz=pz^@pow1+@c3*c/(pz^@pow2-@mp3) i=i+1 else pz=pz^@pow1+@c4*c/(pz^@pow2-@mp4) i=0 endif return pz endfunc private: int i complex c default: title="4Alt Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv==0 endparam param c1 caption="Pixel Parameter 1" default=(-0.125,0) endparam param c2 caption="Pixel Parameter 2" default=(0.5,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.25,0) endparam param c4 caption="Pixel Parameter 4" default=(-0.5,0) endparam param mp1 caption="Modification Parameter 1" default=(0,0) endparam param mp2 caption="Modification Parameter 2" default=(0,0) endparam param mp3 caption="Modification Parameter 3" default=(0,0) endparam param mp4 caption="Modification Parameter 4" default=(0,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX8(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 if @av==11 || @av==15 || @av==19 || @av==17 || @av==21 || @av==14 \ || @av==23 || @av==20 || @av==18 || @av==22 pz=@sp+1 elseif @av==8 pz=@sp-0.5 else pz=@sp endif else pz=@pf(pz) endif c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==1 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==2 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==3 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif elseif @av==4 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==5 if i==0 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif elseif @av==6 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==7 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==8 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==9 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif elseif @av==10 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==11 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif elseif @av==12 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==13 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif elseif @av==14 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=0 endif elseif @av==15 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif elseif @av==16 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif elseif @av==17 if i==0 pz=pz^2+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif elseif @av==18 if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==19 if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif elseif @av==20 if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2+@c3*c i=0 endif elseif @av==21 if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 elseif i==2 pz=pz^2+@c3*c i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif elseif @av==22 if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c2*c i=0 endif else if i==0 pz=pz^2*(pz-@c4*c^2)/(pz+@c4*c) i=i+1 elseif i==1 pz=pz^2+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c2*c i=i+1 else pz=pz^2*(@c1*c^2*pz-1)/(@c1*c*pz+1) i=0 endif endif return pz endfunc private: int i complex c default: title="4Alt X 8" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam param c1 caption="Pixel Parameter 1" default=(1,0) endparam param c2 caption="Pixel Parameter 2" default=(1,0) endparam param c3 caption="Pixel Parameter 3" default=(1,0) endparam param c4 caption="Pixel Parameter 4" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_4AltX9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==1 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==2 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==3 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2+@c2*c i=0 endif elseif @av==4 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==5 if i==0 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2+@c2*c i=0 endif elseif @av==6 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==7 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==8 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==9 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif elseif @av==10 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==11 if i==0 pz=pz^2+@c2*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif elseif @av==12 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==13 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2+@c2*c i=0 endif elseif @av==14 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=0 endif elseif @av==15 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif elseif @av==16 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2+@c2*c i=0 endif elseif @av==17 if i==0 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==1 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif elseif @av==18 if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==19 if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2+@c1*c/pz^2 i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2+@c2*c i=0 endif elseif @av==20 if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2*(pz-1)/(pz+1)+@c3*c i=0 endif elseif @av==21 if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2+@c2*c i=i+1 elseif i==2 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif elseif @av==22 if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2+@c1*c/pz^2 i=i+1 else pz=pz^2+@c2*c i=0 endif else if i==0 pz=pz^2*(pz-@c4*c)/(1-@c4*c*pz) i=i+1 elseif i==1 pz=pz^2*(pz-1)/(pz+1)+@c3*c i=i+1 elseif i==2 pz=pz^2+@c2*c i=i+1 else pz=pz^2+@c1*c/pz^2 i=0 endif endif return pz endfunc private: int i complex c default: title="4Alt X 9" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@sv==0 endparam param c1 caption="Pixel Parameter 1" default=(-0.25,0) endparam param c2 caption="Pixel Parameter 2" default=(1.75,0) endparam param c3 caption="Pixel Parameter 3" default=(2.5,0) endparam param c4 caption="Pixel Parameter 4" default=(-2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_LabsPuiseux(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz i=0 pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p5*fn2(pz)+@p7 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p10*pz+1) if @JM=="J" if @Va=="none" pz=pz elseif @Va=="1" pz=pz-0.4*cotanh(sqr(pz)) elseif @Va=="2" pz=pz-sinh(pz)/tan(pz) elseif @Va=="3" pz=pz-0.245*abs(pz)/cotan(pz) elseif @Va=="4" pz=pz-2.8/cotan(pz) elseif @Va=="5" pz=pz+0.35/pz elseif @Va=="6" pz=pz-2.7/sqr(cotanh(pz)) elseif @Va=="7" pz=pz-1/exp(tanh(pz)) elseif @Va=="8" if real(pz)>imag(pz) pz=flip(pz) endif elseif @Va=="9" if real(pz)=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif i=0 endif else if i==0 if a>=0 pz=(pz-@bp2)*@bp1 else pz=(pz+@bp2)*@bp1 endif i=i+1 else if a<0 pz=pz*@ifbp1+@ifbp2 endif if 0<=a pz=pz*fn4(@ifbp1)+@ifbp3 endif i=0 endif endif return pz endfunc private: int i default: title="Alt IFB/Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="IFB First""Barnsley First" endparam param ifbp1 caption="IFB Parameter a" default=(0.1,-1.25) endparam param ifbp2 caption="IFB Parameter b1" default=(-1.05,-1.75) endparam param ifbp3 caption="IFB Parameter b2" default=(-1.55,-0.9) endparam param bp1 caption="Barnsley Parameter 1" default=(0.05,-1.3) endparam param bp2 caption="Barnsley Parameter 2" default=(1.25,0.4) endparam param p4 caption="Conditional Parameter" default=(0,1) endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="IFB Function" default=conj() endfunc func fn5 caption="Conditional Function" default=ident() endfunc func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltX5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@sp else pz=@pf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 pz=pz^2*(pz+@c1*@pf(fpixel))+@c1 i=i+1 elseif i==1 pz=pz^2*(pz+@c2*@pf(fpixel))+@c2 i=i+1 else pz=pz^2*(pz+@c3*@pf(fpixel))+@c3 i=0 endif return pz endfunc private: complex fpixel int i default: title="3Alt X 5" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==0 endparam func pf caption="Pixel Function" default=ident() endfunc param c1 caption="Pixel Parameter 1" default=(-0.95,0) endparam param c2 caption="Pixel Parameter 2" default=(0.85,0) endparam param c3 caption="Pixel Parameter 3" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@pf(pz) else if @av==0 ||@av==1 pz=@sp+0.5 else pz=@sp endif endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @av==0 if i==0 pz=pz^2+@p2*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p1 i=i+1 else pz=pz^2+@p5*@pf(fpixel)+@p1 i=0 endif elseif @av==1 if i==0 pz=pz^2+@p2*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p5*@pf(fpixel)+@p1 i=i+1 else pz=pz^2+@p1 i=0 endif elseif @av==2 if i==0 pz=pz^2+@p1 i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p1+@p5*@pf(fpixel) i=0 endif elseif @av==3 if i==0 pz=pz^2+@p1 i=i+1 elseif i==1 pz=pz^2+@p1+@p5*@pf(fpixel) i=i+1 else pz=pz^2+@p2*@pf(fpixel) i=0 endif elseif @av==4 if i==0 pz=pz^2+@p1+@p5*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p2*@pf(fpixel) i=i+1 else pz=pz^2+@p1 i=0 endif elseif @av==5 if i==0 pz=pz^2+@p1+@p5*@pf(fpixel) i=i+1 elseif i==1 pz=pz^2+@p1 i=i+1 else pz=pz^2+@p2*@pf(fpixel) i=0 endif endif return pz endfunc private: complex fpixel int i default: title="3Alt X 6" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Pixel""Parameter" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==1 endparam func pf caption="Pixel Function" default=ident() endfunc param p1 caption="Seed" default=(-1.25,0) endparam param p2 caption="Pixel Parameter 1" default=(1,0) endparam param p5 caption="Pixel Parameter 2" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_LabsMunsterMagnet(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz pz=fn1(pz) if @S=="1" pz=pz^2+@sp*(2*pz-1i)/(pz+2i)/(pz-1) elseif @S=="2" pz=pz+(pz-@sp*1i)/(pz+@sp*1i) elseif @S=="3" pz=(pz+@sp*1i)/(pz-@sp*1i) elseif @S=="4" pz=pz^2*(pz-@sp)/(1-@sp*pz) elseif @S=="5" pz=(cotanh(pz)-@sp*1i)/(pz+cotanh(@sp)) elseif @S=="6" pz=pz+((pz^2+@sp-1)/(2*pz+@sp-2))^2 elseif @S=="7" pz=pz^2*((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) elseif @S=="8" pz=(pz+@sp*1i)/(pz-@sp*1i) elseif @S=="9" pz=@sp*(pz+1i)*(pz-1)/(pz+1) elseif @S=="10" pz=@sp*(pz+1i)*(pz-1)/(pz-1i) elseif @S=="11" pz=pz+pz^2*cosh((pz-@sp)/(1-@sp*pz)) elseif @S=="12" pz=pz+@sp*pz^3 elseif @S=="13" pz=@sp*(pz-0.5)/(1-0.5*pz)/(pz-1i) elseif @S=="14" pz=@sp*(pz-0.5)/(1i-0.5*pz)/(pz-1) elseif @S=="15" pz=(sqr(pz)-@sp*1i)/(pz+sqr(@sp)) elseif @S=="16" pz=pz+pz^2*cos((pz-@sp)/(1-@sp*pz)) elseif @S=="17" pz=pz^2*sqr((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) elseif @S=="18" pz=pz^2*exp((pz-(@sp-0.5))/(1-(@sp-0.5)*pz)) endif i=0 return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p12*fn2(pz)+@p13 pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p7*pz+1) pz=pz+@p8*sqr(pz) pz=pz+@p9/pz if @Va=="None" pz=pz elseif @Va=="1" if |pz|<1 pz=pz/|pz| endif elseif @Va=="2" if |pz|>1 pz=pz/|pz| endif elseif @Va=="3" pz=(recip(pz)+1i)/(recip(pz)-1i) elseif @Va=="4" pz=(conj(pz)-1i)/(conj(pz)+1i) elseif @Va=="5" pz=(sqr(pz)+1i)/(sqr(pz)-1i) elseif @Va=="6" pz=(flip(pz)+1i)/(flip(pz)-1i) elseif @Va=="7" if |pz|>1 pz=pz/|pz| endif pz=-exp(pz) elseif @Va=="8" pz=(flip(pz)-1i)/(flip(pz)+1i) elseif @Va=="9" if |pz|<1 pz=pz/|pz| endif pz=-pz elseif @Va=="10" pz=(pz-2*1i)/(pz+2*1i) elseif @Va=="11" if real(pz)imag(pz) pz=flip(pz) endif pz=exp(pz) elseif @Va=="18" pz=(abs(pz)+1i)/(abs(pz)-1i) elseif @Va=="19" if |pz|>1 pz=pz/|pz| endif pz=-2*tan(pz) elseif @Va=="20" pz=(sinh(pz)+1i)/(sinh(pz)-1i) elseif @Va=="21" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) pz=-4*pz elseif @Va=="22" pz=(pz-1i)/(pz+1i) elseif @Va=="23" if |pz|>1 pz=pz/|pz| endif pz=-2.25*flip(pz) elseif @Va=="24" pz=(exp(pz)-1i)/(exp(pz)+1i) elseif @Va=="25" if |pz|>1 pz=pz/|pz| endif pz=-2.25*conj(pz) elseif @Va=="26" if |pz|<1 pz=pz/|pz| endif pz=-flip(pz) elseif @Va=="27" pz=(sinh(pz)-1i)/(sinh(pz)+1i) elseif @Va=="28" pz=(exp(pz)+1i)/(exp(pz)-1i) elseif @Va=="29" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) pz=4*pz elseif @Va=="30" pz=(abs(pz)+2*1i)/(abs(pz)-2*1i) elseif @Va=="31" if |pz|>1 pz=pz/|pz| endif pz=exp(pz) elseif @Va=="32" pz=(exp(pz)-2*1i)/(exp(pz)+2*1i) elseif @Va=="33" if real(pz)imag(pz) pz=flip(pz) endif pz=-exp(pz) elseif @Va=="38" pz=(cosh(pz)-1i)/(cosh(pz)+1i) elseif @Va=="39" if real(pz)1 pz=pz/|pz| endif pz=2.25*conj(pz) elseif @Va=="43" if |pz|>1 pz=pz/|pz| endif pz=3.5*pz elseif @Va=="44" pz=(cosh(pz)+1i)/(cosh(pz)-1i) elseif @Va=="45" if |pz|>1 pz=pz/|pz| endif pz=2.25*flip(pz) elseif @Va=="46" if |pz|<1 pz=pz/|pz| endif pz=flip(pz) elseif @Va=="47" pz=(flip(pz)-2*1i)/(flip(pz)+2*1i) elseif @Va=="48" x=real(pz) y=imag(pz) x=x/|pz| y=y/|pz| pz=x+flip(y) pz=-1.5*flip(pz) elseif @Va=="49" pz=(sqr(pz)+2*1i)/(sqr(pz)-2*1i) elseif @Va=="50" if real(pz)imag(pz) pz=flip(pz) endif endif pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz) pz=@p3*((pz^2+@p4-1)/(2*pz+@p4-2))^2 pz=@p10*fn4(log(abs(pz)))+@p11*@fn5(fpixel) endwhile pz=pz*51/50 return pz endfunc private: complex fpixel int i default: title="Labs Munster Magnet" int param version caption="Version" default=100 visible=@version<100 endparam param S caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param sp caption="Start Parameter" default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53" endparam param iter caption="Iterations" default=2 endparam param p1 caption="Munster Parameter 1" default=(1,0) endparam param p2 caption="Munster Parameter 2" default=(0.5,0) endparam param p3 caption="Magnet Parameter 1" default=(1,0) endparam param p4 caption="Magnet Parameter 2" default=(1,0) endparam func fn2 caption="Z Function" default=ident() endfunc func fn5 caption="Pixel Function" default=ident() endfunc func fn4 caption="Labs Function" default=ident() endfunc param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p7 caption="Möbius Parameter 2" default=(0,0) endparam param p12 caption="Z Parameter 1" default=(1,0) endparam param p13 caption="Z Parameter 2" default=(0,0) endparam param p10 caption="Labs Parameter" default=(1,0) endparam param p11 caption="Pixel Parameter" default=(1,0) endparam param p8 caption="Add Sqr Parameter" default=(0,0) endparam param p9 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltIFB2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 if @av==0 if i==0 if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 elseif i==1 if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 else if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=0 endif elseif @av==1 if i==0 if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 elseif i==1 if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=i+1 else if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=0 endif elseif @av==2 if i==0 if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 elseif i==1 if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 else if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=0 endif elseif @av==3 if i==0 if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 elseif i==1 if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=i+1 else if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=0 endif elseif @av==4 if i==0 if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=i+1 elseif i==1 if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=i+1 else if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=0 endif else if i==0 if real(pz)+imag(pz)<0 pz=pz*@fn5(@a3)+@b5 else pz=pz*@fn6(@a3)+@b6 endif i=i+1 elseif i==1 if imag(pz)<0 pz=pz*fn3(@a2)+@b3 else pz=pz*fn4(@a2)+@b4 endif i=i+1 else if real(pz)<0 pz=pz*fn1(@a1)+@b1 else pz=pz*fn2(@a1)+@b2 endif i=0 endif endif return pz endfunc private: int i default: title="3Alt IFB 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="123""132""213""231""312""321" endparam func sf caption="Start Function" default=ident() endfunc param a1 caption="IFB parameter a1" default=(-1.05,-0.1) endparam param a2 caption="IFB parameter a2" default=(-1.05,-0.35) endparam param a3 caption="IFB parameter a3" default=(1.05,-0.5) endparam param b1 caption="IFB parameter b1" default=(1.2,0) endparam param b2 caption="IFB parameter b2" default=(1.5,-0.3) endparam param b3 caption="IFB parameter b3" default=(1,0) endparam param b4 caption="IFB parameter b4" default=(1.2,0) endparam param b5 caption="IFB parameter b5" default=(1,0) endparam param b6 caption="IFB parameter b6" default=(1,0) endparam func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=conj() endfunc func fn3 caption="IFB Function 3" default=flip() endfunc func fn4 caption="IFB Function 4" default=conj() endfunc func fn5 caption="IFB Function 5" default=cotanh() endfunc func fn6 caption="IFB Function 6" default=flip() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltMunsterJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 if i==0 pz=exp(@mp3a*1i)*pz^2*(pz-@mp1a)*(pz-@mp2a)/((1-@mp1a*pz)*(1-@mp2a*pz)) i=i+1 else pz=exp(@mp3b*1i)*pz^2*(pz-@mp1b)*(pz-@mp2b)/((1-@mp1b*pz)*(1-@mp2b*pz)) i=0 endif return pz endfunc private: int i default: title="Alt Munster J" int param version caption="Version" default=100 visible=@version<100 endparam param mp1a caption="Munster Parameter 1a" default=(1.25,0) endparam param mp2a caption="Munster Parameter 2a" default=(1.5,0) endparam param mp3a caption="Munster Parameter 3a" default=0.0 endparam param mp1b caption="Munster Parameter 1b" default=(1.75,0) endparam param mp2b caption="Munster Parameter 2b" default=(0.5,0) endparam param mp3b caption="Munster Parameter 3b" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltMunsterM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @sv==0 pz=@pf(pz) else pz=@sp endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@p6*fn2(pz)+@p7 if i==0 pz=exp(@mp3a*1i)*pz^2*(pz-@mp1a)*(pz-@mp2a)/((1-@mp1a*pz)*(1-@mp2a*pz))+@pp1*@pf(fpixel) i=i+1 else pz=exp(@mp3b*1i)*pz^2*(pz-@mp1b)*(pz-@mp2b)/((1-@mp1b*pz)*(1-@mp2b*pz))+@pp2*@pf(fpixel) i=0 endif return pz endfunc private: int i complex fpixel default: title="Alt Munster M" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@sv==1 endparam param mp1a caption="Munster Parameter 1a" default=(1.25,0) endparam param mp2a caption="Munster Parameter 2a" default=(1.5,0) endparam param mp3a caption="Munster Parameter 3a" default=0.0 endparam param mp1b caption="Munster Parameter 1b" default=(1.75,0) endparam param mp2b caption="Munster Parameter 2b" default=(0.5,0) endparam param mp3b caption="Munster Parameter 3b" default=0.0 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltGnarlathotep(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc private: int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 float x=real(pz) float y=imag(pz) float k=x if @v==0 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==1 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==2 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==3 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==4 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==5 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==6 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==7 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==8 if i==0 x=x-@p3a*real(asinh(y+cos(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(asinh(k+cos(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==9 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==10 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==11 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==12 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+asinh(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+asinh(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==13 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==14 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==15 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==16 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==17 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+sin(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(cos(k+sin(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==18 if i==0 x=x-@p3a*real(sin(y+tanh(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+tanh(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+tanh(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+tanh(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==19 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==20 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==21 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+sinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+sinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+asinh(@p1b*(y+sinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+asinh(@p1b*(k+sinh(@p2b*k)))))/10 i=0 endif elseif @v==22 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==23 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==24 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==25 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==26 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(conj(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==27 if i==0 x=x-@p3a*real(tanh(y+asinh(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+asinh(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(asinh(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(asinh(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==28 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+exp(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+exp(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+asinh(@p1b*(y+exp(@p2b*y)))))/10 y=y+@p3b*real(sin(k+asinh(@p1b*(k+exp(@p2b*k)))))/10 i=0 endif elseif @v==29 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+flip(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+flip(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+asinh(@p1b*(y+flip(@p2b*y)))))/10 y=y+@p3b*real(sin(k+asinh(@p1b*(k+flip(@p2b*k)))))/10 i=0 endif elseif @v==30 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==31 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==32 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==33 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==34 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==35 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==36 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==37 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==38 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+sin(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+sin(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==39 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==40 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(cos(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==41 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==42 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==43 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==44 if i==0 x=x-@p3a*real(tanh(y+conj(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+conj(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==45 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==46 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==47 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==48 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==49 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==50 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==51 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==52 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==53 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==54 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==55 if i==0 x=x-@p3a*real(sin(y+abs(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+abs(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+abs(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+abs(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==56 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==57 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==58 if i==0 x=x-@p3a*real(sin(y+asinh(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+asinh(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==59 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==60 if i==0 x=x-@p3a*real(sin(y+conj(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+conj(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+conj(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+conj(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==61 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==62 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==63 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==64 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==65 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==66 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==67 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==68 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==69 if i==0 x=x-@p3a*real(cos(y+abs(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(cos(k+abs(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+abs(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(cos(k+abs(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==70 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==71 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==72 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==73 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==74 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==75 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==76 if i==0 x=x-@p3a*real(cos(y+conj(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(cos(k+conj(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+conj(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(cos(k+conj(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==77 if i==0 x=x-@p3a*real(tanh(y+sin(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+sin(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+sin(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+sin(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==78 if i==0 x=x-@p3a*real(tanh(y+sin(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+sin(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+sin(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+sin(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==79 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+sin(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(cos(k+sin(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==80 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(cos(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(cos(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==81 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==82 if i==0 x=x-@p3a*real(cos(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==83 if i==0 x=x-@p3a*real(cos(y+cos(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(cos(k+cos(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==84 if i==0 x=x-@p3a*real(cos(y+sin(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(cos(k+sin(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==85 if i==0 x=x-@p3a*real(sin(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(sin(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==86 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==87 if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+sin(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+sin(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==88 if i==0 x=x-@p3a*real(tanh(y+cos(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+cos(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==89 if i==0 x=x-@p3a*real(tanh(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==90 if i==0 x=x-@p3a*real(tanh(y+cos(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+cos(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==91 if i==0 x=x-@p3a*real(tanh(y+cos(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+cos(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==92 if i==0 x=x-@p3a*real(tanh(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(tanh(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(tanh(y+cos(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(tanh(k+cos(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif elseif @v==93 if i==0 x=x-@p3a*real(abs(y+cos(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(abs(k+cos(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(abs(y+cos(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(abs(k+cos(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==94 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif elseif @v==95 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+asinh(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+asinh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+asinh(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+asinh(@p2b*k)))))/10 i=0 endif elseif @v==96 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+cos(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+cos(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+cos(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+cos(@p2b*k)))))/10 i=0 endif elseif @v==97 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+tanh(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+tanh(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+tanh(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+tanh(@p2b*k)))))/10 i=0 endif elseif @v==98 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+abs(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+abs(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+abs(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+abs(@p2b*k)))))/10 i=0 endif elseif @v==99 if i==0 x=x-@p3a*real(conj(y+cos(@p1a*(y+conj(@p2a*y)))))/10 y=y+@p3a*real(conj(k+cos(@p1a*(k+conj(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(conj(y+cos(@p1b*(y+conj(@p2b*y)))))/10 y=y+@p3b*real(conj(k+cos(@p1b*(k+conj(@p2b*k)))))/10 i=0 endif else if i==0 x=x-@p3a*real(sin(y+sin(@p1a*(y+sin(@p2a*y)))))/10 y=y+@p3a*real(sin(k+sin(@p1a*(k+sin(@p2a*k)))))/10 i=i+1 else x=x-@p3b*real(sin(y+cos(@p1b*(y+sin(@p2b*y)))))/10 y=y+@p3b*real(sin(k+cos(@p1b*(k+sin(@p2b*k)))))/10 i=0 endif endif pz=x+flip(y) return pz endfunc default: title="Alt Gnarlathotep" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40"\ "41""42""43""44""45""46""47""48""49""50"\ "51""52""53""54""55""56""57""58""59""60"\ "61""62""63""64""65""66""67""68""69""70"\ "71""72""73""74""75""76""77""78""79""80"\ "81""82""83""84""85""86""87""88""89""90"\ "91""92""93""94""95""96""97""98""99""100"\ "101" endparam param p1a caption="Gnarlathotep Parameter 1a" default=2.9 endparam param p2a caption="Gnarlathotep Parameter 2a" default=2.7 endparam param p3a caption="Gnarlathotep Parameter 3a" default=1.0 endparam param p1b caption="Gnarlathotep Parameter 1b" default =3.7 endparam param p2b caption="Gnarlathotep Parameter 2b" default = 2.5 endparam param p3b caption="Gnarlathotep Parameter 3b" default=1.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1.0 exponential=true endparam } class OM_AltGnarlathotep2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) x=real(fn1(pz)) y=imag(fn1(pz)) a=0 i=0 i2=0 return x return y endfunc private: int i int i2 float x float y float a complex func Iterate(complex pz) while i<@iter i=i+1 float b=x^2+y^2 x=x/b*@p6+real(@p1/10) y=y/b*@p6+imag(@p1/10) a=x if @v=="1" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(tanh(y+cos(@p7*(y+sin(@p8*y)))))/10 y=y+@p9*real(tanh(a+cos(@p7*(a+sin(@p8*a)))))/10 i2=0 endif elseif @v=="2" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real((y+sin(@p7*(y+sin(@p8*y)))))/10 y=y+@p9*real((a+sin(@p7*(a+sin(@p8*a)))))/10 i2=0 endif elseif @v=="3" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+sinh(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+sinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+(@p8*a)))))/10 i2=0 endif elseif @v=="4" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+tanh(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+tanh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sqrt(y+sin(@p7*(y+sin(@p8*y)))))/10 y=y+@p9*real(sqrt(a+sin(@p7*(a+sin(@p8*a)))))/10 i2=0 endif elseif @v=="5" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+atan(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+atan(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+sin(@p7*(y+abs(@p8*y)))))/10 y=y+@p9*real(sin(a+sin(@p7*(a+abs(@p8*a)))))/10 i2=0 endif elseif @v=="6" if i2==0 x=x-@p4*real(tanh(y+sin(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(tanh(a+sin(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+sin(@p7*(y+exp(@p8*y)))))/10 y=y+@p9*real(sin(a+sin(@p7*(a+exp(@p8*a)))))/10 i2=0 endif elseif @v=="7" if i2==0 x=x-@p4*real(sin(y+cos(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+cos(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+cos(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+cos(@p8*a)))))/10 i2=0 endif elseif @v=="8" if i2==0 x=x-@p4*real(sin(y+asinh(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+asinh(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+sin(@p7*(y+tan(@p8*y)))))/10 y=y+@p9*real(sin(a+sin(@p7*(a+tan(@p8*a)))))/10 i2=0 endif elseif @v=="9" if i2==0 x=x-@p4*real(sin(y+cos(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+cos(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real((y+cos(@p7*(y+sin(@p8*y)))))/10 y=y+@p9*real((a+cos(@p7*(a+sin(@p8*a)))))/10 i2=0 endif elseif @v=="10" if i2==0 x=x-@p4*real(sin(y+ceil(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+ceil(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+(@p8*a)))))/10 i2=0 endif elseif @v=="11" if i2==0 x=x-@p4*real(sin(y+abs(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+abs(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+abs(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+abs(@p8*a)))))/10 i2=0 endif elseif @v=="12" if i2==0 x=x-@p4*real(sin(y+(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+exp(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+exp(@p8*a)))))/10 i2=0 endif elseif @v=="13" if i2==0 x=x-@p4*real(asin(y+sin(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(asin(a+sin(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+tanh(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+tanh(@p8*a)))))/10 i2=0 endif elseif @v=="14" if i2==0 x=x-@p4*real(asinh(y+sin(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(asinh(a+sin(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+tan(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+tan(@p8*a)))))/10 i2=0 endif elseif @v=="15" if i2==0 x=x-@p4*real(cos(y+cos(@p2*(y+cos(@p3*y)))))/10 y=y+@p4*real(cos(a+cos(@p2*(a+cos(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+asinh(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+asinh(@p8*a)))))/10 i2=0 endif elseif @v=="16" if i2==0 x=x-@p4*real(cos(y+abs(@p2*(y+cos(@p3*y)))))/10 y=y+@p4*real(cos(a+abs(@p2*(a+cos(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+(@p7*(y+abs(@p8*y)))))/10 y=y+@p9*real(sin(a+(@p7*(a+abs(@p8*a)))))/10 i2=0 endif elseif @v=="17" if i2==0 x=x-@p4*real(cos(y+(@p2*(y+cos(@p3*y)))))/10 y=y+@p4*real(cos(a+(@p2*(a+cos(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+tanh(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+tanh(@p8*a)))))/10 i2=0 endif elseif @v=="18" if i2==0 x=x-@p4*real(cos(y+abs(@p2*(y+abs(@p3*y)))))/10 y=y+@p4*real(cos(a+abs(@p2*(a+abs(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+asinh(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+asinh(@p8*a)))))/10 i2=0 endif elseif @v=="19" if i2==0 x=x-@p4*real(asinh(y+cos(@p2*(y+cos(@p3*y)))))/10 y=y+@p4*real(asinh(a+cos(@p2*(a+cos(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+abs(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+abs(@p8*a)))))/10 i2=0 endif elseif @v=="20" if i2==0 x=x-@p4*real(sin(y+sin(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+sin(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(round(y+sin(@p7*(y+sin(@p8*y)))))/10 y=y+@p9*real(round(a+sin(@p7*(a+sin(@p8*a)))))/10 i2=0 endif elseif @v=="21" if i2==0 x=x-@p4*real(sin(y+abs(@p2*(y+sin(@p3*y)))))/10 y=y+@p4*real(sin(a+abs(@p2*(a+sin(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+tanh(@p7*(y+cos(@p8*y)))))/10 y=y+@p9*real(sin(a+tanh(@p7*(a+cos(@p8*a)))))/10 i2=0 endif elseif @v=="22" if i2==0 x=x-@p4*real(sin(y+abs(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+abs(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+tanh(@p7*(y+sqr(@p8*y)))))/10 y=y+@p9*real(sin(a+tanh(@p7*(a+sqr(@p8*a)))))/10 i2=0 endif elseif @v=="23" if i2==0 x=x-@p4*real(sin(y+cos(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+cos(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+cos(@p7*(y+sqr(@p8*y)))))/10 y=y+@p9*real(sin(a+cos(@p7*(a+sqr(@p8*a)))))/10 i2=0 endif elseif @v=="24" if i2==0 x=x-@p4*real(sin(y+cos(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+cos(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+sin(@p7*(y+sqr(@p8*y)))))/10 y=y+@p9*real(sin(a+sin(@p7*(a+sqr(@p8*a)))))/10 i2=0 endif elseif @v=="25" if i2==0 x=x-@p4*real(sin(y+cos(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+cos(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+sin(@p7*(y+exp(@p8*y)))))/10 y=y+@p9*real(sin(a+sin(@p7*(a+exp(@p8*a)))))/10 i2=0 endif elseif @v=="26" if i2==0 x=x-@p4*real(sin(y+conj(@p2*(y+asinh(@p3*y)))))/10 y=y+@p4*real(sin(a+conj(@p2*(a+asinh(@p3*a)))))/10 i2=i2+1 else x=x-@p9*real(sin(y+abs(@p7*(y+tanh(@p8*y)))))/10 y=y+@p9*real(sin(a+abs(@p7*(a+tanh(@p8*a)))))/10 i2=0 endif endif if @V2=="ident" pz=(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="exp" pz=exp(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="sqr" pz=sqr(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="cotan" pz=cotan(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="tan" pz=tan(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="acos" pz=acos(fn2(x+flip(y)))^@pow+@p5 elseif @V2=="log cabs" pz=log(cabs(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="log abs" pz=log(abs(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="log cotan" pz=log(cotan(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="exp abs" pz=exp(abs(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="exp exp" pz=exp(exp(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="log log" pz=log(log(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="acos acos" pz=acos(acos(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="sqr sqr" pz=sqr(sqr(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="tan sin" pz=tan(sin(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="ceil round" pz=ceil(round(fn2(x+flip(y))))^@pow+@p5 elseif @V2=="log cos" pz=log(cos(fn2(x+flip(y))))^@pow+@p5 endif endwhile pz=51*pz/50 return pz endfunc default: title="Alt Gnarlathotep 2" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9"\ "10""11""12""13""14""15""16""17""18""19"\ "20""21""22""23""24""25""26""27""28""29"\ "30""31""32""33""34""35""36""37""38""39" default=0 endparam param p1 caption="K Parameter 1" default=(0,0) endparam param p6 caption="K Parameter 2" default=1.0 endparam param p2 caption="Gnarlathotep Parameter 1a" default=5.0 endparam param p3 caption="Gnarlathotep Parameter 2a" default=2.0 endparam param p4 caption="Gnarlathotep Parameter 3a" default=0.3 endparam param p7 caption="Gnarlathotep Parameter 1b" default=5.0 endparam param p8 caption="Gnarlathotep Parameter 2b" default=2.0 endparam param p9 caption="Gnarlathotep Parameter 3b" default=0.3 endparam func fn1 caption="Start Function" default=ident() endfunc param V2 caption="Post Function 1" enum="ident""exp""sqr""cotan""tan""acos"\ "log cabs""log abs""log cotan"\ "exp abs""exp exp""log log""acos acos"\ "sqr sqr""tan sin""ceil round""log cos" endparam func fn2 caption="Post Function 2" default=ident() endfunc param p5 caption="Post Function Parameter" default=(0,0) endparam param pow caption="Post Function Exponent" default=(1,0) endparam param iter caption="Iterations" default=50 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1.0 exponential=true endparam } class OM_Phorlis(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @st==0 pz=@sp else pz=@pf(pz) endif c=@pf(fpixel) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=@p1*pz*(1-(1+1/c)*pz/2+(1/c)*pz^2/3) return pz endfunc default: title="Phorlis" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(1,0) visible=@st==0 endparam param p1 caption="Phorlis Parameter" default=(-1.25,0) endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltNewtonMidpoint(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m_ZOld=pz pz=@p6*pz+@p7 if @version==100 if @av==0 if i==0 pz=pz-@np*(pz^@pow-@c)/(3*pz^(@pow-1)) i=i+1 else pz=pz-@mp*((pz^@pow-@c)/((3*pz^(@pow-1))*(pz-((pz^@pow-@c)/(3*pz^(@pow-1)))/2))) i=0 endif else if i==0 pz=pz-@mp*((pz^@pow-@c)/((3*pz^(@pow-1))*(pz-((pz^@pow-@c)/(3*pz^(@pow-1)))/2))) i=i+1 else pz=pz-@np*(pz^@pow-@c)/(3*pz^(@pow-1)) i=0 endif endif else if @av==0 if i==0 pz=pz-@np*(pz^@pow-@c)/(@pow*pz^(@pow-1)) i=i+1 else pz=pz-@mp*((pz^@pow-@c)/((@pow*pz^(@pow-1))*(pz-((pz^@pow-@c)/(@pow*pz^(@pow-1)))/2))) i=0 endif else if i==0 pz=pz-@mp*((pz^@pow-@c)/((@pow*pz^(@pow-1))*(pz-((pz^@pow-@c)/(@pow*pz^(@pow-1)))/2))) i=i+1 else pz=pz-@np*(pz^@pow-@c)/(@pow*pz^(@pow-1)) i=0 endif endif endif return pz endfunc private: int i default: title="Alt Newton/Midpoint" int param version caption="Version" default=101 visible=@version<101 endparam param av caption="Alt Variant" enum="Newton First""Midpoint First" endparam param np caption="Newton Parameter" default=(1,0) endparam param mp caption="Midpoint Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Stirling(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 f=pz^@pow-@c ff1=@pow^2*pz^(@pow-1)*(pz^@pow-@c)^(@pow-1) pz=pz-@sp*(pz-f)/(1-ff1) return pz endfunc default: title="Stirling Erratum" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Stirling Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_Jarratt2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) endif a=f/f1 if @v==0 b=@pow*(pz-2*a/3)^(@pow-1) elseif @v==1 b=@pow*(pz-2*a/3)^(@pow-1)-(@pow-1)*(pz-2*a/3)^(@pow-2)-(@pow-2)*(pz-2*a/3)^(@pow-3) else b=@pow*(pz-2*a/3)^(@pow-1)+(@pow-1)*(pz-2*a/3)^(@pow-2)+(@pow-2)*(pz-2*a/3)^(@pow-3) endif pz=pz-@jp*(a/2-f/(f1-3*b)) return pz endfunc default: title="Jarratt" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a-c""z^a-z^(a-1)-z^(a-2)-c""z^a+z^(a-1)+z^(a-2)-c" endparam param jp caption="Jarratt Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_InversefreeJarratt(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 f=pz^@pow-@c f1=@pow*pz^(@pow-1) u=f/f1 h=(@pow*(pz-2*u/3)^(@pow-1)-f1)/f1 pz=pz-@jp*(u-3*u*h*(1-3*h/2)/4) return pz endfunc default: title="Inverse-free Jarratt" int param version caption="Version" default=100 visible=@version<100 endparam param jp caption="Jarratt Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_JarrattNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) if @st==0 pz=@pf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) endif a=f/f1 if @v==0 b=@pow*(pz-2*a/3)^(@pow-1) elseif @v==1 b=@pow*(pz-2*a/3)^(@pow-1)-(@pow-1)*(pz-2*a/3)^(@pow-2)-(@pow-2)*(pz-2*a/3)^(@pow-3) else b=@pow*(pz-2*a/3)^(@pow-1)+(@pow-1)*(pz-2*a/3)^(@pow-2)+(@pow-2)*(pz-2*a/3)^(@pow-3) endif pz=pz-@jp*(a/2-f/(f1-3*b))+@pf(pixel) return pz endfunc default: title="Jarratt Nova" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a-c""z^a-z^(a-1)-z^(a-2)-c""z^a+z^(a-1)+z^(a-2)-c" endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(-1.0001,0) visible=@st==1 endparam param jp caption="Jarratt Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_Stirling2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c a=@pow*f^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c a=@pow*f^(@pow-1)-(@pow-1)*f^(@pow-2)-(@pow-2)*f^(@pow-3) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c a=@pow*f^(@pow-1)+(@pow-1)*f^(@pow-2)+(@pow-2)*f^(@pow-3) endif pz=pz-@sp*(pz-f)/(1-a) return pz endfunc default: title="Stirling" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a-c""z^a-z^(a-1)-z^(a-2)-c""z^a+z^(a-1)+z^(a-2)-c" endparam param sp caption="Stirling Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_ShiftedStirling(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c a=@pow*(pz-f)^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c a=@pow*(pz-f)^(@pow-1)-(@pow-1)*(pz-f)^(@pow-2)-(@pow-2)*(pz-f)^(@pow-3) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c a=@pow*(pz-f)^(@pow-1)+(@pow-1)*(pz-f)^(@pow-2)+(@pow-2)*(pz-f)^(@pow-3) endif pz=pz-@sp*f/a return pz endfunc default: title="Shifted Stirling" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a-c""z^a-z^(a-1)-z^(a-2)-c""z^a+z^(a-1)+z^(a-2)-c" endparam param sp caption="Stirling Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_Nedzhibov2(common.ulb:ConvergentFormula) { ;Root finding method attributed to Nedzhibov et al ;https://file.scirp.org/pdf/AM20100300002_25669189.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@np3*f/f1 fa=a^@pow-@c pz=a-@np2*f*fa/(f1*(f-@np1*fa)) return pz endfunc default: title="Nedzhibov" int param version caption="Version" default=100 visible=@version<100 endparam param @np1 caption="Nedzhibov Parameter 1" default=(0.5,0) endparam param @np2 caption="Nedzhibov Parameter 2" default=(1,0) endparam param @np3 caption="Nedzhibov Parameter 3" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(3,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ModifiedSchröder2(common.ulb:ConvergentFormula) { ;https://cyberleninka.org/article/n/898315/viewer public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*pz^(@pow-4) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*pz^(@pow-4) endif pz=pz-@ms2*f*(f1-@ms1*f)/(f^2-f*f2) return pz endfunc default: title="Modified Schröder 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param ms1 caption="MS Parameter 1" default=(1,0) endparam param ms2 caption="MS Parameter 2" default=(-1,0) endparam param pow caption="Exponent" default=(5,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Steffensen2(common.ulb:ConvergentFormula) { ;Steffensen's method for z+1/z=c ;https://en.wikipedia.org/wiki/Steffensen%27s_method public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c fa=(pz+f)^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fa=(pz+f)^@pow-(pz+f)^(@pow-1)-(pz+f)^(@pow-2)-@c else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fa=(pz+f)^@pow+(pz+f)^(@pow-1)+(pz+f)^(@pow-2)-@c endif pz=pz-@sp*f^2/(fa-f) return pz endfunc default: title="Steffensen 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param sp caption="Steffensen Parameter" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_King(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 fa=a^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c elseif @v==3 f=(pz^(@pow+1)-@c)/pz f1=(@pow*pz^(@pow+1)+@c)/pz^2 a=pz-f/f1 fa=(a^(@pow+1)-@c)/a elseif @v==4 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(-@pow-1)*(pz^(2*@pow)-1) a=pz-f/f1 fa=a^@pow+1/a^@pow-@c elseif @v==5 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2 a=pz-f/f1 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==6 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2 a=pz-f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==7 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)-a^(@pow-2)-@c elseif @v==8 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)+a^(@pow-2)-@c elseif @v==9 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==10 f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow+a^@pow*(a-1.5)/(1-1.5*a)-@c else f=pz^@pow-pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow-a^@pow*(a-1.5)/(1-1.5*a)-@c endif pz=a-@kp2*(fa/f1)*(f+@kp1*fa)/(f+(@kp1-2)*fa) return pz endfunc default: title="King" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""(z^(p+1)-c)/z"\ "z^p+1/z^p-c""z^p*(z-0.5)/(1-0.5*z)-c""z^p-z^p*(z-0.5)/(1-0.5*z)-c"\ "z^p-z^p*(z-0.5)/(1-0.5*z)-z^(p-1)-z^(p-2)-c""z^p+z^p*(z-0.5)/(1-0.5*z)+z^(p-1)+z^(p-2)-c"\ "z^p*(z-1.5)/(1-1.5*z)-c""z^p+z^p*(z-1.5)/(1-1.5*z)-c""z^p-z^p*(z-1.5)/(1-1.5*z)-c" endparam param kp1 caption="King Parameter 1" default=(1,0) endparam param kp2 caption="King Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_KingNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@pf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 fa=a^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c elseif @v==3 f=(pz^(@pow+1)-@c)/pz f1=(@pow*pz^(@pow+1)+@c)/pz^2 a=pz-f/f1 fa=(a^(@pow+1)-@c)/a elseif @v==4 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(-@pow-1)*(pz^(2*@pow)-1) a=pz-f/f1 fa=a^@pow+1/a^@pow-@c elseif @v==5 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2 a=pz-f/f1 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==6 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2 a=pz-f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==7 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)-a^(@pow-2)-@c elseif @v==8 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)+a^(@pow-2)-@c elseif @v==9 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==10 f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow+a^@pow*(a-1.5)/(1-1.5*a)-@c else f=pz^@pow-pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-f/f1 fa=a^@pow-a^@pow*(a-1.5)/(1-1.5*a)-@c endif pz=a-@kp2*(fa/f1)*(f+@kp1*fa)/(f+(@kp1-2)*fa)+@pf(fpixel) return pz endfunc private: complex fpixel default: title="King Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Variant" enum="Pixel""Parameter" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""(z^(p+1)-c)/z"\ "z^p+1/z^p-c""z^p*(z-0.5)/(1-0.5*z)-c""z^p-z^p*(z-0.5)/(1-0.5*z)-c"\ "z^p-z^p*(z-0.5)/(1-0.5*z)-z^(p-1)-z^(p-2)-c""z^p+z^p*(z-0.5)/(1-0.5*z)+z^(p-1)+z^(p-2)-c"\ "z^p*(z-1.5)/(1-1.5*z)-c""z^p+z^p*(z-1.5)/(1-1.5*z)-c""z^p-z^p*(z-1.5)/(1-1.5*z)-c" endparam param kp1 caption="King Parameter 1" default=(1,0) endparam param kp2 caption="King Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(0.75,0) visible=@st==1 endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Kanwar(common.ulb:ConvergentFormula) { ;https://journals.vgtu.lt/index.php/MMA/article/view/5646/8883 public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@p3 f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*((pz-1)/(pz+1))^@pow/(pz^2-1) elseif @v==2 f=((pz^2-1)/(pz+1))^@pow-@p3 f1=@pow*(pz-1)^(@pow-1) elseif @v==3 f=((pz^3-1)/(pz^2+1))^@pow-@p3 f1=@pow*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow-1) elseif @v==4 f=((pz^2+1)/pz)^@pow-@p3 f1=@pow*(pz^2-1)*(pz+1/pz)^@pow/(pz^3+pz) elseif @v==5 f=(pz+pz^2)^@pow-@p3 f1=@pow*(2*pz+1)*(pz*(pz+1))^(@pow-1) elseif @v==6 f=pz^@pow+((pz-1i)/(pz+1i))^@pow-@p3 f1=@pow*pz^(@pow-1)+2i*@pow*((pz-1i)/(pz+1i))^@pow/(pz^2+1) elseif @v==7 f=((pz^2-1i)/(pz+1i))^@pow-@p3 f1=@pow*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow-1) elseif @v==8 f=((pz^2-1i)/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz)^(@pow-1) elseif @v==9 f=((pz^2+1i)/(pz+1))^@pow-@p3 f1=@pow*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow-1)/(pz+1)^2 elseif @v==10 f=(pz+1i)^@pow-@p3 f1=@pow*(pz+1i)^(@pow-1) elseif @v==11 f=(1/pz^2+1/pz)^@pow-@p3 f1=@pow*(pz+2)*((pz+1)/pz^2)^(@pow-1)/pz^2 elseif @v==12 f=pz^@pow*(pz-2)/(1-2*pz)-(@p3-0.5) f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 f=((pz^2-2)/(1-2*pz))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==14 f=((1-2*pz)/(pz^2-2))^@pow-@p3 f1=2*@pow*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow/((2*pz-1)*(pz^2-2)) elseif @v==15 f=recip(pz)^@pow-@p3 f1=-@pow*recip(pz)^(@pow+1) elseif @v==16 f=(pz+sqr(pz)+1/pz)^@pow-@p3 f1=@pow*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow-1) elseif @v==17 f=(sqr(pz)-1/pz)^@pow-@p3 f1=@pow*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow-1) elseif @v==18 f=(pz-1i-1i/pz)^@pow-@p3 f1=@pow*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow-1) elseif @v==19 f=(pz+1i-1i/pz^2)^@pow-@p3 f1=@pow*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow-1) elseif @v==20 f=(pz+pz^2)^@pow+((pz-1)/(pz+1))^@pow-@p3 f1=@pow*(2*pz+1)*(pz^2+pz)^(@pow-1)+@pow*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow-1) elseif @v==21 f=(pz^(@pow+1)-@p3)/(pz^@pow+@p3) f1=(@pow+1)*pz^@pow/(pz^@pow+@p3)-@pow*pz^(@pow-1)*(pz^(@pow+1)-@p3)/(pz^@pow+@p3)^2 elseif @v==22 f=(pz^(@pow+1)+@p3)/(pz^@pow-1i) f1=(@pow+1)*pz^@pow/(pz^@pow-1i)-@pow*pz^(@pow-1)*(pz^(@pow+1)+@p3)/(pz^@pow-1i)^2 elseif @v==23 f=(pz^2+pz/1i)^@pow-@p3 f1=@pow*(2*pz-1i)*(pz*(pz-1i))^(@pow-1) elseif @v==24 f=((pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2))^2 f1=2*@pow*pz^(@pow-1)*(pz^@pow+(@p3-1)-1)/(@pow*pz+(@p3-1)-2)^2-2*@pow*(pz^@pow+(@p3-1)-1)^2/(@pow*pz+(@p3-1)-2)^3 elseif @v==25 f=tan(pz)^@pow-@p3 f1=@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==26 f=cotan(pz)^@pow-@p3 f1=-@pow*cotan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==27 f=tanh(pz)^@pow-@p3 f1=@pow*tanh(pz)^@pow/(sinh(pz)*cosh(pz)) elseif @v==28 f=(1/cos(pz))^@pow-@p3 f1=@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==29 f=(1/sin(pz))^@pow-@p3 f1=-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==30 f=pz^@pow+(1/sin(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)-@pow*cos(pz)/sin(pz)^(@pow+1) elseif @v==31 f=pz^@pow+(1/cos(pz))^@pow-@p3 f1=@pow*pz^(@pow-1)+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==32 f=pz^@pow+(pz^2)^@pow+1i*(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3i*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==33 f=(pz-1i)^@pow+(pz^2-1i)^@pow+1i*(pz^3-1i)^@pow-@p3 f1=2*@pow*pz*(pz^2-1i)^(@pow-1)+3*@pow*pz*2*(pz^3-1i)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==34 f=(pz+1i)^@pow+(pz^2+1i)^@pow+1i*(pz^3+1i)^@pow-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+3*@pow*pz*2*(pz^3+1i)^(@pow-1)+@pow*(pz+1i)^(@pow-1) elseif @v==35 f=9*pz^@pow+3i*pz^(@pow+1)+(1/cos(pz))^@pow-@p3 f1=9*@pow*pz^(@pow-1)+3i*(@pow+1)*pz^@pow+@pow*sin(pz)/cos(pz)^(@pow+1) elseif @v==36 f=pz^@pow+pz^(@pow+1)+pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow+(@pow+2)*pz^(@pow+1) elseif @v==37 f=pz^@pow+pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=@pow*pz^(@pow-1)+(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==38 f=2*pz^@pow-3i*pz^(@pow+1)-1i*pz^(@pow+2)-@p3 f1=2*@pow*pz^(@pow-1)-3i*(@pow+1)*pz^@pow-1i*(@pow+2)*pz^(@pow+1) elseif @v==39 f=pz^@pow+(pz^2)^@pow+(pz^3)^@pow-@p3 f1=@pow*pz^(@pow-1)+2*@pow*pz*(pz^2)^(@pow-1)+3*@pow*pz^2*(pz^3)^(@pow-1) elseif @v==40 f=(pz+cotanh(pz))^@pow-@p3 f1=-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) elseif @v==41 f=(pz^2*(pz-2)/(1-2*pz))^@pow-@p3 f1=@pow*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow/((pz-2)*pz*(2*pz-1)) elseif @v==42 f=pz^@pow+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow f1=@pow*pz^(@pow-1)+@pow*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow elseif @v==43 f=pz^@pow+1i*(pz-1/pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==44 f=pz^(@pow+1)-1i*(pz-1/pz)^@pow-@p3 f1=(@pow+1)*pz^@pow-1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1) elseif @v==45 f=pz^@pow+pz^(@pow-1)+1i*(pz-1/pz)^@pow+tan(pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+1i*@pow*(1/pz^2+1)*(pz-1/pz)^(@pow-1)+@pow*tan(pz)^@pow/(sin(pz)*cos(pz)) elseif @v==46 f=(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==47 f=pz^@pow+(pz-1i)^@pow+(1i*pz)^@pow-@p3 f1=@pow*pz^(@pow-1)+1i*@pow*(1i*pz)^(@pow-1)+@pow*(pz-1i)^(@pow-1) elseif @v==48 f=(pz+1i*pz)^@pow+pz^3/1i+(pz+cotanh(pz))^@pow-@p3 f1=@pow*((1+1i)*pz)^@pow/pz+3*pz^2/1i-@pow*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow-1) else f=(pz^2+1i)^@pow+(pz+2i)^(@pow+1)-@p3 f1=2*@pow*pz*(pz^2+1i)^(@pow-1)+(@pow+1)*(pz+2i)^@pow endif return pz-@p1*f/(f1-@p2*f) endfunc default: title="Kanwar" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param p2 caption="Kanwar Parameter 1" default=(1,0) endparam param p1 caption="Kanwar Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param p3 caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_ModifiedSchröder3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*pz^(@pow-4) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*pz^(@pow-4) endif pz=pz-@msp3*(@msp1/(f1/f-f2/f1)+@msp2*f/f2) return pz endfunc default: title="Modified Schröder 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param msp1 caption="MS Parameter 1" default=(1,0) endparam param msp2 caption="MS Parameter 2" default=(1,0) endparam param msp3 caption="MS Parameter 3" default=(0.5,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ModifiedSchröder4(common.ulb:ConvergentFormula) { ;https://journals.vgtu.lt/index.php/MMA/article/view/5646/8883 public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) else f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*pz^(@pow-4) endif pz=pz-@msp2*f*(f1-@msp1*f)^2/((f1^2-f*f2)*(f1-2*@msp1*f)) return pz endfunc default: title="Modified Schröder 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c" endparam param msp1 caption="MS Parameter 1" default=(1,0) endparam param msp2 caption="MS Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Secant(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@sp1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow-@c fz0=z0^@pow-@c elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c elseif @v==3 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c elseif @v==4 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c elseif @v==5 fz=((pz^2-1)/(pz+1))^@pow-@c fz0=((z0^2-1)/(z0+1))^@pow-@c elseif @v==6 fz=((pz^2-1i)/(pz+1i))^@pow-@c fz0=((z0^2-1i)/(z0+1i))^@pow-@c elseif @v==7 fz=pz^@pow-pz-@c fz0=z0^@pow-z0-@c elseif @v==8 fz=pz^@pow-pz^@pow*(pz+0.75)/(1+0.75*pz)-@c fz0=z0^@pow-z0^@pow*(z0+0.75)/(1+0.75*z0)-@c elseif @v==9 fz=pz^@pow-pz^(@pow-1)-@c fz0=z0^@pow-z0^(@pow-1)-@c elseif @v==10 fz=pz^@pow-tanh(pz)^(@pow-1)-@c fz0=z0^@pow-tanh(z0)^(@pow-1)-@c elseif @v==11 fz=pz^@pow-exp(pz)-@c fz0=z0^@pow-exp(z0)-@c elseif @v==12 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c elseif @v==13 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)+z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c elseif @v==14 fz=pz^@pow*(pz-2)/(1-2*pz)-pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)-z0^(@pow-1)*(z0-2)/(1-2*z0)-@c else fz=pz^@pow*(pz-2)/(1-2*pz)+pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)+z0^(@pow-1)*(z0-2)/(1-2*z0)-@c endif pz=pz-@sp2*fz*(pz-z0)/(fz-fz0) z0=m_ZOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Secant" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16" endparam param sp1 caption="Secant Parameter 1" default=(0,0) endparam param sp2 caption="Secant Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.001 exponential=true endparam } class OM_WuandFuNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@pf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c fa=(pz-f)^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fa=(pz-f)^@pow-(pz-f)^(@pow-1)-(pz-f)^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fa=(pz-f)^@pow+(pz-f)^(@pow-1)+(pz-f)^(@pow-2)-@c elseif @v==3 f=pz^@pow+1/pz^@pow-@c fa=(pz-f)^@pow+1/(pz-f)^@pow-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fa=(pz-f)^@pow*((pz-f)-0.5)/(1-0.5*(pz-f))-@c else f=pz^@pow*(pz+1.5)/(1+1.5*pz)-@c fa=(pz-f)^@pow*((pz-f)+1.5)/(1+1.5*(pz-f))-@c endif if @st==0 pz=pz-@p2*f^2/(@p1*f^2+f-fa)+@pp*@pf(fpixel) else pz=pz-@p2*f^2/(@p1*f^2+f-fa)+@pf(fpixel) endif return pz endfunc private: complex fpixel default: title="Wu and Fu Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c"\ "z^p+1/z^p-c""z^p*(z-0.5)/(1-0.5*z)-c""z^p*(z+1.5)/(1+1.5*z)-c" endparam param p1 caption="WF Parameter 1" default=(1,0) endparam param p2 caption="WF Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(0.1,0) visible=@st==1 endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam func pf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_SecantNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 z1=@sec1*@nf(pz) z2=@sec2*@nf(pz) else z1=@sec1 z2=@sec2 endif fz1=(0,0) fz2=(0,0) return z1 return z2 return fz1 return fz2 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 fz1=z1^@pow-@c fz2=z2^@pow-@c elseif @v==1 fz1=z1^@pow-z1^(@pow-1)-z1^(@pow-2)-@c fz2=z2^@pow-z2^(@pow-1)-z2^(@pow-2)-@c elseif @v==2 fz1=z1^@pow+z1^(@pow-1)+z1^(@pow-2)-@c fz2=z2^@pow+z2^(@pow-1)+z2^(@pow-2)-@c elseif @v==3 fz1=z1^@pow*(z1-1.5)/(1-1.5*z1)-@c fz2=z2^@pow*(z2-1.5)/(1-1.5*z2)-@c elseif @v==4 fz1=z1^@pow*(z1-0.5)/(1-0.5*z1)-@c fz2=z2^@pow*(z2-0.5)/(1-0.5*z2)-@c elseif @v==5 fz1=z1^@pow+1/z1^@pow-@c fz2=z2^@pow+1/z2^@pow-@c elseif @v==6 fz1=z1^@pow-1/z1^@pow-@c fz2=z2^@pow-1/z2^@pow-@c elseif @v==7 fz1=((z1^2-1)/(z1+1))^@pow-@c fz2=((z2^2-1)/(z2+1))^@pow-@c elseif @v==8 fz1=z1^@pow-z1^(@pow-1)-z1^(@pow-2)-1/z1^@pow-@c fz2=z2^@pow-z2^(@pow-1)-z2^(@pow-2)-1/z2^@pow-@c elseif @v==9 fz1=z1^@pow+cotanh(z1)^@pow-@c fz2=z2^@pow+cotanh(z2)^@pow-@c elseif @v==10 fz1=z1^@pow-cotanh(z1)^@pow-@c fz2=z2^@pow-cotanh(z2)^@pow-@c elseif @v==11 fz1=((z1^@pow-1)/(@pow*z1^(@pow-1)))^@pow-@c fz2=((z2^@pow-1)/(@pow*z2^(@pow-1)))^@pow-@c elseif @v==12 fz1=(z1^@pow-1)/(z1^(@pow-1))-@c fz2=(z2^@pow-1)/(z2^(@pow-1))-@c elseif @v==13 fz1=(z1^2/(2*z1+1))^@pow-@c fz2=(z2^2/(2*z2+1))^@pow-@c elseif @v==14 fz1=((Z1^2-1)/(1-z1))^@pow-@c fz2=((Z2^2-1)/(1-z2))^@pow-@c else fz1=((Z1^2-1.5)/(1-1.5*z1))^@pow-@c fz2=((Z2^2-1.5)/(1-1.5*z2))^@pow-@c endif pz=z2-@sec3*fz2*(z2-z1)/(fz2-fz1) if @st==0 z1=z2+@np*@nf(fpixel) else z1=z2+@nf(fpixel) endif z2=pz fz1=fz2 if @v==0 fz2=pz^@pow-@c elseif @v==1 fz2=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c elseif @v==2 fz2=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c elseif @v==3 fz2=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c elseif @v==4 fz2=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c elseif @v==5 fz2=pz^@pow+1/pz^@pow-@c elseif @v==6 fz2=pz^@pow-1/pz^@pow-@c elseif @v==7 fz2=((pz^2-1)/(pz+1))^@pow-@c elseif @v==8 fz2=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-1/pz^@pow-@c elseif @v==9 fz2=pz^@pow+cotanh(pz)^@pow-@c elseif @v==10 fz2=pz^@pow-cotanh(pz)^@pow-@c elseif @v==11 fz2=((pz^@pow-1)/(@pow*pz^(@pow-1)))^@pow-@c elseif @v==12 fz2=(pz^@pow-1)/(pz^(@pow-1))-@c elseif @v==13 fz2=(pz^2/(2*pz+1))^@pow-@c elseif @v==14 fz2=((pZ^2-1)/(1-pz))^@pow-@c else fz2=((pZ^2-1.5)/(1-1.5*pz))^@pow-@c endif return pz return z1 return z2 return fz1 return fz2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz2|<@p_bailout) return bail endfunc private: complex fpixel complex z1 complex z2 complex fz1 complex fz2 default: title="Secant Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c"\ "z^p*(z-2)/(1-2*z)-c""z^p*(z-0.5)/(1-0.5*z)-c"\ "z^p+1/z^p-c""z^p-1/z^p-c""((z^2-1)/(z+1))^p-c"\ "z^p-z^(p-1)-z^(p-2)-1/z^p-c""z^p+cotanh(z)^p-c"\ "z^p-cotanh(z)^p-c""((z^p-1)/(p*z^(p-1)))^p-c"\ "(z^p-1)/(z^(p-1))-c" endparam param sec1 caption="Secant Parameter 1" default=(-0.7,0) endparam param sec2 caption="Secant Parameter 2" default=(0.8,0) endparam param sec3 caption="Secant Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param np caption="Nova Parameter" default=(1,0) visible=@st==0 endparam func nf caption="Nova Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_Thukral(common.ulb:ConvergentFormula) { ;https://adv-math.com/wp-content/uploads/2020/01/adv-201945-1.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2) f3=(@pow-2)*(@pow-1)*@pow*pz^(@pow-3) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)-(@pow-2)*(@pow-1)*pz^(@pow-3)-(@pow-3)*(@pow-2)*pz^(@pow-4) f3=(@pow-2)*(@pow-1)*@pow*pz^(@pow-3)-(@pow-3)*(@pow-2)*(@pow-1)*pz^(@pow-4)-(@pow-4)*(@pow-3)*(@pow-2)*pz^(@pow-5) elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f2=(@pow-1)*@pow*pz^(@pow-2)+(@pow-2)*(@pow-1)*pz^(@pow-3)+(@pow-3)*(@pow-2)*pz^(@pow-4) f3=(@pow-2)*(@pow-1)*@pow*pz^(@pow-3)+(@pow-3)*(@pow-2)*(@pow-1)*pz^(@pow-4)+(@pow-4)*(@pow-3)*(@pow-2)*pz^(@pow-5) elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)+@pow*(@pow+1)*pz^(-@pow-2) f3=(@pow-2)*(@pow-1)*@pow*pz^(@pow-3)-@pow*(@pow+1)*(@pow+2)*pz^(-@pow-3) else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) f2=(@pow-1)*@pow*pz^(@pow-2)-@pow*(@pow+1)*pz^(-@pow-2) f3=(@pow-2)*(@pow-1)*@pow*pz^(@pow-3)+@pow*(@pow+1)*(@pow+2)*pz^(-@pow-3) endif t1=f1/f t2=f2/f1 t3=f3/f2 u1=3*@tp1*(@tp1+1) u2=3*@tp1^2 u3=(2*@tp1+1)*(@tp1+1) u4=u1 u5=@tp1^2 pz=pz-@tp2*((u1*t1-u2*t2)/(u3*t1^2-u4*t1*t2+u5*t2*t3)) return pz endfunc default: title="Thukral" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param tp1 caption="Thukral Parameter 1" default=(5,0) endparam param tp2 caption="Thukral Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_SharmaNova(common.ulb:ConvergentFormula) { ;http://www.jnmas.org/jnmas6-3.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@nf(pz) else pz=@start endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)-@pow*a^(-@pow-1) else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)+@pow*a^(-@pow-1) endif k1=@sp^3-4*@sp+8 k2=(@sp+2)*(@sp/(@sp+2))^@sp if @st==0 pz=pz-@sp2*(@sp/8)*(k1*f/f1-(@sp-2)*k2*((@sp-1)-k2*f1/f1a)*(f/f1a))+@np*@nf(fpixel) else pz=pz-@sp2*(@sp/8)*(k1*f/f1-(@sp-2)*k2*((@sp-1)-k2*f1/f1a)*(f/f1a))+@nf(fpixel) endif return pz endfunc private: complex fpixel default: title="Sharma Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param sp caption="Sharma Parameter 1" default=(1.6,0) endparam param sp2 caption="Sharma Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param start caption="Start Parameter" default=(-0.5,0) visible=@st==1 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==0 endparam func nf caption="Nova Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Sharma(common.ulb:ConvergentFormula) { ;http://www.jnmas.org/jnmas6-3.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)-@pow*a^(-@pow-1) else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) a=pz-(2*@sp/(@sp+2))*(f/f1) f1a=@pow*a^(@pow-1)+@pow*a^(-@pow-1) endif k1=@sp^3-4*@sp+8 k2=(@sp+2)*(@sp/(@sp+2))^@sp pz=pz-@sp2*(@sp/8)*(k1*f/f1-(@sp-2)*k2*((@sp-1)-k2*f1/f1a)*(f/f1a)) return pz endfunc default: title="Sharma" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param sp caption="Sharma Parameter 1" default=(1.6,0) endparam param sp2 caption="Sharma Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_HamChunLeeNova(common.ulb:ConvergentFormula) { ;https://core.ac.uk/download/pdf/82505151.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sp else pz=@nf(pz) endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @version==100 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) endif a=pz-f/f1 f1a=@pow*a^(@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-@c else if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)-@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow+1/b^@pow-@c else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)+@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-1/b^@pow-@c endif endif if @st==0 pz=b-@hclp*(f1a/(2*f1a-f1))*(fb/f1)+@nf(fpixel) else pz=b-@hclp*(f1a/(2*f1a-f1))*(fb/f1)+@np*@nf(fpixel) endif return pz endfunc private: complex fpixel default: title="Ham-Chun-Lee Nova" int param version caption="Version" default=101 visible=@version<101 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param hclp caption="HCL Parameter 1" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(-0.999,0) visible=@st==0 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==1 endparam func nf caption="Nova Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_HamChunLee(common.ulb:ConvergentFormula) { ;https://core.ac.uk/download/pdf/82505151.pdf ;(45) public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c endif pz=b-@hclp*(f1a/(2*f1a-f1))*(fb/f1) return pz endfunc default: title="Ham-Chun-Lee" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param hclp caption="HCL Parameter 1" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_HamChunLee2(common.ulb:ConvergentFormula) { ;https://core.ac.uk/download/pdf/82505151.pdf ;30 public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 fa=a^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c endif pz=a-@hclp4*(((@hclp1*f+@hclp2*f1)/(@hclp3*f+@hclp2*f1))*(fa/f1)) return pz endfunc default: title="Ham-Chun-Lee 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param hclp1 caption="HCL Parameter 1" default=(3,0) endparam param hclp2 caption="HCL Parameter 2" default=(-0.5,0) endparam param hclp3 caption="HCL Parameter 3" default=(1,0) endparam param hclp4 caption="HCL Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_HamChunLee3(common.ulb:ConvergentFormula) { ;https://core.ac.uk/download/pdf/82505151.pdf ;(57) public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)-@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow+1/b^@pow-@c else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)+@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-1/b^@pow-@c endif pz=b-@hclp*(2*f1a^2/(f1^2-4*f1*f1a+5*f1a^2))*(fb/f1) return pz endfunc default: title="Ham-Chun-Lee 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param hclp caption="HCL Parameter" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ModifiedSecant(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@sp1 z1=@sp2 fz=(0,0) fz1=(0,0) return pz return z0 return z1 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz fz=pz^@pow-@c fz0=z0^@pow-@c fz1=z1^@pow-@c a=z1-@sp3*fz1*(pz-z0)/(fz-fz0) fa=a^@pow-@c pz=pz-@sp4*fz*(pz-a)/(fz-fa) if @v==0 z0=z1=m_ZOld elseif @v==1 z0=z1 elseif @v==2 z0=z1 z1=m_ZOld elseif @v==3 z1=z0 else z1=z0 z0=m_ZOld endif return pz return z0 return z1 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex z1 complex fz complex fz1 default: title="Modified Secant" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param sp1 caption="Secant Parameter 1" default=(0,0) endparam param sp2 caption="Secant Parameter 2" default=(0.5,0) endparam param sp3 caption="Secant Parameter 3" default=(1,0) endparam param sp4 caption="Secant Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.001 exponential=true endparam } class OM_ModifiedSecant2(common.ulb:ConvergentFormula) { ;https://shodhganga.inflibnet.ac.in/bitstream/10603/127647/9/09_chapter_03.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@msp3*f/(f1-@msp1*f) fa=a^@pow-@c elseif @v==1 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@msp3*f/(f1-@msp1*f) fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==2 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@msp3*f/(f1-@msp1*f) fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==3 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@msp3*f/(f1-@msp1*f) fa=(a+1/a)^@pow-@c else f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@msp3*f/(f1-@msp1*f) fa=(a-1/a)^@pow-@c endif pz=pz-@msp2*f*(a-pz)/(fa-f) return pz endfunc default: title="Modified Secant 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p*(z-1.5)/(1-1.5*z)-c""z^p*(z-0.5)/(1-0.5*z)-c""(z+1/z)^p-c""(z-1/z)^p-c" endparam param msp1 caption="Modsec Parameter 1" default=(1,0) endparam param msp2 caption="Modsec Parameter 2" default=(1,0) endparam param msp3 caption="Modsec Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000000000000000001 exponential=true endparam } class OM_ModifiedSecant3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@msp1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz a=(pz+z0)/2 if @v==0 fz=pz^@pow-@c fz0=z0^@pow-@c fa=a^@pow-@c elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c elseif @v==3 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==4 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==5 fz=((pz^2-1)/(pz+1))^@pow-@c fz0=((z0^2-1)/(z0+1))^@pow-@c fa=((a^2-1)/(a+1))^@pow-@c elseif @v==6 fz=((pz^2-1i)/(pz+1i))^@pow-@c fz0=((z0^2-1i)/(z0+1i))^@pow-@c fa=((a^2-1i)/(a+1i))^@pow-@c elseif @v==7 fz=pz^@pow-pz-@c fz0=z0^@pow-z0-@c fa=a^@pow-a-@c elseif @v==8 fz=pz^@pow-pz^@pow*(pz+0.75)/(1+0.75*pz)-@c fz0=z0^@pow-z0^@pow*(z0+0.75)/(1+0.75*z0)-@c fa=a^@pow-a^@pow*(a+0.75)/(1+0.75*a)-@c elseif @v==9 fz=pz^@pow-pz^(@pow-1)-@c fz0=z0^@pow-z0^(@pow-1)-@c fa=a^@pow-a^(@pow-1)-@c elseif @v==10 fz=pz^@pow-tanh(pz)^(@pow-1)-@c fz0=z0^@pow-tanh(z0)^(@pow-1)-@c fa=a^@pow-tanh(a)^(@pow-1)-@c elseif @v==11 fz=pz^@pow-exp(pz)-@c fz0=z0^@pow-exp(z0)-@c fa=a^@pow-exp(a)-@c elseif @v==12 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c fa=a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)*(a-0.5)/(1-0.5*a)-@c elseif @v==13 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)+z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c fa=a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)*(a-0.5)/(1-0.5*a)-@c elseif @v==14 fz=pz^@pow*(pz-2)/(1-2*pz)-pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)-z0^(@pow-1)*(z0-2)/(1-2*z0)-@c fa=a^@pow*(a-2)/(1-2*a)-a^(@pow-1)*(a-2)/(1-2*a)-@c elseif @v==15 fz=pz^@pow*(pz-2)/(1-2*pz)+pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)+z0^(@pow-1)*(z0-2)/(1-2*z0)-@c fa=a^@pow*(a-2)/(1-2*a)+a^(@pow-1)*(a-2)/(1-2*a)-@c elseif @v==16 fz=((pz^3-1)/(pz^2+1))^@pow-@c fz0=((z0^3-1)/(z0^2+1))^@pow-@c fa=((a^3-1)/(a^2+1))^@pow-@c elseif @v==17 fz=((pz^3+1)/(pz^2-1))^@pow-@c fz0=((z0^3+1)/(z0^2-1))^@pow-@c fa=((a^3+1)/(a^2-1))^@pow-@c elseif @v==18 fz=((pz^2+1)/(pz-1))^@pow-@c fz0=((z0^2+1)/(z0-1))^@pow-@c fa=((a^2+1)/(a-1))^@pow-@c elseif @v==19 fz=((pz^3+1i)/(pz^2-1i))^@pow-@c fz0=((z0^3+1i)/(z0^2-1i))^@pow-@c fa=((a^3+1i)/(a^2-1i))^@pow-@c elseif @v==20 fz=((pz^3+1i)/(pz^2-1i))^@pow+((pz^3-1i)/(pz^2+1i))^(@pow-1)-@c fz0=((z0^3+1i)/(z0^2-1i))^@pow+((z0^3-1i)/(z0^2+1i))^(@pow-1)-@c fa=((a^3+1i)/(a^2-1i))^@pow+((a^3-1i)/(a^2+1i))^(@pow-1)-@c else fz=((pz^3+1)/(pz^2-1))^@pow+((pz^3-1)/(pz^2+1))^(@pow-1)-@c fz0=((z0^3+1)/(z0^2-1))^@pow+((z0^3-1)/(z0^2+1))^(@pow-1)-@c fa=((a^3+1)/(a^2-1))^@pow+((a^3-1)/(a^2+1))^(@pow-1)-@c endif pz=pz-@msp2*fz*(pz-z0)/(3*fz+fz0-4*fa) z0=m_ZOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Modified Secant 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22" endparam param msp1 caption="Modsec Parameter 1" default=(0,0) endparam param msp2 caption="Modsec Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_ModifiedSecant4(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@sec1*@sf(pz) z2=@sec2*@sf(pz) fz1=(0,0) fz2=(0,0) return z1 return z2 return fz1 return fz2 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) a=(z2+z1)/2 if @v==0 fz1=z1^@pow-@c fz2=z2^@pow-@c fa=a^@pow-@c elseif @v==1 fz1=z1^@pow+z1^(@pow-1)+z1^(@pow-2)-@c fz2=z2^@pow+z2^(@pow-1)+z2^(@pow-2)-@c fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c elseif @v==2 fz1=z1^@pow-z1^(@pow-1)-z1^(@pow-2)-@c fz2=z2^@pow-z2^(@pow-1)-z2^(@pow-2)-@c fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c elseif @v==3 fz1=(z1+1/z1)^@pow-@c fz2=(z2+1/z2)^@pow-@c fa=(a+1/a)^@pow-@c elseif @v==4 fz1=(z1-1/z1)^@pow-@c fz2=(z2-1/z2)^@pow-@c fa=(a-1/a)^@pow-@c elseif @v==5 fz1=z1^@pow+1/z1^@pow-@c fz2=z2^@pow+1/z2^@pow-@c fa=a^@pow+1/a^@pow-@c elseif @v==6 fz1=z1^@pow-1/z1^@pow-@c fz2=z2^@pow-1/z2^@pow-@c fa=a^@pow-1/a^@pow-@c elseif @v==7 fz1=recip(z1)^@pow-@c fz2=recip(z2)^@pow-@c fa=recip(a)^@pow-@c elseif @v==8 fz1=z1^@pow+sqr(z1)^@pow-@c fz2=z2^@pow+sqr(z2)^@pow-@c fa=a^@pow+sqr(a)^@pow-@c elseif @v==9 fz1=((z1^2-1.5)/(1-1.5*z1))^@pow-@c fz2=((z2^2-1.5)/(1-1.5*z2))^@pow-@c fa=((a^2-1.5)/(1-1.5*a))^@pow-@c elseif @v==10 fz1=z1^@pow*(z1-1.5)/(1-1.5*z1)-@c fz2=z2^@pow*(z2-1.5)/(1-1.5*z2)-@c fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==11 fz1=z1^@pow*(z1-0.5)/(1-0.5*z1)-@c fz2=z2^@pow*(z2-0.5)/(1-0.5*z2)-@c fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==12 fz1=((z1^2-0.5)/(1-0.5*z1))^@pow-@c fz2=((z2^2-0.5)/(1-0.5*z2))^@pow-@c fa=((a^2-0.5)/(1-0.5*a))^@pow-@c elseif @v==13 fz1=((z1^2-1)/(z1+1))^@pow-@c fz2=((z2^2-1)/(z2+1))^@pow-@c fa=((a^2-1)/(a+1))^@pow-@c elseif @v==14 fz1=((z1^@pow-1)/(@pow*z1^(@pow-1)))^@pow-@c fz2=((z2^@pow-1)/(@pow*z2^(@pow-1)))^@pow-@c fa=((a^@pow-1)/(@pow*a^(@pow-1)))^@pow-@c elseif @v==15 fz1=(z1-(z1^@pow-1)/(@pow*z1^(@pow-1)))^@pow-@c fz2=(z2-(z2^@pow-1)/(@pow*z2^(@pow-1)))^@pow-@c fa=(a-(a^@pow-1)/(@pow*a^(@pow-1)))^@pow-@c elseif @v==16 fz1=((z1^2-1i)/(z1+1i))^@pow-@c fz2=((z2^2-1i)/(z2+1i))^@pow-@c fa=((a^2-1i)/(a+1i))^@pow-@c elseif @v==17 fz1=((z1^2-1)/(2*z1-2))^@pow-@c fz2=((z2^2-1)/(2*z2-2))^@pow-@c fa=((a^2-1)/(2*a-2))^@pow-@c elseif @v==18 fz1=z1^@pow+sqr(z1)-@c fz2=z2^@pow+sqr(z2)-@c fa=a^@pow+sqr(a)-@c elseif @v==19 fz1=(z1^(2*@pow)-1/z1-1)/z1^@pow-@c fz2=(z2^(2*@pow)-1/z2-1)/z2^@pow-@c fa=(a^(2*@pow)-1/a-1)/a^@pow-@c elseif @v==20 fz1=((z1-1)^2/(z1+1))^@pow-@c fz2=((z2-1)^2/(z2+1))^@pow-@c fa=((a-1)^2/(a+1))^@pow-@c elseif @v==21 fz1=((z1+1)^2/(z1-1))^@pow-@c fz2=((z2+1)^2/(z2-1))^@pow-@c fa=((a+1)^2/(a-1))^@pow-@c elseif @v==22 fz1=((z1-1)^3/(z1+1)^2)^@pow-@c fz2=((z2-1)^3/(z2+1)^2)^@pow-@c fa=((a-1)^3/(a+1)^2)^@pow-@c elseif @v==23 fz1=((z1+1)^3/(z1-1)^2)^@pow-@c fz2=((z2+1)^3/(z2-1)^2)^@pow-@c fa=((a+1)^3/(a-1)^2)^@pow-@c elseif @v==24 fz1=((z1^2-2)/(z1+2))^@pow-@c fz2=((z2^2-2)/(z2+2))^@pow-@c fa=((a^2-2)/(a+2))^@pow-@c else fz1=((z1^2+2)/(z1-2))^@pow-@c fz2=((z2^2+2)/(z2-2))^@pow-@c fa=((a^2+2)/(a-2))^@pow-@c endif pz=z2-fz2*(z2-z1)/(3*fz2+fz1-4*fa) a=z1 z1=z2 z2=pz fa=fz1 fz1=fz2 if @v==0 fz2=pz^@pow-@c elseif @v==1 fz2=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c elseif @v==2 fz2=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c elseif @v==3 fz2=(pz+1/pz)^@pow-@c elseif @v==4 fz2=(pz-1/pz)^@pow-@c elseif @v==5 fz2=pz^@pow+1/pz^@pow-@c elseif @v==6 fz2=pz^@pow-1/pz^@pow-@c elseif @v==7 fz2=recip(pz)^@pow-@c elseif @v==8 fz2=pz^@pow+sqr(pz)^@pow-@c elseif @v==9 fz2=((pz^2-1.5)/(1-1.5*pz))^@pow-@c elseif @v==10 fz2=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c elseif @v==11 fz2=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c elseif @v==12 fz2=((pz^2-0.5)/(1-0.5*pz))^@pow-@c elseif @v==13 fz2=((pz^2-1)/(pz+1))^@pow-@c elseif @v==14 fz2=((pz^@pow-1)/(@pow*pz^(@pow-1)))^@pow-@c elseif @v==15 fz2=(pz-(pz^@pow-1)/(@pow*pz^(@pow-1)))^@pow-@c elseif @v==16 fz2=((pz^2-1i)/(pz+1i))^@pow-@c elseif @v==17 fz2=((pz^2-1)/(2*pz-2))^@pow-@c elseif @v==18 fz2=pz^@pow+sqr(pz)-@c elseif @v==19 fz2=(pz^(2*@pow)-1/pz-1)/pz^@pow-@c elseif @v==20 fz2=((pz-1)^2/(pz+1))^@pow-@c elseif @v==21 fz2=((pz+1)^2/(pz-1))^@pow-@c elseif @v==22 fz2=((pz-1)^3/(pz+1)^2)^@pow-@c elseif @v==23 fz2=((pz+1)^3/(pz-1)^2)^@pow-@c elseif @v==24 fz2=((pz^2-2)/(pz+2))^@pow-@c else fz2=((pz^2+2)/(pz-2))^@pow-@c endif return pz return z1 return z2 return fz1 return fz2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz2|<@p_bailout) return bail endfunc private: complex z1 complex z2 complex fz1 complex fz2 default: title="Modified Secant 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26" endparam param sec1 caption="Secant Parameter 1" default=(-0.7,0) endparam param sec2 caption="Secant Parameter 2" default=(0.8,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_ModifiedSecant5(common.ulb:ConvergentFormula) { ;https://tinyurl.com/y2wo5tc8 public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@ms1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow-@c fz0=z0^@pow-@c elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c elseif @v==3 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c elseif @v==4 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c elseif @v==5 fz=((pz^2-1)/(pz+1))^@pow-@c fz0=((z0^2-1)/(z0+1))^@pow-@c elseif @v==6 fz=((pz^3-1)/(pz^2+1))^@pow-@c fz0=((z0^3-1)/(z0^2+1))^@pow-@c elseif @v==7 fz=pz^@pow*(pz-2)/(1-2*pz)+pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)+z0^(@pow-1)*(z0-2)/(1-2*z0)-@c elseif @v==8 fz=pz^@pow-pz^@pow*(pz+0.75)/(1+0.75*pz)-@c fz0=z0^@pow-z0^@pow*(z0+0.75)/(1+0.75*z0)-@c elseif @v==9 fz=pz^@pow*(pz-2)/(1-2*pz)-pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)-z0^(@pow-1)*(z0-2)/(1-2*z0)-@c elseif @v==10 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)+z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c elseif @v==11 fz=pz^@pow+tan(pz)^@pow-@c fz0=z0^@pow+tan(z0)^@pow-@c elseif @v==12 fz=pz^@pow+tanh(pz)^@pow-@c fz0=z0^@pow+tanh(z0)^@pow-@c elseif @v==13 fz=pz^@pow+pz^@pow*(pz-2.5)/(1-2.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0-2.5)/(1-2.5*z0)-@c elseif @v==14 fz=pz^@pow+pz^@pow*(pz+4)/(1+4*pz)-@c fz0=z0^@pow+z0^@pow*(z0+4)/(1+4*z0)-@c elseif @v==15 fz=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0-0.5)/(1-0.5*z0)-@c elseif @v==16 fz=pz^@pow+pz^@pow*(pz+0.5)/(1+0.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0+0.5)/(1+0.5*z0)-@c elseif @v==17 fz=pz^@pow+pz^@pow*(pz+2.5)/(1+2.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0+2.5)/(1+2.5*z0)-@c elseif @v==18 fz=((pz^2-2)/(pz+2))^@pow-@c fz0=((z0^2-2)/(z0+2))^@pow-@c elseif @v==19 fz=((pz^2+2)/(pz+1))^@pow-@c fz0=((z0^2+2)/(z0+1))^@pow-@c elseif @v==20 fz=((pz^2-0.5)/(pz+0.5))^@pow-@c fz0=((z0^2-0.5)/(z0+0.5))^@pow-@c elseif @v==21 fz=((pz^3-1)/(pz^2+0.5))^@pow-@c fz0=((z0^3-1)/(z0^2+0.5))^@pow-@c elseif @v==22 fz=0.5*pz^@pow+1.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow+1.5*z0^(@pow-1)-@c elseif @v==23 fz=0.5*pz^@pow-1.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow-1.5*z0^(@pow-1)-@c elseif @v==24 fz=0.5*pz^@pow-2.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow-2.5*z0^(@pow-1)-@c elseif @v==25 fz=2.5*pz^@pow-2.5*pz^(@pow-1)-@c fz0=2.5*z0^@pow-2.5*z0^(@pow-1)-@c elseif @v==26 fz=2.5*pz^@pow+2.5*pz^(@pow-1)-@c fz0=2.5*z0^@pow+2.5*z0^(@pow-1)-@c else fz=5*pz^@pow+5*pz^(@pow-1)-@c fz0=5*z0^@pow+5*z0^(@pow-1)-@c endif pz=pz-@ms3*fz*(pz-z0)*(fz-fz0)/((fz-fz0)^2-@ms2*fz*(pz-z0)^2) z0=m_zOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Modified Secant 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" endparam param ms1 caption="Modsec Parameter 1" default=(0,0) endparam param ms2 caption="Modsec Parameter 2" default=(1,0) endparam param ms3 caption="Modsec Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_NewtonSecant(common.ulb:ConvergentFormula) { ;http://www.math.bas.bg/infres/MathBalk/MB-26/MB-26-369-376.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@ns1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow-@c f1z0=@pow*z0^(@pow-1) a=pz-@ns2*fz/f1z0 fa=a^@pow-@c elseif @v==1 fz=(pz+1/pz)^@pow-@c f1z0=@pow*(1-1/z0^2)*(z0+1/z0)^(@pow-1) a=pz-@ns2*fz/f1z0 fa=(a+1/a)^@pow-@c elseif @v==2 fz=(pz-1/pz)^@pow-@c f1z0=@pow*(1+1/z0^2)*(z0-1/z0)^(@pow-1) a=pz-@ns2*fz/f1z0 fa=(a-1/a)^@pow-@c elseif @v==3 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1z0=z0^(@pow-1)*(@pow*(-2*z0^2/3+13*z0/9-2/3)-5*z0/9)/(2/3-z0)^2 a=pz-@ns2*fz/f1z0 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==4 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1z0=z0^(@pow-1)*(@pow*(-2*z0^2+5*z0-2)+3*z0)/(2-z0)^2 a=pz-@ns2*fz/f1z0 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==5 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1z0=@pow*z0^(@pow-1)-(@pow-1)*z0^(@pow-2)-(@pow-2)*z0^(@pow-3) a=pz-@ns2*fz/f1z0 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c else fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1z0=@pow*z0^(@pow-1)+(@pow-1)*z0^(@pow-2)+(@pow-2)*z0^(@pow-3) a=pz-@ns2*fz/f1z0 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c endif pz=pz-@ns3*fz*(pz-a)/(fz-fa) z0=m_zOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Newton/Secant" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param ns1 caption="NS Parameter 1" default=(0.01,0) endparam param ns2 caption="NS Parameter 2" default=(1,0) endparam param ns3 caption="NS Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_ModifiedSecant6(common.ulb:ConvergentFormula) { ;http://downloads.hindawi.com/journals/mse/2015/502854.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@ms1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow-@c f1z=@pow*pz^(@pow-1) fz0=z0^@pow-@c elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1z=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1z=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c elseif @v==3 fz=(pz+1/pz)^@pow-@c f1z=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) fz0=(z0+1/z0)^@pow-@c elseif @v==4 fz=(pz-1/pz)^@pow-@c f1z=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) fz0=(z0-1/z0)^@pow-@c elseif @v==5 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1z=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c else fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1z=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c endif pz=pz-@ms2*fz*(fz-fz0)*(pz-z0)/(fz*(fz-fz0)-fz0*f1z*(pz-z0)) z0=m_zOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Modified Secant 6" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param ms1 caption="Modsec Parameter 1" default=(0.001,0) endparam param ms2 caption="Modsec Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_ModifiedSecant7(common.ulb:ConvergentFormula) { ;http://article.sapub.org/10.5923.j.ajcam.20180802.02.html public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@ms1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow-@c f1z=@pow*pz^(@pow-1) f1z0=@pow*z0^(@pow-1) elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1z=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) f1z0=@pow*z0^(@pow-1)-(@pow-1)*z0^(@pow-2)-(@pow-2)*z0^(@pow-3) elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1z=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) f1z0=@pow*z0^(@pow-1)+(@pow-1)*z0^(@pow-2)+(@pow-2)*z0^(@pow-3) elseif @v==3 fz=pz^@pow+1/pz^@pow-@c f1z=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) f1z0=@pow*z0^(@pow-1)-@pow*z0^(-@pow-1) elseif @v==4 fz=pz^@pow-1/pz^@pow-@c f1z=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) f1z0=@pow*z0^(@pow-1)+@pow*z0^(-@pow-1) elseif @v==5 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1z=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 f1z0=z0^(@pow-1)*(@pow*(-2*z0^2/3+13*z0/9-2/3)-5*z0/9)/(2/3-z0)^2 elseif @v==6 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1z=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 f1z0=z0^(@pow-1)*(@pow*(-2*z0^2+5*z0-2)+3*z0)/(2-z0)^2 elseif @v==7 fz=(pz+1/pz)^@pow-@c f1z=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) f1z0=@pow*(1-1/z0^2)*(z0+1/z0)^(@pow-1) else fz=(pz-1/pz)^@pow-@c f1z=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) f1z0=@pow*(1+1/z0^2)*(z0-1/z0)^(@pow-1) endif pz=pz-@ms2*2*fz*f1z*(pz-z0)/(2*f1z^2*(pz-z0)-fz*(f1z-f1z0)) z0=m_zOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz default: title="Modified Secant 7" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param ms1 caption="Modsec Parameter 1" default=(0,0) endparam param ms2 caption="Modsec Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_MultPlug(common.ulb:Formula) { public: import "Common.ulb" import "Standard.ulb" complex func Init(complex pz) f1=new @formulaClass1(0) f2=new @formulaClass2(0) pz=f1.Init(pz)+f2.Init(pz) return pz endfunc complex func Iterate(complex pz) pz=f1.Iterate(pz)*f2.Iterate(pz) return pz endfunc bool func IsBailedOut(complex pz) return f1.IsBailedOut(pz) && f2.IsBailedOut(pz) endfunc private: Formula f1 Formula f2 default: title="Mult Plug" int param version caption="Version" default=100 visible=@version<100 endparam Formula param formulaClass1 caption="Fractal Formula 1" default=Standard_Mandelbrot endparam Formula param formulaClass2 caption="Fractal Formula 2" default=Standard_Julia endparam param p_power visible=false endparam } class OM_AddPlug(common.ulb:Formula) { public: import "Common.ulb" import "Standard.ulb" complex func Init(complex pz) f1=new @formulaClass1(0) f2=new @formulaClass2(0) pz=f1.Init(pz)+f2.Init(pz) return pz endfunc complex func Iterate(complex pz) pz=f1.Iterate(pz)+f2.Iterate(pz) return pz endfunc bool func IsBailedOut(complex pz) return f1.IsBailedOut(pz) && f2.IsBailedOut(pz) endfunc private: Formula f1 Formula f2 default: title="Add Plug" int param version caption="Version" default=100 visible=@version<100 endparam Formula param formulaClass1 caption="Fractal Formula 1" default=Standard_Magnet1Mandelbrot endparam Formula param formulaClass2 caption="Fractal Formula 2" default=Standard_Julia endparam param p_power visible=false endparam } class OM_AltPlug(common.ulb:Formula) { public: import "Common.ulb" import "Standard.ulb" complex func Init(complex pz) f1=new @formulaClass1(0) f2=new @formulaClass2(0) pz=f1.Init(pz)+f2.Init(pz) i=@v return pz endfunc complex func Iterate(complex pz) if i%2==0 pz=f1.Iterate(pz) else pz=f2.Iterate(pz) endif i=i+1 return pz endfunc bool func IsBailedOut(complex pz) return f1.IsBailedOut(pz) && f2.IsBailedOut(pz) endfunc private: Formula f1 Formula f2 int i default: title="Alt Plug" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="Formula 1 first""Formula 2 first" default=0 endparam Formula param formulaClass1 caption="Fractal Formula 1" default=Standard_Mandelbrot endparam Formula param formulaClass2 caption="Fractal Formula 2" default=Standard_Julia endparam param p_power visible=false endparam } class OM_ColPlugDual(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) import "common.ulb" import "om.ulb" c1=new @coloringClass1(0) c2=new @coloringClass2(0) c1.Init(pz,ppixel) c2.Init(pz,ppixel) i=@v endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @alt if i%2==0 c1.Iterate(pz) else c2.Iterate(pz) endif i=i+1 else c1.Iterate(pz) c2.Iterate(pz) endif endfunc float func ResultIndex(complex pz) index=(c1.ResultIndex(pz)+c2.ResultIndex(pz))/2 m_Solid=c1.IsSolid() || c2.IsSolid() return index endfunc private: GradientColoring c1 GradientColoring c2 int i float index default: title="Col Plug Dual" int param version caption="Version" default=100 visible=@version<100 endparam param alt caption="Alternate" default=false endparam param v caption="Variant" enum="Coloring 1 first""Coloring 2 first" visible=@alt==true endparam GradientColoring param coloringClass1 caption="Coloring Algorithm 1" default=OM_Kalgor endparam GradientColoring param coloringClass2 caption="Coloring Algorithm 2" default=OM_KalgorValmyst endparam param p_power visible=false endparam } class OM_HamChunLeeNova2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sp else pz=@nf(pz) endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 fa=a^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c endif if @st==0 pz=a-@hclp4*(((@hclp1*f+@hclp2*f1)/(@hclp3*f+@hclp2*f1))*(fa/f1))+@nf(fpixel) else pz=a-@hclp4*(((@hclp1*f+@hclp2*f1)/(@hclp3*f+@hclp2*f1))*(fa/f1))+@np*@nf(fpixel) endif return pz endfunc private: complex fpixel default: title="Ham-Chun-Lee Nova 2" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param hclp1 caption="HCL Parameter 1" default=(3,0) endparam param hclp2 caption="HCL Parameter 2" default=(-0.5,0) endparam param hclp3 caption="HCL Parameter 3" default=(1,0) endparam param hclp4 caption="HCL Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(-0.5,0) visible= @st==0 endparam param np caption="Nova Parameter" default=(1,0) visible= @st==1 endparam func nf caption="Nova Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_HamChunLeeNova3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sp else pz=@nf(pz) endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==2 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) b=pz-2*f/(f1+f1a) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==3 f=pz^@pow+1/pz^@pow-@c f1=@pow*pz^(@pow-1)-@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)-@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow+1/b^@pow-@c else f=pz^@pow-1/pz^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz^(-@pow-1) a=pz-f/f1 f1a=@pow*a^(@pow-1)+@pow*a^(-@pow-1) b=pz-2*f/(f1+f1a) fb=b^@pow-1/b^@pow-@c endif if @st==0 pz=b-@hclp*(2*f1a^2/(f1^2-4*f1*f1a+5*f1a^2))*(fb/f1)+@nf(fpixel) else pz=b-@hclp*(2*f1a^2/(f1^2-4*f1*f1a+5*f1a^2))*(fb/f1)+@np*@nf(fpixel) endif return pz endfunc private: complex fpixel default: title="Ham-Chun-Lee Nova 3" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p+1/z^p-c""z^p-1/z^p-c" endparam param hclp caption="HCL Parameter" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(-0.5,0) visible= @st==0 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==1 endparam func nf caption="Nova Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ModifiedSteffensenNova(common.ulb:ConvergentFormula) { ;https://tinyurl.com/y5plbk7n public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@nf(pz) else pz=@start endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c fa=(pz+f)^@pow-@c elseif @v==1 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fa=(pz+f)^@pow-(pz+f)^(@pow-1)-(pz+f)^(@pow-2)-@c else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fa=(pz+f)^@pow+(pz+f)^(@pow-1)+(pz+f)^(@pow-2)-@c endif if @st==0 pz=pz-@p2*f^2/(@p1*f^2-f+fa)+@np*@nf(fpixel) else pz=pz-@p2*f^2/(@p1*f^2-f+fa)+@nf(fpixel) endif return pz endfunc private: complex fpixel default: title="Modified Steffensen Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="z^p-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param p1 caption="MS Parameter 1" default=(1,0) endparam param p2 caption="MS Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param start caption="Start Parameter" default=(-0.5,0) visible=@st==1 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==0 endparam func nf caption="Nova Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(0.7,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ModifiedSecant5Nova(common.ulb:ConvergentFormula) { ;https://tinyurl.com/y5plbk7n public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@nf(pz) else pz=@sp endif z0=@ms1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 fz=pz^@pow-@c fz0=z0^@pow-@c elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c elseif @v==3 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c elseif @v==4 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c elseif @v==5 fz=((pz^2-1)/(pz+1))^@pow-@c fz0=((z0^2-1)/(z0+1))^@pow-@c elseif @v==6 fz=((pz^3-1)/(pz^2+1))^@pow-@c fz0=((z0^3-1)/(z0^2+1))^@pow-@c elseif @v==7 fz=pz^@pow*(pz-2)/(1-2*pz)+pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)+z0^(@pow-1)*(z0-2)/(1-2*z0)-@c elseif @v==8 fz=pz^@pow-pz^@pow*(pz+0.75)/(1+0.75*pz)-@c fz0=z0^@pow-z0^@pow*(z0+0.75)/(1+0.75*z0)-@c elseif @v==9 fz=pz^@pow*(pz-2)/(1-2*pz)-pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)-z0^(@pow-1)*(z0-2)/(1-2*z0)-@c elseif @v==10 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)+z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c elseif @v==11 fz=pz^@pow+tan(pz)^@pow-@c fz0=z0^@pow+tan(z0)^@pow-@c elseif @v==12 fz=pz^@pow+tanh(pz)^@pow-@c fz0=z0^@pow+tanh(z0)^@pow-@c elseif @v==13 fz=pz^@pow+pz^@pow*(pz-2.5)/(1-2.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0-2.5)/(1-2.5*z0)-@c elseif @v==14 fz=pz^@pow+pz^@pow*(pz+4)/(1+4*pz)-@c fz0=z0^@pow+z0^@pow*(z0+4)/(1+4*z0)-@c elseif @v==15 fz=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0-0.5)/(1-0.5*z0)-@c elseif @v==16 fz=pz^@pow+pz^@pow*(pz+0.5)/(1+0.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0+0.5)/(1+0.5*z0)-@c elseif @v==17 fz=pz^@pow+pz^@pow*(pz+2.5)/(1+2.5*pz)-@c fz0=z0^@pow+z0^@pow*(z0+2.5)/(1+2.5*z0)-@c elseif @v==18 fz=((pz^2-2)/(pz+2))^@pow-@c fz0=((z0^2-2)/(z0+2))^@pow-@c elseif @v==19 fz=((pz^2+2)/(pz+1))^@pow-@c fz0=((z0^2+2)/(z0+1))^@pow-@c elseif @v==20 fz=((pz^2-0.5)/(pz+0.5))^@pow-@c fz0=((z0^2-0.5)/(z0+0.5))^@pow-@c elseif @v==21 fz=((pz^3-1)/(pz^2+0.5))^@pow-@c fz0=((z0^3-1)/(z0^2+0.5))^@pow-@c elseif @v==22 fz=0.5*pz^@pow+1.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow+1.5*z0^(@pow-1)-@c elseif @v==23 fz=0.5*pz^@pow-1.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow-1.5*z0^(@pow-1)-@c elseif @v==24 fz=0.5*pz^@pow-2.5*pz^(@pow-1)-@c fz0=0.5*z0^@pow-2.5*z0^(@pow-1)-@c elseif @v==25 fz=2.5*pz^@pow-2.5*pz^(@pow-1)-@c fz0=2.5*z0^@pow-2.5*z0^(@pow-1)-@c elseif @v==26 fz=2.5*pz^@pow+2.5*pz^(@pow-1)-@c fz0=2.5*z0^@pow+2.5*z0^(@pow-1)-@c else fz=5*pz^@pow+5*pz^(@pow-1)-@c fz0=5*z0^@pow+5*z0^(@pow-1)-@c endif pz=pz-@ms3*fz*(pz-z0)*(fz-fz0)/((fz-fz0)^2-@ms2*fz*(pz-z0)^2) if @st==0 z0=m_ZOld+@np*@nf(fpixel) else z0=m_ZOld+@nf(fpixel) endif return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex fpixel complex z0 complex fz default: title="Modified Secant 5 Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28" endparam param ms1 caption="Modsec Parameter 1" default=(0,0) endparam param ms2 caption="Modsec Parameter 2" default=(1,0) endparam param ms3 caption="Modsec Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(0.0001,0) visible=@st==1 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==0 endparam func nf caption="Nova Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_NewtonSecantNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@nf(pz) else pz=@sp endif z0=@ns1 fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) if @v==0 fz=pz^@pow-@c f1z0=@pow*z0^(@pow-1) if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=a^@pow-@c elseif @v==1 fz=(pz+1/pz)^@pow-@c f1z0=@pow*(1-1/z0^2)*(z0+1/z0)^(@pow-1) if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=(a+1/a)^@pow-@c elseif @v==2 fz=(pz-1/pz)^@pow-@c f1z0=@pow*(1+1/z0^2)*(z0-1/z0)^(@pow-1) if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=(a-1/a)^@pow-@c elseif @v==3 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1z0=z0^(@pow-1)*(@pow*(-2*z0^2/3+13*z0/9-2/3)-5*z0/9)/(2/3-z0)^2 if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==4 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1z0=z0^(@pow-1)*(@pow*(-2*z0^2+5*z0-2)+3*z0)/(2-z0)^2 if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==5 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1z0=@pow*z0^(@pow-1)-(@pow-1)*z0^(@pow-2)-(@pow-2)*z0^(@pow-3) if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c else fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1z0=@pow*z0^(@pow-1)+(@pow-1)*z0^(@pow-2)+(@pow-2)*z0^(@pow-3) if @st==0 a=pz-@ns2*fz/f1z0+@np*@nf(fpixel) else a=pz-@ns2*fz/f1z0+@nf(fpixel) endif fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c endif pz=pz-@ns3*fz*(pz-a)/(fz-fa) z0=m_ZOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex fpixel complex z0 complex fz default: title="Newton/Secant Nova" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param ns1 caption="NS Parameter 1" default=(0.01,0) endparam param ns2 caption="NS Parameter 2" default=(1,0) endparam param ns3 caption="NS Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@st==1 endparam param np caption="Nova Parameter" default=(1,0) visible=@st==0 endparam func nf caption="Nova Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_3AltPlug(common.ulb:Formula) { public: import "Common.ulb" import "om.ulb" complex func Init(complex pz) f1=new @formulaClass1(0) f2=new @formulaClass2(0) f3=new @formulaClass3(0) pz=f1.Init(pz)+f2.Init(pz)+f3.Init(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @av==0 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==1 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==2 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==3 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==4 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif else if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif endif return pz endfunc bool func IsBailedOut(complex pz) return f1.IsBailedOut(pz) && f2.IsBailedOut(pz) && f3.IsBailedOut(pz) endfunc private: Formula f1 Formula f2 Formula f3 int i default: title="3Alt Plug" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="123""132""213""231""312""321" endparam Formula param formulaClass1 caption="Fractal Formula 1" default=OM_ValmystX1 endparam Formula param formulaClass2 caption="Fractal Formula 2" default=OM_Koskex endparam Formula param formulaClass3 caption="Fractal Formula 3" default=OM_Munster17M endparam param p_power visible=false endparam } class OM_4AltPlug(common.ulb:Formula) { public: import "Common.ulb" import "om.ulb" complex func Init(complex pz) f1=new @formulaClass1(0) f2=new @formulaClass2(0) f3=new @formulaClass3(0) f4=new @formulaClass4(0) pz=f1.Init(pz)+f2.Init(pz)+f3.Init(pz)+f4.Init(pz) i=0 return pz endfunc complex func Iterate(complex pz) if @av==0 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==1 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==2 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==3 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==4 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==5 if i==0 pz=f1.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==6 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==7 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==8 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==9 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==10 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==11 if i==0 pz=f2.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==12 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==13 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==14 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f4.Iterate(pz) i=0 endif elseif @av==15 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f4.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==16 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==17 if i==0 pz=f3.Iterate(pz) i=i+1 elseif i==1 pz=f4.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==18 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==19 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f1.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==20 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f3.Iterate(pz) i=0 endif elseif @av==21 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f2.Iterate(pz) i=i+1 elseif i==2 pz=f3.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif elseif @av==22 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f1.Iterate(pz) i=i+1 else pz=f2.Iterate(pz) i=0 endif elseif @av==23 if i==0 pz=f4.Iterate(pz) i=i+1 elseif i==1 pz=f3.Iterate(pz) i=i+1 elseif i==2 pz=f2.Iterate(pz) i=i+1 else pz=f1.Iterate(pz) i=0 endif endif return pz endfunc bool func IsBailedOut(complex pz) return f1.IsBailedOut(pz) && f2.IsBailedOut(pz) && f3.IsBailedOut(pz) && f4.IsBailedOut(pz) endfunc private: Formula f1 Formula f2 Formula f3 Formula f4 int i default: title="4Alt Plug" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1234""1243""1324""1342""1423""1432"\ "2134""2143""2314""2341""2413""2431"\ "3124""3142""3214""3241""3412""3421"\ "4123""4132""4213""4231""4312""4321" endparam Formula param formulaClass1 caption="Fractal Formula 1" default=OM_ValmystX1 endparam Formula param formulaClass2 caption="Fractal Formula 2" default=OM_Koskex endparam Formula param formulaClass3 caption="Fractal Formula 3" default=OM_Munster17M endparam Formula param formulaClass4 caption="Fractal Formula 4" default=OM_Munster17M endparam param p_power visible=false endparam } class OM_ModifiedSecant8(common.ulb:ConvergentFormula) { complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) f=(0,0) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=(a+1/a)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=(a-1/a)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==5 f=pz^@pow+pz^(@pow-2)+pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)+(@pow-2)*pz^(@pow-3)+(@pow-4)*pz^(@pow-5) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow+a^(@pow-2)+a^(@pow-4)-@c elseif @v==6 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow-a^(@pow-2)-a^(@pow-4)-@c elseif @v==7 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2-pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=a^@pow*(a-1.5)/(1-1.5*a)-a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==8 f=((pz^2-1)/(2*pz-2))^@pow-@c f1=@pow*(2*pz/(2*pz-2)-2*(pz^2-1)/(2*pz-2)^2)*((pz^2-1)/(2*pz-2))^(@pow-1) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=((a^2-1)/(2*a-2))^@pow-@c elseif @v==9 f=(pz^2/(2*pz-1))^@pow-@c f1=2*@pow*(pz-1)*(pz^2/(2*pz-1))^(@pow-1)/pz^3 a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=(a^2/(2*a-1))^@pow-@c else f=((pz^2+1)/(2*pz))^@pow-@c f1=2^(-@pow)*@pow*(pz^2-1)*(pz+1/pz)^@pow/(pz^3+pz) a=pz-@p1*f*(f-f1)/(f^2-f1^2) fa=((a^2+1)/(2*a))^@pow-@c endif pz=pz-@p2*f*(pz-a)/(f-fa) return pz endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|f|<@p_bailout) return bail endfunc private: complex f default: title="Modified Secant 8" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""(z+1/z)^p-c""(z-1/z)^p-c""z^p*(z-1.5)/(1-1.5*z)-c""z^p*(z-0.5)/(1-0.5*z)-c"\ "z^p+z^(p-2)+z^(p-4)-c""z^p-z^(p-2)-z^(p-4)-c""z^p*(z-1.5)/(1-1.5*z)-z^p*(z-0.5)/(1-0.5*z)-c"\ "((z^2-1)/(2*z-2))^p-c""(z^2/(2*z-1))^p-c""((z^2+1)/(2*z))^a-c" endparam param p1 caption="Modsec Parameter 1" default=(1,0) endparam param p2 caption="Modsec Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_NewtonSecant2(common.ulb:ConvergentFormula) { ;http://www.ccms.or.kr/data/pdfpaper/jcms23_4/23_4_845.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) m=@p1 k=0 f=(0,0) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if m==1 k=1 endif if m>=2 k=(m/(m-1))^(m-1) endif if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@p2*f/f1 fa=a^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@p2*f/f1 fa=(a+1/a)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@p2*f/f1 fa=(a-1/a)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p2*f/f1 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p2*f/f1 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==5 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@p2*f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c elseif @v==6 f=pz^@pow+pz^(@pow-1)-pz^(@pow-2)+pz^(@pow-3)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3)+(@pow-3)*pz^(@pow-4) a=pz-@p2*f/f1 fa=a^@pow+a^(@pow-1)-a^(@pow-2)+a^(@pow-3)-@c elseif @v==7 f=pz^@pow+pz^(@pow-1)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2) a=pz-@p2*f/f1 fa=a^@pow+a^(@pow-1)-@c elseif @v==8 f=pz^@pow-pz^(@pow-1)+pz^(@pow-2)-pz^(@pow-3)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3)-(@pow-3)*pz^(@pow-4) a=pz-@p2*f/f1 fa=a^@pow-a^(@pow-1)+a^(@pow-2)-a^(@pow-3)-@c elseif @v==9 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2 a=pz-@p2*f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-@c elseif @v==10 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@p2*f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)+a^(@pow-2)-@c elseif @v==11 f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p2*f/f1 fa=a^@pow+a^@pow*(a-1.5)/(1-1.5*a)-@c else f=pz^@pow-pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p2*f/f1 fa=a^@pow-a^@pow*(a-1.5)/(1-1.5*a)-@c endif pz=pz-@p3*f^2/(f1*(f-k*fa)) return pz endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|f|<@p_bailout) return bail endfunc private: complex f float k int m default: title="Newton/Secant 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param p1 caption="NS Parameter 1" default=3 min=1 endparam param p2 caption="NS Parameter 2" default=(1,0) endparam param p3 caption="NS Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_Shengguo(common.ulb:ConvergentFormula) { ;http://www.jnmas.org/jnmas6-3.pdf public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) m=@sp1 pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1) elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=@pow*(1-1/a^2)*(a+1/a)^(@pow-1) elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=@pow*(1+1/a^2)*(a-1/a)^(@pow-1) elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=a^(@pow-1)*(@pow*(-2*a^2/3+13*a/9-2/3)-5*a/9)/(2/3-a)^2 elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=a^(@pow-1)*(@pow*(-2*a^2+5*a-2)+3*a)/(2-a)^2 elseif @v==5 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) else f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@sp3*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) endif pz=pz-@sp2*(f/f1)*(((m/2)*(m-2)*(m/(m+2))^(-m)*f1a-(m^2/2)*f1)/(f1-(m/(m+2))^(-m)*f1a)) return pz endfunc default: title="Shengguo" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""(z+1/z)^p-c""(z-1/z)^p-c""z^p*(z-1.5)/(1-1.5*z)-c"\ "z^p*(z-0.5)/(1-0.5*z)-c""z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c" endparam param sp1 caption="Shengguo Parameter 1" default=(2.05,0) endparam param sp2 caption="Shengguo Parameter 2" default=(1,0) endparam param sp3 caption="Shengguo Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Thukral2(common.ulb:ConvergentFormula) { ;http://article.sapub.org/10.5923.j.ajcam.20150502.02.html public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 m=@tp1 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@tp2*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1) k1=m^3-4*m+8 k2=(m+2)^2*(m/(m+2))^m*(2*(m-1)-(m+2)*(m/(m+2))^m) b=pz-@tp3*(m/8)*(k1*f/f1-k2*((m-1)-k2*f1/f1a)*(f/f1a)) fb=b^@pow-@c f1b=@pow*b^(@pow-1) f2b=(@pow-1)*@pow*b^(@pow-2) elseif @v==1 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@tp2*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) k1=m^3-4*m+8 k2=(m+2)^2*(m/(m+2))^m*(2*(m-1)-(m+2)*(m/(m+2))^m) b=pz-@tp3*(m/8)*(k1*f/f1-k2*((m-1)-k2*f1/f1a)*(f/f1a)) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c f1b=@pow*b^(@pow-1)+(@pow-1)*b^(@pow-2)+(@pow-2)*b^(@pow-3) f2b=(@pow-1)*@pow*b^(@pow-2)+(@pow-2)*(@pow-1)*b^(@pow-3)+(@pow-3)*(@pow-2)*b^(@pow-4) else f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@tp2*(2*m/(m+2))*(f/f1) f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) k1=m^3-4*m+8 k2=(m+2)^2*(m/(m+2))^m*(2*(m-1)-(m+2)*(m/(m+2))^m) b=pz-@tp3*(m/8)*(k1*f/f1-k2*((m-1)-k2*f1/f1a)*(f/f1a)) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c f1b=@pow*b^(@pow-1)-(@pow-1)*b^(@pow-2)-(@pow-2)*b^(@pow-3) f2b=(@pow-1)*@pow*b^(@pow-2)-(@pow-2)*(@pow-1)*b^(@pow-3)-(@pow-3)*(@pow-2)*b^(@pow-4) endif pz=b-@tp4*((m/2)*(m+1)*(fb/f1b)-(1/2)*(m-1)^2*(f1b/f2b)) return pz endfunc default: title="Thukral 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""z^p+z^(p-1)+z^(p-2)-c""z^p-z^(p-1)-z^(p-2)-c" endparam param tp1 caption="Thukral Parameter 1" default=(1.15,0) endparam param tp2 caption="Thukral Parameter 2" default=(1,0) endparam param tp3 caption="Thukral Parameter 3" default=(1,0) endparam param tp4 caption="Thukral Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_CNKS(common.ulb:ConvergentFormula) { ;Modification of formula from: ;https://www.researchgate.net/publication/260230087_Choosing_weight_functions_in_iterative_methods_for_simple_roots public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@p4*(2/3)*f/f1 f1a=@pow*(1-1/a^2)*(a+1/a)^(@pow-1) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=(b+1/b)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@p4*(2/3)*f/f1 f1a=@pow*(1+1/a^2)*(a-1/a)^(@pow-1) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=(b-1/b)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p4*(2/3)*f/f1 f1a=a^(@pow-1)*(@pow*(-2*a^2/3+13*a/9-2/3)-5*a/9)/(2/3-a)^2 t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p4*(2/3)*f/f1 f1a=a^(@pow-1)*(@pow*(-2*a^2+5*a-2)+3*a)/(2-a)^2 t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==5 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==7 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)-(@pow-2)*a^(@pow-3)-(@pow-4)*a^(@pow-5) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow-b^(@pow-2)-b^(@pow-4)-@c elseif @v==8 f=pz^@pow+pz^(@pow-2)+pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)+(@pow-2)*pz^(@pow-3)+(@pow-4)*pz^(@pow-5) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)+(@pow-2)*a^(@pow-3)+(@pow-4)*a^(@pow-5) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow+b^(@pow-2)+b^(@pow-4)-@c elseif @v==9 f=pz^@pow+pz^(@pow-1)-pz^(@pow-4)-pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-4)*pz^(@pow-5)-(@pow-5)*pz^(@pow-6) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)+(@pow-1)*a^(@pow-2)-(@pow-4)*a^(@pow-5)-(@pow-5)*a^(@pow-6) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow+b^(@pow-1)-b^(@pow-4)-b^(@pow-5)-@c elseif @v==10 f=pz^@pow-pz^(@pow-1)+pz^(@pow-4)+pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)+(@pow-4)*pz^(@pow-5)+(@pow-5)*pz^(@pow-6) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)-(@pow-1)*a^(@pow-2)+(@pow-4)*a^(@pow-5)+(@pow-5)*a^(@pow-6) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow-b^(@pow-1)+b^(@pow-4)+b^(@pow-5)-@c elseif @v==11 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)-(a^(@pow-1)*(@pow*(-2*a^2+5*a-2)+3*a))/(2-a)^2-(@pow-1)*a^(@pow-2)-(@pow-2)*a^(@pow-3) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow-b^@pow*(b-0.5)/(1-0.5*b)-b^(@pow-1)-b^(@pow-2)-@c elseif @v==12 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)+(a^(@pow-1)*(@pow*(-2*a^2+5*a-2)+3*a))/(2-a)^2+(@pow-1)*a^(@pow-2)+(@pow-2)*a^(@pow-3) t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow+b^@pow*(b-0.5)/(1-0.5*b)+b^(@pow-1)+b^(@pow-2)-@c else f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p4*(2/3)*f/f1 f1a=@pow*a^(@pow-1)+a^(@pow-1)*(@pow*(-2*a^2/3+13*a/9-2/3)-5*a/9)/(2/3-a)^2 t=f1a/f1 q=(3*t+1)/(6*t-2) b=pz-@p5*q*f/f1 fb=b^@pow+b^@pow*(b-1.5)/(1-1.5*b)-@c endif w=(1-3*t)/(@p1+@p2*t+@p3*t^2) pz=b-@p6*(fb/f)*(f/f1)*w return pz endfunc default: title="CNKS" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""(z+1/z)^p-c""(z-1/z)^p-c""z^p*(z-1.5)/(1-1.5*z)-c""z^p*(z-0.5)/(1-0.5*z)-c"\ "z^p-z^(p-1)-z^(p-2)-c""z^p+z^(p-1)+z^(p-2)-c""z^p-z^(p-2)-z^(p-4)-c""z^p+z^(p-2)+z^(p-4)-c"\ "z^p+z^(p-1)-z^(p-4)-z^(p-5)-c""z^p-z^(p-1)+z^(p-4)+z^(p-5)-c""z^p-z^p*(z-0.5)/(1-0.5*z)-z^(p-1)-z^(p-2)-c"\ "z^p+z^p*(z-0.5)/(1-0.5*z)+z^(p-1)+z^(p-2)-c""z^p+z^p*(z-1.5)/(1-1.5*z)-c" endparam param p1 caption="CNKS Parameter 1" default=(5,0) endparam param p2 caption="CNKS Parameter 2" default=(-8,0) endparam param p3 caption="CNKS Parameter 3" default=(1,0) endparam param p4 caption="CNKS Parameter 4" default=(-0.25,0) endparam param p5 caption="CNKS Parameter 5" default=(1,0) endparam param p6 caption="CNKS Parameter 6" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_Cordero(common.ulb:ConvergentFormula) { ;http://downloads.hindawi.com/archive/2012/346420.pdf ;(6.1) public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@p4*f/f1 fa=a^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@p4*f/f1 fa=(a+1/a)^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b+1/b)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@p4*f/f1 fa=(a-1/a)^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b-1/b)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p4*f/f1 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p4*f/f1 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==5 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@p4*f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@p4*f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==7 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5) a=pz-@p4*f/f1 fa=a^@pow-a^(@pow-2)-a^(@pow-4)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-b^(@pow-2)-b^(@pow-4)-@c elseif @v==8 f=pz^@pow+pz^(@pow-2)+pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)+(@pow-2)*pz^(@pow-3)+(@pow-4)*pz^(@pow-5) a=pz-@p4*f/f1 fa=a^@pow+a^(@pow-2)+a^(@pow-4)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^(@pow-2)+b^(@pow-4)-@c elseif @v==9 f=pz^@pow+pz^(@pow-1)-pz^(@pow-4)-pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-4)*pz^(@pow-5)-(@pow-5)*pz^(@pow-6) a=pz-@p4*f/f1 fa=a^@pow+a^(@pow-1)-a^(@pow-4)-a^(@pow-5)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^(@pow-1)-b^(@pow-4)-b^(@pow-5)-@c elseif @v==10 f=pz^@pow-pz^(@pow-1)+pz^(@pow-4)+pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)+(@pow-4)*pz^(@pow-5)+(@pow-5)*pz^(@pow-6) a=pz-@p4*f/f1 fa=a^@pow-a^(@pow-1)+a^(@pow-4)+a^(@pow-5)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-b^(@pow-1)+b^(@pow-4)+b^(@pow-5)-@c elseif @v==11 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@p4*f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)-a^(@pow-2)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-b^@pow*(b-0.5)/(1-0.5*b)-b^(@pow-1)-b^(@pow-2)-@c elseif @v==12 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@p4*f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)+a^(@pow-2)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^@pow*(b-0.5)/(1-0.5*b)+b^(@pow-1)+b^(@pow-2)-@c elseif @v==13 f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p4*f/f1 fa=a^@pow+a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==14 f=((pz^2-1i)/(pz+1i))^@pow-@c f1=@pow*(pz^2+2i*pz+1i)*((pz^2-1i)/(pz+1i))^(@pow-1)/(pz+1i)^2 a=pz-@p4*f/f1 fa=((a^2-1i)/(a+1i))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^2-1i)/(b+1i))^@pow-@c elseif @v==15 f=((pz^2-2)/(pz+2))^@pow-@c f1=@pow*(2*pz/(pz+2)-(pz^2-2)/(pz+2)^2)*((pz^2-2)/(pz+2))^(@pow-1) a=pz-@p4*f/f1 fa=((a^2-2)/(a+2))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^2-2)/(b+2))^@pow-@c elseif @v==16 f=pz^@pow*(pz-1i)/(1-1i*pz)-@c f1=1i*pz^(@pow-1)*(@pow*pz^2+@pow+2i*pz)/(pz+1i)^2 a=pz-@p4*f/f1 fa=a^@pow*(a-1i)/(1-1i*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow*(b-1i)/(1-1i*b)-@c elseif @v==17 f=pz^@pow+pz^@pow*(pz-2i)/(1-2i*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(-5*pz+@pow*(2i*pz^2+3*pz+2i))/(2*pz+1i)^2 a=pz-@p4*f/f1 fa=a^@pow+a^@pow*(a-2i)/(1-2i*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+b^@pow*(b-2i)/(1-2i*b)-@c elseif @v==18 f=pz^@pow-pz^@pow*(pz-2i)/(1-2i*pz)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(-5*pz+@pow*(2i*pz^2+3*pz+2i))/(2*pz+1i)^2 a=pz-@p4*f/f1 fa=a^@pow-a^@pow*(a-2i)/(1-2i*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-b^@pow*(b-2i)/(1-2i*b)-@c elseif @v==19 f=((pz^3-1)/(3*pz^2))^@pow-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@p4*f/f1 fa=((a^3-1)/(3*a^2))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1)/(3*b^2))^@pow-@c elseif @v==20 f=pz^@pow+((pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)+3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@p4*f/f1 fa=a^@pow+((a^3-1)/(3*a^2))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+((b^3-1)/(3*b^2))^@pow-@c elseif @v==21 f=pz^@pow-((pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)-3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@p4*f/f1 fa=a^@pow-((a^3-1)/(3*a^2))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow-((b^3-1)/(3*b^2))^@pow-@c elseif @v==22 f=((pz^3-1i)/(3*pz^2))^@pow-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1i))/pz^3)*((pz^3-1i)/pz^2)^(@pow-1) a=pz-@p4*f/f1 fa=((a^3-1i)/(3*a^2))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1i)/(3*b^2))^@pow-@c elseif @v==23 f=((pz^3-1i)/(3*pz^2))^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1i))/pz^3)*((pz^3-1i)/pz^2)^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p4*f/f1 fa=((a^3-1i)/(3*a^2))^@pow+a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1i)/(3*b^2))^@pow+b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==24 f=((pz^3-1)/(3*pz^2))^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)-pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@p4*f/f1 fa=((a^3-1)/(3*a^2))^@pow-a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1)/(3*b^2))^@pow-b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==25 f=((pz^2-pz-1)/(pz+1))^@pow-@c f1=@pow*pz*(pz+2)*((pz^2-pz-1)/(pz+1))^@pow/(pz^3-2*pz-1) a=pz-@p4*f/f1 fa=((a^2-a-1)/(a+1))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^2-b-1)/(b+1))^@pow-@c elseif @v==26 f=pz^@pow+((pz^2-pz-1)/(pz+1))^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz*(pz+2)*((pz^2-pz-1)/(pz+1))^@pow/(pz^3-2*pz-1) a=pz-@p4*f/f1 fa=a^@pow+((a^2-a-1)/(a+1))^@pow-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=b^@pow+((b^2-b-1)/(b+1))^@pow-@c elseif @v==27 f=(pz^(@pow+1)-1)/(pz+1)-@c f1=(@pow*pz^(@pow+1)+(@pow+1)*pz^@pow+1)/(pz+1)^2 a=pz-@p4*f/f1 fa=(a^(@pow+1)-1)/(a+1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b^(@pow+1)-1)/(b+1)-@c elseif @v==28 f=(pz^(@pow+1)+1)/(pz-1)-@c f1=(@pow*pz^(@pow+1)-(@pow+1)*pz^@pow-1)/(pz-1)^2 a=pz-@p4*f/f1 fa=(a^(@pow+1)+1)/(a-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b^(@pow+1)+1)/(b-1)-@c elseif @v==29 f=(pz^(@pow+1)+1i)/(pz-1i)-@c f1=(@pow*pz^(@pow+1)-1i*(@pow+1)*pz^@pow-1i)/(pz-1i)^2 a=pz-@p4*f/f1 fa=(a^(@pow+1)+1i)/(a-1i)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b^(@pow+1)+1i)/(b-1i)-@c elseif @v==30 f=(pz^(@pow+2)-1)/(pz^2+1)-@c f1= pz*(@pow*pz^(@pow+2)+(@pow+2)*pz^@pow+2)/(pz^2+1)^2 a=pz-@p4*f/f1 fa=(a^(@pow+2)-1)/(a^2+1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b^(@pow+2)-1)/(b^2+1)-@c elseif @v==31 f=(pz^(@pow+2)-1i)/(pz^2+1i)-@c f1= pz*(@pow*pz^(@pow+2)+1i*(@pow+2)*pz^@pow+2i)/(pz^2+1i)^2 a=pz-@p4*f/f1 fa=(a^(@pow+2)-1i)/(a^2+1i)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b^(@pow+2)-1i)/(b^2+1i)-@c elseif @v==32 f=(pz+1)*(pz-1)^(@pow-1)-@c f1=(pz-1)^(@pow-2)*(@pow*pz+@pow-2) a=pz-@p4*f/f1 fa=(a+1)*(a-1)^(@pow-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b+1)*(b-1)^(@pow-1)-@c elseif @v==33 f=(pz+1i)*(pz-1i)^(@pow-1)-@c f1=(pz-1i)^(@pow-2)*(@pow*(pz+1i)-2i) a=pz-@p4*f/f1 fa=(a+1i)*(a-1i)^(@pow-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b+1i)*(b-1i)^(@pow-1)-@c elseif @v==34 f=(pz-1)*(pz+1)^(@pow-1)-@c f1=(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@p4*f/f1 fa=(a-1)*(a+1)^(@pow-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=(b-1)*(b+1)^(@pow-1)-@c elseif @v==35 f=((pz^3-1)/(3*pz^2))^@pow+(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)+(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@p4*f/f1 fa=((a^3-1)/(3*a^2))^@pow+(a-1)*(a+1)^(@pow-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1)/(3*b^2))^@pow+(b-1)*(b+1)^(@pow-1)-@c else f=((pz^3-1)/(3*pz^2))^@pow-(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)-(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@p4*f/f1 fa=((a^3-1)/(3*a^2))^@pow-(a-1)*(a+1)^(@pow-1)-@c b=pz-@p5*((f-fa)/(f-2*fa))*(f/f1) fb=((b^3-1)/(3*b^2))^@pow-(b-1)*(b+1)^(@pow-1)-@c endif c=b-@p6*((f-fa)/(f-2*fa)-0.5*fb/(fa-2*fb))*(fb/f1) pz=c-@p7*(3*(@p2+@p3)*(c-b)/(@p1*(c-b)+@p2*(a-pz)+@p3*(b-pz)))*(fb/f1) return pz endfunc default: title="Cordero" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37" endparam param p1 caption="Cordero Parameter 1" default=(1,0) endparam param p2 caption="Cordero Parameter 2" default=(1,0) endparam param p3 caption="Cordero Parameter 3" default=(1,0) endparam param p4 caption="Cordero Parameter 4" default=(1,0) endparam param p5 caption="Cordero Parameter 5" default=(1,0) endparam param p6 caption="Cordero Parameter 6" default=(1,0) endparam param p7 caption="Cordero Parameter 7" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_LiLiuKou(common.ulb:ConvergentFormula) { ;https://tinyurl.com/y34p4sgo ;(22.1.4) public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@llkp1*f/f1 fa=a^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@llkp1*f/f1 fa=(a+1/a)^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b+1/b)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@llkp1*f/f1 fa=(a-1/a)^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b-1/b)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@llkp1*f/f1 fa=a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==4 f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@llkp1*f/f1 fa=a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==5 f=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@llkp1*f/f1 fa=a^@pow-a^(@pow-1)-a^(@pow-2)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-b^(@pow-1)-b^(@pow-2)-@c elseif @v==6 f=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@llkp1*f/f1 fa=a^@pow+a^(@pow-1)+a^(@pow-2)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^(@pow-1)+b^(@pow-2)-@c elseif @v==7 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5) a=pz-@llkp1*f/f1 fa=a^@pow-a^(@pow-2)-a^(@pow-4)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-b^(@pow-2)-b^(@pow-4)-@c elseif @v==8 f=pz^@pow+pz^(@pow-2)+pz^(@pow-4)-@c f1=@pow*pz^(@pow-1)+(@pow-2)*pz^(@pow-3)+(@pow-4)*pz^(@pow-5) a=pz-@llkp1*f/f1 fa=a^@pow+a^(@pow-2)+a^(@pow-4)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^(@pow-2)+b^(@pow-4)-@c elseif @v==9 f=pz^@pow+pz^(@pow-1)-pz^(@pow-4)-pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)-(@pow-4)*pz^(@pow-5)-(@pow-5)*pz^(@pow-6) a=pz-@llkp1*f/f1 fa=a^@pow+a^(@pow-1)-a^(@pow-4)-a^(@pow-5)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^(@pow-1)-b^(@pow-4)-b^(@pow-5)-@c elseif @v==10 f=pz^@pow-pz^(@pow-1)+pz^(@pow-4)+pz^(@pow-5)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)+(@pow-4)*pz^(@pow-5)+(@pow-5)*pz^(@pow-6) a=pz-@llkp1*f/f1 fa=a^@pow-a^(@pow-1)+a^(@pow-4)+a^(@pow-5)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-b^(@pow-1)+b^(@pow-4)+b^(@pow-5)-@c elseif @v==11 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)-pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) a=pz-@llkp1*f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)-a^(@pow-2)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-b^@pow*(b-0.5)/(1-0.5*b)-b^(@pow-1)-b^(@pow-2)-@c elseif @v==12 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)+pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) a=pz-@llkp1*f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)+a^(@pow-2)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^@pow*(b-0.5)/(1-0.5*b)+b^(@pow-1)+b^(@pow-2)-@c elseif @v==13 f=pz^@pow+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@llkp1*f/f1 fa=a^@pow+a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==14 f=((pz^2-1i)/(pz+1i))^@pow-@c f1=@pow*(pz^2+2i*pz+1i)*((pz^2-1i)/(pz+1i))^(@pow-1)/(pz+1i)^2 a=pz-@llkp1*f/f1 fa=((a^2-1i)/(a+1i))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^2-1i)/(b+1i))^@pow-@c elseif @v==15 f=((pz^2-2)/(pz+2))^@pow-@c f1=@pow*(2*pz/(pz+2)-(pz^2-2)/(pz+2)^2)*((pz^2-2)/(pz+2))^(@pow-1) a=pz-@llkp1*f/f1 fa=((a^2-2)/(a+2))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^2-2)/(b+2))^@pow-@c elseif @v==16 f=pz^@pow*(pz-1i)/(1-1i*pz)-@c f1=1i*pz^(@pow-1)*(@pow*pz^2+@pow+2i*pz)/(pz+1i)^2 a=pz-@llkp1*f/f1 fa=a^@pow*(a-1i)/(1-1i*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow*(b-1i)/(1-1i*b)-@c elseif @v==17 f=pz^@pow+pz^@pow*(pz-2i)/(1-2i*pz)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-1)*(-5*pz+@pow*(2i*pz^2+3*pz+2i))/(2*pz+1i)^2 a=pz-@llkp1*f/f1 fa=a^@pow+a^@pow*(a-2i)/(1-2i*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+b^@pow*(b-2i)/(1-2i*b)-@c elseif @v==18 f=pz^@pow-pz^@pow*(pz-2i)/(1-2i*pz)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(-5*pz+@pow*(2i*pz^2+3*pz+2i))/(2*pz+1i)^2 a=pz-@llkp1*f/f1 fa=a^@pow-a^@pow*(a-2i)/(1-2i*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-b^@pow*(b-2i)/(1-2i*b)-@c elseif @v==19 f=((pz^3-1)/(3*pz^2))^@pow-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@llkp1*f/f1 fa=((a^3-1)/(3*a^2))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1)/(3*b^2))^@pow-@c elseif @v==20 f=pz^@pow+((pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)+3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@llkp1*f/f1 fa=a^@pow+((a^3-1)/(3*a^2))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+((b^3-1)/(3*b^2))^@pow-@c elseif @v==21 f=pz^@pow-((pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)-3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@llkp1*f/f1 fa=a^@pow-((a^3-1)/(3*a^2))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow-((b^3-1)/(3*b^2))^@pow-@c elseif @v==22 f=((pz^3-1i)/(3*pz^2))^@pow-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1i))/pz^3)*((pz^3-1i)/pz^2)^(@pow-1) a=pz-@llkp1*f/f1 fa=((a^3-1i)/(3*a^2))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1i)/(3*b^2))^@pow-@c elseif @v==23 f=((pz^3-1i)/(3*pz^2))^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1i))/pz^3)*((pz^3-1i)/pz^2)^(@pow-1)+pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@llkp1*f/f1 fa=((a^3-1i)/(3*a^2))^@pow+a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1i)/(3*b^2))^@pow+b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==24 f=((pz^3-1)/(3*pz^2))^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)-pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@llkp1*f/f1 fa=((a^3-1)/(3*a^2))^@pow-a^@pow*(a-0.5)/(1-0.5*a)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1)/(3*b^2))^@pow-b^@pow*(b-0.5)/(1-0.5*b)-@c elseif @v==25 f=((pz^2-pz-1)/(pz+1))^@pow-@c f1=@pow*pz*(pz+2)*((pz^2-pz-1)/(pz+1))^@pow/(pz^3-2*pz-1) a=pz-@llkp1*f/f1 fa=((a^2-a-1)/(a+1))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^2-b-1)/(b+1))^@pow-@c elseif @v==26 f=pz^@pow+((pz^2-pz-1)/(pz+1))^@pow-@c f1=@pow*pz^(@pow-1)+@pow*pz*(pz+2)*((pz^2-pz-1)/(pz+1))^@pow/(pz^3-2*pz-1) a=pz-@llkp1*f/f1 fa=a^@pow+((a^2-a-1)/(a+1))^@pow-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=b^@pow+((b^2-b-1)/(b+1))^@pow-@c elseif @v==27 f=(pz^(@pow+1)-1)/(pz+1)-@c f1=(@pow*pz^(@pow+1)+(@pow+1)*pz^@pow+1)/(pz+1)^2 a=pz-@llkp1*f/f1 fa=(a^(@pow+1)-1)/(a+1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b^(@pow+1)-1)/(b+1)-@c elseif @v==28 f=(pz^(@pow+1)+1)/(pz-1)-@c f1=(@pow*pz^(@pow+1)-(@pow+1)*pz^@pow-1)/(pz-1)^2 a=pz-@llkp1*f/f1 fa=(a^(@pow+1)+1)/(a-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b^(@pow+1)+1)/(b-1)-@c elseif @v==29 f=(pz^(@pow+1)+1i)/(pz-1i)-@c f1=(@pow*pz^(@pow+1)-1i*(@pow+1)*pz^@pow-1i)/(pz-1i)^2 a=pz-@llkp1*f/f1 fa=(a^(@pow+1)+1i)/(a-1i)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b^(@pow+1)+1i)/(b-1i)-@c elseif @v==30 f=(pz^(@pow+2)-1)/(pz^2+1)-@c f1= pz*(@pow*pz^(@pow+2)+(@pow+2)*pz^@pow+2)/(pz^2+1)^2 a=pz-@llkp1*f/f1 fa=(a^(@pow+2)-1)/(a^2+1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b^(@pow+2)-1)/(b^2+1)-@c elseif @v==31 f=(pz^(@pow+2)-1i)/(pz^2+1i)-@c f1= pz*(@pow*pz^(@pow+2)+1i*(@pow+2)*pz^@pow+2i)/(pz^2+1i)^2 a=pz-@llkp1*f/f1 fa=(a^(@pow+2)-1i)/(a^2+1i)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b^(@pow+2)-1i)/(b^2+1i)-@c elseif @v==32 f=(pz+1)*(pz-1)^(@pow-1)-@c f1=(pz-1)^(@pow-2)*(@pow*pz+@pow-2) a=pz-@llkp1*f/f1 fa=(a+1)*(a-1)^(@pow-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b+1)*(b-1)^(@pow-1)-@c elseif @v==33 f=(pz+1i)*(pz-1i)^(@pow-1)-@c f1=(pz-1i)^(@pow-2)*(@pow*(pz+1i)-2i) a=pz-@llkp1*f/f1 fa=(a+1i)*(a-1i)^(@pow-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b+1i)*(b-1i)^(@pow-1)-@c elseif @v==34 f=(pz-1)*(pz+1)^(@pow-1)-@c f1=(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@llkp1*f/f1 fa=(a-1)*(a+1)^(@pow-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=(b-1)*(b+1)^(@pow-1)-@c elseif @v==35 f=((pz^3-1)/(3*pz^2))^@pow+(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)+(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@llkp1*f/f1 fa=((a^3-1)/(3*a^2))^@pow+(a-1)*(a+1)^(@pow-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1)/(3*b^2))^@pow+(b-1)*(b+1)^(@pow-1)-@c else f=((pz^3-1)/(3*pz^2))^@pow-(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)-(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@llkp1*f/f1 fa=((a^3-1)/(3*a^2))^@pow-(a-1)*(a+1)^(@pow-1)-@c b=pz-@llkp2*(fa*f/f1)/(1+(f-2*@llkp3*fa)) fb=((b^3-1)/(3*b^2))^@pow-(b-1)*(b+1)^(@pow-1)-@c endif c=2*fa*f1^2/f^2 d=f1+c*(b-pz) pz=b-@llkp4*fb/d return pz endfunc default: title="Li-Liu-Kou" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37" endparam param llkp1 caption="llk Parameter 1" default=(1,0) endparam param llkp2 caption="llk Parameter 2" default=(-1,0) endparam param llkp3 caption="llk Parameter 3" default=(1,0) endparam param llkp4 caption="llk Parameter 4" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_ParhiGupta(common.ulb:ConvergentFormula) { ;https://tinyurl.com/yyogm5em public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=pz-@pgp1*f/f1 f1a=@pow*a^(@pow-1) b=pz-@pgp2*2*f/(f1+f1a) fb=b^@pow-@c elseif @v==1 f=(pz+1/pz)^@pow-@c f1=@pow*(1-1/pz^2)*(pz+1/pz)^(@pow-1) a=pz-@pgp1*f/f1 f1a=@pow*(1-1/a^2)*(a+1/a)^(@pow-1) b=pz-@pgp2*2*f/(f1+f1a) fb=(b+1/b)^@pow-@c elseif @v==2 f=(pz-1/pz)^@pow-@c f1=@pow*(1+1/pz^2)*(pz-1/pz)^(@pow-1) a=pz-@pgp1*f/f1 f1a=@pow*(1+1/a^2)*(a-1/a)^(@pow-1) b=pz-@pgp2*2*f/(f1+f1a) fb=(b-1/b)^@pow-@c elseif @v==3 f=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@pgp1*f/f1 f1a=a^(@pow-1)*(@pow*(-2*a^2/3+13*a/9-2/3)-5*a/9)/(2/3-a)^2 b=pz-@pgp2*2*f/(f1+f1a) fb=b^@pow*(b-1.5)/(1-1.5*b)-@c else f=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 a=pz-@pgp1*f/f1 f1a=a^(@pow-1)*(@pow*(-2*a^2+5*a-2)+3*a)/(2-a)^2 b=pz-@pgp2*2*f/(f1+f1a) fb=b^@pow*(b-0.5)/(1-0.5*b)-@c endif pz=b-@pgp3*(fb/f1)*((f1a+f1)/(-f1+3*f1a)) return pz endfunc default: title="Parhi-Gupta" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^p-c""(z+1/z)^p-c""(z-1/z)^p-c""z^p*(z-1.5)/(1-1.5*z)-c""z^p*(z-0.5)/(1-0.5*z)-c" endparam param pgp1 caption="PG Parameter 1" default=(-0.25,0) endparam param pgp2 caption="PG Parameter 2" default=(1,0) endparam param pgp3 caption="PG Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_NetaPetkovic(common.ulb:ConvergentFormula) { ;https://tinyurl.com/y3uumc6y ;(12) public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @v==0 f=(pz+1)^2*(pz-1)^(@pow-2)-@c f1=(pz+1)*(@pow*pz+@pow-4)*(pz-1)^(@pow-3) a=pz-@p1*f/f1 fa=(a+1)^2*(a-1)^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+1)^2*(b-1)^(@pow-2)-@c elseif @v==1 f=pz^@pow+(pz+1)^2*(pz-1)^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(pz+1)*(@pow*pz+@pow-4)*(pz-1)^(@pow-3) a=pz-@p1*f/f1 fa=a^@pow+(a+1)^2*(a-1)^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+(b+1)^2*(b-1)^(@pow-2)-@c elseif @v==2 f=pz^@pow-(pz+1)^2*(pz-1)^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(pz+1)*(@pow*pz+@pow-4)*(pz-1)^(@pow-3) a=pz-@p1*f/f1 fa=a^@pow-(a+1)^2*(a-1)^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-(b+1)^2*(b-1)^(@pow-2)-@c elseif @v==3 f=pz^@pow-(pz+1)^2*(pz-1)^(@pow-2)-pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=@pow*pz^(@pow-1)-(pz+1)*(@pow*pz+@pow-4)*(pz-1)^(@pow-3)-pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p1*f/f1 fa=a^@pow-(a+1)^2*(a-1)^(@pow-2)-a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-(b+1)^2*(b-1)^(@pow-2)-b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==4 f=(pz+2)^2*(pz-2)^(@pow-2)-@c f1=(pz+2)*(@pow*(pz+2)-8)*(pz-2)^(@pow-3) a=pz-@p1*f/f1 fa=(a+2)^2*(a-2)^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+2)^2*(b-2)^(@pow-2)-@c elseif @v==5 f=(pz+2)*(pz-1)*pz^(@pow-2)-@c f1=pz^(@pow-3)*(@pow*(pz^2+pz-2)-pz+4) a=pz-@p1*f/f1 fa=(a+2)*(a-1)*a^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+2)*(b-1)*b^(@pow-2)-@c elseif @v==6 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)+(pz+2)*(pz-1)*pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5)+pz^(@pow-3)*(@pow*(pz^2+pz-2)-pz+4) a=pz-@p1*f/f1 fa=a^@pow-a^(@pow-2)-a^(@pow-4)+(a+2)*(a-1)*a^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-b^(@pow-2)-b^(@pow-4)+(b+2)*(b-1)*b^(@pow-2)-@c elseif @v==7 f=pz^@pow-pz^(@pow-2)-pz^(@pow-4)-(pz+2)*(pz-1)*pz^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5)-pz^(@pow-3)*(@pow*(pz^2+pz-2)-pz+4) a=pz-@p1*f/f1 fa=a^@pow-a^(@pow-2)-a^(@pow-4)-(a+2)*(a-1)*a^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-b^(@pow-2)-b^(@pow-4)-(b+2)*(b-1)*b^(@pow-2)-@c elseif @v==8 f=pz^@pow+pz^(@pow-2)*(pz^3-1)/(pz+1)-@c f1=@pow*pz^(@pow-1)+pz^(@pow-3)*(@pow*(pz^4+pz^3-pz-1)+pz^3+3*pz+2)/(pz+1)^2 a=pz-@p1*f/f1 fa=a^@pow+a^(@pow-2)*(a^3-1)/(a+1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+b^(@pow-2)*(b^3-1)/(b+1)-@c elseif @v==9 f=pz^@pow-pz^(@pow-2)*(pz^3-1)/(pz+1)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-3)*(@pow*(pz^4+pz^3-pz-1)+pz^3+3*pz+2)/(pz+1)^2 a=pz-@p1*f/f1 fa=a^@pow-a^(@pow-2)*(a^3-1)/(a+1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-b^(@pow-2)*(b^3-1)/(b+1)-@c elseif @v==10 f=pz^(@pow-1)*(pz^3-1)/(3*pz^2)-@c f1=pz^(@pow-4)*(@pow*(pz^3-1)+3)/3 a=pz-@p1*f/f1 fa=a^(@pow-1)*(a^3-1)/(3*a^2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^(@pow-1)*(b^3-1)/(3*b^2)-@c elseif @v==11 f=pz^@pow+pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz^3-1)/(3*pz^2)-@c f1=@pow*pz^(@pow-1)+(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2+pz^(@pow-4)*(@pow*(pz^3-1)+3)/3 a=pz-@p1*f/f1 fa=a^@pow+a^@pow*(a-0.5)/(1-0.5*a)+a^(@pow-1)*(a^3-1)/(3*a^2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+b^@pow*(b-0.5)/(1-0.5*b)+b^(@pow-1)*(b^3-1)/(3*b^2)-@c elseif @v==12 f=pz^@pow-pz^@pow*(pz-0.5)/(1-0.5*pz)-pz^(@pow-1)*(pz^3-1)/(3*pz^2)-@c f1=@pow*pz^(@pow-1)-(pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz))/(2-pz)^2-pz^(@pow-4)*(@pow*(pz^3-1)+3)/3 a=pz-@p1*f/f1 fa=a^@pow-a^@pow*(a-0.5)/(1-0.5*a)-a^(@pow-1)*(a^3-1)/(3*a^2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-b^@pow*(b-0.5)/(1-0.5*b)-b^(@pow-1)*(b^3-1)/(3*b^2)-@c elseif @v==13 f=(pz+(pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*(2-(2*(pz^3-1))/(3*pz^3))*((pz^3-1)/(3*pz^2)+pz)^(@pow-1) a=pz-@p1*f/f1 fa=(a+(a^3-1)/(3*a^2))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+(b^3-1)/(3*b^2))^@pow-@c elseif @v==14 f=pz^@pow+(pz-(pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)+2*@pow*(pz^3-1)*(1/(3*pz^2)+2*pz/3)^@pow/(2*pz^4+pz) a=pz-@p1*f/f1 fa=a^@pow+(a-(a^3-1)/(3*a^2))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+(b-(b^3-1)/(3*b^2))^@pow-@c elseif @v==15 f=pz^@pow-(pz-(pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(@pow-1)-2*@pow*(pz^3-1)*(1/(3*pz^2)+2*pz/3)^@pow/(2*pz^4+pz) a=pz-@p1*f/f1 fa=a^@pow-(a-(a^3-1)/(3*a^2))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-(b-(b^3-1)/(3*b^2))^@pow-@c elseif @v==16 f=pz^@pow+pz^(-@pow)-@c f1=@pow*pz^(-@pow-1)*(pz^(2*@pow)-1) a=pz-@p1*f/f1 fa=a^@pow+a^(-@pow)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+b^(-@pow)-@c elseif @v==17 f=-(pz+(pz^3-1)/(3*pz^2))^@pow+pz^@pow+pz^(-@pow)-@c f1=-@pow*(2-(2*(pz^3-1))/(3*pz^3))*((pz^3-1)/(3*pz^2)+pz)^(@pow-1)+@pow*pz^(-@pow-1)*(pz^(2*@pow)-1) a=pz-@p1*f/f1 fa=-(a+(a^3-1)/(3*a^2))^@pow+a^@pow+a^(-@pow)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=-(b+(b^3-1)/(3*b^2))^@pow+b^@pow+b^(-@pow)-@c elseif @v==18 f=pz^@pow-pz^(-@pow)-((pz^3-1)/(3*pz^2))^@pow-@c f1=@pow*pz^(-@pow-1)*(pz^(2*@pow)+1)-3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1) a=pz-@p1*f/f1 fa=a^@pow-a^(-@pow)-((a^3-1)/(3*a^2))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-b^(-@pow)-((b^3-1)/(3*b^2))^@pow-@c elseif @v==19 f=(pz+(pz-1)/(pz+1))^@pow-@c f1=@pow*(pz^2+2*pz+3)*(pz+(pz-1)/(pz+1))^@pow/(pz^3+3*pz^2+pz-1) a=pz-@p1*f/f1 fa=(a+(a-1)/(a+1))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+(b-1)/(b+1))^@pow-@c elseif @v==20 f=(pz-(pz-1)/(pz+1))^@pow-@c f1=@pow*(pz^2+2*pz-1)*((pz^2+1)/(pz+1))^(@pow-1)/(pz+1)^2 a=pz-@p1*f/f1 fa=(a-(a-1)/(a+1))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b-(b-1)/(b+1))^@pow-@c elseif @v==21 f=(pz+(pz^2-1)/(pz+1))^@pow-@c f1=2*@pow*(2*pz-1)^(@pow-1) a=pz-@p1*f/f1 fa=(a+(a^2-1)/(a+1))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+(b^2-1)/(b+1))^@pow-@c elseif @v==22 f=(pz+(pz^3-1)/(pz^2+1))^@pow-@c f1=@pow*(2*pz^4+5*pz^2+2*pz+1)*(pz+(pz^3-1)/(pz^2+1))^@pow/((pz^2+1)*(2*pz^3+pz-1)) a=pz-@p1*f/f1 fa=(a+(a^3-1)/(a^2+1))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+(b^3-1)/(b^2+1))^@pow-@c elseif @v==23 f=(pz+(pz^2-1)/(pz+1))^@pow+pz^@pow-pz^(@pow-2)-pz^(@pow-4)-(pz+2)*(pz-1)*pz^(@pow-2)-@c f1=2*@pow*(2*pz-1)^(@pow-1)+@pow*pz^(@pow-1)-(@pow-2)*pz^(@pow-3)-(@pow-4)*pz^(@pow-5)-pz^(@pow-3)*(@pow*(pz^2+pz-2)-pz+4) a=pz-@p1*f/f1 fa=(a+(a^2-1)/(a+1))^@pow+a^@pow-a^(@pow-2)-a^(@pow-4)-(a+2)*(a-1)*a^(@pow-2)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+(b^2-1)/(b+1))^@pow+b^@pow-b^(@pow-2)-b^(@pow-4)-(b+2)*(b-1)*b^(@pow-2)-@c elseif @v==24 f=(pz*(pz-2)/(pz+2))^@pow-@c f1=@pow*(pz^2+4*pz-4)*(pz*(pz-2)/(pz+2))^@pow/(pz*(pz^2-4)) a=pz-@p1*f/f1 fa=(a*(a-2)/(a+2))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b*(b-2)/(b+2))^@pow-@c elseif @v==25 f=pz^@pow+(pz^(@pow+1)-1i)/(pz+1i)-@c f1=@pow*pz^(@pow-1)+(@pow*pz^(@pow+1)+1i*(@pow+1)*pz^@pow+1i)/(pz+1i)^2 a=pz-@p1*f/f1 fa=a^@pow+(a^(@pow+1)-1i)/(a+1i)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow+(b^(@pow+1)-1i)/(b+1i)-@c elseif @v==26 f=pz^@pow-(pz^(@pow+1)-1i)/(pz+1i)-@c f1=@pow*pz^(@pow-1)-(@pow*pz^(@pow+1)+1i*(@pow+1)*pz^@pow+1i)/(pz+1i)^2 a=pz-@p1*f/f1 fa=a^@pow-(a^(@pow+1)-1i)/(a+1i)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-(b^(@pow+1)-1i)/(b+1i)-@c elseif @v==27 f=((pz^2-1)/(2*pz))^@pow-@c f1=2^(-@pow)*@pow*(pz^2+1)*(pz-1/pz)^@pow/(pz*(pz^2-1)) a=pz-@p1*f/f1 fa=((a^2-1)/(2*a))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=((b^2-1)/(2*b))^@pow-@c elseif @v==28 f=pz^@pow-((pz^2-1)/(2*pz))^@pow-@c f1=@pow*pz^(@pow-1)-2^(-@pow)*@pow*(pz^2+1)*(pz-1/pz)^@pow/(pz*(pz^2-1)) a=pz-@p1*f/f1 fa=a^@pow-((a^2-1)/(2*a))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=b^@pow-((b^2-1)/(2*b))^@pow-@c elseif @v==29 f=(pz+1)*(pz-1)^(@pow-1)+pz^@pow-((pz^2-1)/(2*pz))^@pow-@c f1=(pz-1)^(@pow-2)*(@pow*pz+@pow-2)+@pow*pz^(@pow-1)-2^(-@pow)*@pow*(pz^2+1)*(pz-1/pz)^@pow/(pz*(pz^2-1)) a=pz-@p1*f/f1 fa=(a+1)*(a-1)^(@pow-1)+a^@pow-((a^2-1)/(2*a))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+1)*(b-1)^(@pow-1)+b^@pow-((b^2-1)/(2*b))^@pow-@c elseif @v==30 f=(pz+1)*(pz-1)^(@pow-1)-pz^@pow-((pz^2-1)/(2*pz))^@pow-@c f1=(pz-1)^(@pow-2)*(@pow*pz+@pow-2)-@pow*pz^(@pow-1)-2^(-@pow)*@pow*(pz^2+1)*(pz-1/pz)^@pow/(pz*(pz^2-1)) a=pz-@p1*f/f1 fa=(a+1)*(a-1)^(@pow-1)-a^@pow-((a^2-1)/(2*a))^@pow-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+1)*(b-1)^(@pow-1)-b^@pow-((b^2-1)/(2*b))^@pow-@c elseif @v==31 f=(pz^(@pow+2)-1i)/(pz^2+1i)-@c f1= pz*(@pow*pz^(@pow+2)+1i*(@pow+2)*pz^@pow+2i)/(pz^2+1i)^2 a=pz-@p1*f/f1 fa=(a^(@pow+2)-1i)/(a^2+1i)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b^(@pow+2)-1i)/(b^2+1i)-@c elseif @v==32 f=(pz+1)*(pz-1)^(@pow-1)-@c f1=(pz-1)^(@pow-2)*(@pow*pz+@pow-2) a=pz-@p1*f/f1 fa=(a+1)*(a-1)^(@pow-1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+1)*(b-1)^(@pow-1)-@c elseif @v==33 f=(pz+1i)*(pz-1i)^(@pow-1)-@c f1=(pz-1i)^(@pow-2)*(@pow*(pz+1i)-2i) a=pz-@p1*f/f1 fa=(a+1i)*(a-1i)^(@pow-1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b+1i)*(b-1i)^(@pow-1)-@c elseif @v==34 f=(pz-1)*(pz+1)^(@pow-1)+pz^@pow*(pz-1.5)/(1-1.5*pz)-@c f1=(@pow*(pz-1)+2)*(pz+1)^(@pow-2)+pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)-5*pz/9)/(2/3-pz)^2 a=pz-@p1*f/f1 fa=(a-1)*(a+1)^(@pow-1)+a^@pow*(a-1.5)/(1-1.5*a)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=(b-1)*(b+1)^(@pow-1)+b^@pow*(b-1.5)/(1-1.5*b)-@c elseif @v==35 f=((pz^3-1)/(3*pz^2))^@pow+(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)+(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@p1*f/f1 fa=((a^3-1)/(3*a^2))^@pow+(a-1)*(a+1)^(@pow-1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=((b^3-1)/(3*b^2))^@pow+(b-1)*(b+1)^(@pow-1)-@c else f=((pz^3-1)/(3*pz^2))^@pow-(pz-1)*(pz+1)^(@pow-1)-@c f1=3^(-@pow)*@pow*(3-(2*(pz^3-1))/pz^3)*((pz^3-1)/pz^2)^(@pow-1)-(@pow*(pz-1)+2)*(pz+1)^(@pow-2) a=pz-@p1*f/f1 fa=((a^3-1)/(3*a^2))^@pow-(a-1)*(a+1)^(@pow-1)-@c b=pz-@p2*(fa/f1)*(1/(1-fa/f)^2) fb=((b^3-1)/(3*b^2))^@pow-(b-1)*(b+1)^(@pow-1)-@c endif c=(1/((fa-f)*(fa-fb)))*((a-pz)/(fa-f)-1/f1)-(1/((fa-fb)*(fb-f)))*((b-pz)/(fb-f)-1/f1) d=(1/(fa-f))*((a-pz)/(fa-f)-1/f1)-c*(fa-f) pz=pz-@p3*(f/f1-d*f^2+c*f^3) return pz endfunc default: title="Neta-Petkovic" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37" endparam param p1 caption="NP Parameter 1" default=(1,0) endparam param p2 caption="NP Parameter 2" default=(1,0) endparam param p3 caption="NP Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_IteratedFunctionSyndrome30(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p14*flip(pz)+@p15 x=real(pz) y=imag(pz) a=flip((@p1*x+@p2)/@p3+conj(flip((@p4*y+@p5)/@p6))) b=|a-@p13| c=(@p7*x+@p8)/@p9+flip((@p10*y+@p11)/@p12) d=|c-@p16| if real(b)<=real(d) pz=@p17*a+@p18 else pz=@p19*c+@p20 endif return pz endfunc default: title="Iterated Function Syndrome 30" int param version caption="Version" default=100 visible=@version<100 endparam param p14 caption="Z Parameter 1" default=(0.9275,-0.23997) endparam param p15 caption="Z Parameter 2" default=(-0.81,-0.52) endparam param p1 caption="Parameter a1" default=(-1.5,0) endparam param p2 caption="Parameter a2" default=(-0.1,0) endparam param p3 caption="Parameter a3" default=(1,0) endparam param p4 caption="Parameter a4" default=(1,0) endparam param p5 caption="Parameter a5" default=(0.25,0) endparam param p6 caption="Parameter a6" default=(0.65,0) endparam param p7 caption="Parameter b1" default=(1,0) endparam param p8 caption="Parameter b2" default=(1,0) endparam param p9 caption="Parameter b3" default=(-0.78,0.13) endparam param p10 caption="Parameter b4" default=(1,0) endparam param p11 caption="Parameter b5" default=(1,0) endparam param p12 caption="Parameter b6" default=(0.95,0) endparam param p13 caption="Parameter c1" default=(-0.6525,-0.12753) endparam param p16 caption="Parameter c2" default=(-1.49,0.92) endparam param p17 caption="Parameter d1" default=(1,0) endparam param p18 caption="Parameter d2" default=(0,0) endparam param p19 caption="Parameter d3" default=(1,0) endparam param p20 caption="Parameter d4" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IteratedFunctionSyndrome27(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p14*pz+@p15 x=real(pz) y=imag(pz) a=conj((@p1*x+@p2)/@p3+abs(flip((@p4*y+@p5)/@p6))) b=|a-@p13| c=conj((@p7*x+@p8)/@p9+flip((@p10*y+@p11)/@p12)) d=|c-@p16| if real(b)<=real(d) pz=@p17*a+@p18 else pz=@p19*c+@p20 endif return pz endfunc default: title="Iterated Function Syndrome 27" int param version caption="Version" default=100 visible=@version<100 endparam param p14 caption="Z Parameter 1" default=(0.94,0.32) endparam param p15 caption="Z Parameter 2" default=(0.29,-0.36) endparam param p1 caption="Parameter a1" default=(-1.5,0) endparam param p2 caption="Parameter a2" default=(-0.1,0) endparam param p3 caption="Parameter a3" default=(1,0) endparam param p4 caption="Parameter a4" default=(1,0) endparam param p5 caption="Parameter a5" default=(0.25,0) endparam param p6 caption="Parameter a6" default=(0.65,0) endparam param p7 caption="Parameter b1" default=(1,0) endparam param p8 caption="Parameter b2" default=(0.86,-0.23) endparam param p9 caption="Parameter b3" default=(1,0) endparam param p10 caption="Parameter b4" default=(0.97,0.14) endparam param p11 caption="Parameter b5" default=(1.08,-0.13) endparam param p12 caption="Parameter b6" default=(0.95,0) endparam param p13 caption="Parameter c1" default=(-1.09,1.08) endparam param p16 caption="Parameter c2" default=(1.43,1.02) endparam param p17 caption="Parameter d1" default=(0.58,-0.58) endparam param p18 caption="Parameter d2" default=(-0.1,-0.58) endparam param p19 caption="Parameter d3" default=(1,0) endparam param p20 caption="Parameter d4" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IteratedFunctionSyndrome14(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=fn1(pz) return pz endfunc complex func Iterate(complex pz) pz=@p26*pz+@p27 x=real(flip(pz)) y=imag(flip(pz)) a=(@p1*x+@p3)/@p4+flip((@p5*y+@p7)/@p8) b=|a-@p25| c=flip((@p9*x+@p11)/@p12+flip((@p13*y+@p15)/@p16)) d=|c-@p25| f=(@p17*x+@p19)/@p20+flip((@p21*y+@p23)/@p24) g=|f-@p25| if real(b)@p_bailout) return bail endfunc default: title="3Alt Bivar Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.3,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0.3,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.5,0) endparam param bp6 caption="Bivar Parameter 6" default=(0.3,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pp1 caption="Pixel Parameter !" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.75,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @sv==0 pk=@pf(pz) pz=@pf(pz) elseif @sv==1 pk=@pf(pz) pz=@sp elseif @sv==2 pz=@pf(pz) pk=@sp else pz=@sp pk=@sp endif i=0 return pz return pk endfunc private: complex fPixel complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i==0 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=i+1 elseif i==1 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=0 endif elseif @av==1 if i==0 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=i+1 else b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=0 endif elseif @av==2 if i==0 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=i+1 elseif i==1 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=0 endif elseif @av==3 if i==0 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=i+1 else a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=0 endif elseif @av==4 if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=i+1 elseif i==1 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=i+1 else b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=0 endif else if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@pp3*@pf(fpixel) i=i+1 elseif i==1 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@pp2*@pf(fpixel) i=i+1 else a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@pp1*@pf(fpixel) i=0 endif endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="3Alt Bivar Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.3,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0.3,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.5,0) endparam param bp6 caption="Bivar Parameter 6" default=(0.3,0) endparam func pf caption="Pixel Function" default=ident() endfunc param pp1 caption="Pixel Parameter !" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.6,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.6,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=i+1 else c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=0 endif elseif @av==1 if i==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=i+1 else b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=0 endif elseif @av==2 if i==0 b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=i+1 elseif i==1 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=i+1 else c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=0 endif elseif @av==3 if i==0 b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=i+1 elseif i==1 c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=i+1 else a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=0 endif elseif @av==4 if i==0 c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=i+1 elseif i==1 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=i+1 else b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=0 endif else if i==0 c=pk pk=@bp5*@bf(pz/pk)+@bp6 pz=pz^2+c^2+@js4 i=i+1 elseif i==1 b=pz pz=pz^2+@bp3*pk+@js2 pk=pk^2+@bp4*b+@js3 i=i+1 else a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz^2+a^2+@js1 i=0 endif endif return pz return pk endfunc default: title="3Alt Bivar Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.25,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.375,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param bp4 caption="Bivar Parameter 4" default=(1,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.35,0) endparam param bp6 caption="Bivar Parameter 6" default=(0,0) endparam func bf caption="Bivar Function" default=ident() endfunc func sf caption="Start Function" default=ident() endfunc param js1 caption="Julia Seed !" default=(-1.25,0) endparam param js2 caption="Julia Seed 2" default=(-0.67,0) endparam param js3 caption="Julia Seed 3" default=(-1.25,0) endparam param js4 caption="Julia Seed 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarJulia2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i==0 a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==1 if i==0 a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 else b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=0 endif elseif @av==2 if i==0 b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==3 if i==0 b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 else a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=0 endif elseif @av==4 if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 else b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=0 endif else if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 b=pk pk=@bp3*sqr(pz/pk)+@bp4 pz=pz^2+b^2+@js2 i=i+1 else a=pk pk=@bp1*pk/pz+@bp2 pz=pz^2+a^2+@js1 i=0 endif endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="3Alt Bivar Julia 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.25,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.375,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.25,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.35,0) endparam param bp6 caption="Bivar Parameter 6" default=(0.1,0) endparam func sf caption="Start Function" default=ident() endfunc param js1 caption="Julia Seed !" default=(0.15,0) endparam param js2 caption="Julia Seed 2" default=(0.15,0) endparam param js3 caption="Julia Seed 3" default=(1.35,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarJulia3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if i==0 a=pk pz=pz^2+@bp1*pk+@js1 pk=pk^2+@bp2*a+@js2 i=i+1 elseif i==1 b=pz pz=pz^2+@bp3*pk+@js3 pk=pk^2+@bp4*b+@js4 i=i+1 else c=pk pz=pz^2+@bp5*pk+@js5 pk=pk^2+@bp6*c+@js6 i=0 endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="3Alt Bivar Julia 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(-0.45,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.75,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param bp4 caption="Bivar Parameter 4" default=(0.75,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.95,0) endparam param bp6 caption="Bivar Parameter 6" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param js1 caption="Julia Seed !" default=(0.15,0) endparam param js2 caption="Julia Seed 2" default=(0,0) endparam param js3 caption="Julia Seed 3" default=(0,0) endparam param js4 caption="Julia Seed 4" default=(-1,0) endparam param js5 caption="Julia Seed 5" default=(-0.05,0) endparam param js6 caption="Julia Seed 6" default=(0.05,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarJulia4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i==0 a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=i+1 else c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==1 if i==0 a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=i+1 else b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=0 endif elseif @av==2 if i==0 b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 else c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==3 if i==0 b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=i+1 else a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=0 endif elseif @av==4 if i==0 c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=i+1 else b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=0 endif else if i==0 c=pk pk=@bp5*pk^2/pz^2+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 b=pk pk=@bp3*pk/pz^2+@bp4 pz=pz^2+b^2+@js2 i=i+1 else a=pk pk=@bp1*pk^2/pz+@bp2 pz=pz^2+a^2+@js1 i=0 endif endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="3Alt Bivar Julia 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.5,0) endparam param bp6 caption="Bivar Parameter 6" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param js1 caption="Julia Seed 1" default=(-1.25,0) endparam param js2 caption="Julia Seed 2" default=(0.9,0) endparam param js3 caption="Julia Seed 3" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.75,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_3AltBivarJulia5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sf(pz) pz=@sp else pz=@sf(pz) pk=@sp endif i=0 return pz return pk endfunc private: complex pk int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @av==0 if i==0 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==1 if i==0 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 else b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=0 endif elseif @av==2 if i==0 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=i+1 else c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=0 endif elseif @av==3 if i==0 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=i+1 elseif i==1 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 else a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=0 endif elseif @av==4 if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=i+1 else b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=0 endif else if i==0 c=pk pk=@bp5*pz/pk+@bp6 pz=pz^2+c^2+@js3 i=i+1 elseif i==1 b=pk pk=@bp3*pz^2/pk+@bp4 pz=pz^2+b^2+@js2 i=i+1 else a=pk pk=@bp1*pz/pk^2+@bp2 pz=pz^2+a^2+@js1 i=0 endif endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="3Alt Bivar Julia 5" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@sv!=0 endparam param bp1 caption="Bivar Parameter !" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(1.2,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Bivar Parameter 4" default=(0.3,0) endparam param bp5 caption="Bivar Parameter 5" default=(0.5,0) endparam param bp6 caption="Bivar Parameter 6" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param js1 caption="Julia Seed !" default=(-1,0) endparam param js2 caption="Julia Seed 2" default=(-0.2,0) endparam param js3 caption="Julia Seed 3" default=(0.3,0) endparam param zp1 caption="Z Parameter 1" default=(0.6,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.6,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_LabsX22(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz pz=fn1(pz) pz=pz+@sp*pz^2 i=0 return pz endfunc complex func Iterate(complex pz) while i<@iter i=i+1 pz=@p12*fn2(pz) pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p7*pz+1) pz=pz+@p8*sqr(pz) if @Va=="None" pz=pz elseif @Va=="1" if real(pz)@p_bailout) return bail endfunc default: title="Koatrone" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15" endparam param p3 caption="Start Parameter (Z1)" default=(-1,0) endparam param p8 caption="Start Parameter (Z2)" default=(-1,0) endparam param p1 caption="Koatrone Parameter 1" default=(1,0) endparam param p2 caption="Koatrone Parameter 2" default=(1,0) endparam param p7 caption="Koatrone Parameter 3" default=(1,0) endparam param p4 caption="Koatrone Parameter 4" default=(0,0) endparam func fn2 caption="C Function" default=ident() endfunc func fn3 caption="Koatrone Function 1" default=ident() endfunc func fn4 caption="Koatrone Function 2" default=ident() endfunc param p10 caption="Z1 Parameter 1" default=(1.1,0) endparam param p11 caption="Z1 Parameter 2" default=(0,0) endparam param p12 caption="Z2 Parameter 1" default=(1.1,0) endparam param p13 caption="Z2 Parameter 2" default=(0,0) endparam param p5 caption="Add Sqr Parameter" default=(-0.1,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=3000.0 exponential=true endparam } class OM_Tengawn3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@sf(pz) if @sv==0 z2=z1 z3=z1 elseif @sv==1 z2=-z1 z3=z1 elseif @sv==2 z2=-z1 z3=-z1 elseif @sv==3 z2=z1 z3=-z1 elseif @sv==4 z2=cos(z1) z3=z1 elseif @sv==5 z2=-cos(z1) z3=z1 elseif @sv==6 z2=-cos(z1) z3=-z1 else z2=-z1 z3=-cos(z1) endif return pz return z1 return z2 return z3 endfunc private: complex z1 complex z2 complex z3 complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z3=@p7*fn4(z3)+@p8 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 if @v==0 a=(z1*z2*z3-1)/z2 b=a^3 d=z2^2 elseif @v==1 a=(z1*z2*z3-z1)/z2 b=a^3 d=z2^2+1 elseif @v==2 a=(z1*z2*z3-z3)/z2 b=a^3 d=z2^2 elseif @v==3 a=(z1*z3-z1)/z2 b=a^3 d=z2^2+1 elseif @v==4 a=(z1*z2*z3^2-z3)/z2 b=a^3 d=z2^2 elseif @v==5 a=(z1*z3^2-z1)/z2 b=a^3 d=z2^2+1 elseif @v==6 a=(z1^2*z3-1)/z2 b=a^3 d=z2^2 else a=(z1^2*z3-z1)/z2 b=a^3 d=z2^2+1 endif z1=@p1*fn2(z1-a/3+a/(3*b))+@p2 z2=@p3*fn3(z2+z3*a*d/3+z3*a*d/(3*b))+@p4 pz=z1+z2 return pz return z1 return z2 return z3 endfunc default: title="Tengawn 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8" endparam param v caption="Tengawn Variant" enum="1""2""3""4""5""6""7""8" endparam param p1 caption="Tengawn Parameter 1" default=(1,0) endparam param p2 caption="Tengawn Parameter 2" default=(0,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p4 caption="Tengawn Parameter 4" default=(0,0) endparam param p7 caption="Z3 Parameter 1" default=(1,0) endparam param p8 caption="Z3 Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Tengawn Function 1" default=ident() endfunc func fn3 caption="Tengawn Function 2" default=ident() endfunc func fn4 caption="Z3 Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn4(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@sf(pz) z1=z1+@p20/z1+@p21*(z1-1i)/(z1+1i) if @sv==0 z2=z1 z3=z1 elseif @sv==1 z2=-z1 z3=z1 elseif @sv==2 z2=-z1 z3=-z1 else z2=z1 z3=-z1 endif i=0 return pz return z1 return z2 return z3 endfunc private: complex z1 complex z2 complex z3 int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z3=@p7*fn4(z3)+@p8 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 i=i+1 if @v==0 a=(z1*z2-z1)/z2 b=a^3 d=z2^2+1 elseif @v==1 a=(z1*z2*z3-z1)/z2 b=a^3 d=z2^2+1 elseif @v==2 a=(z2*z3-z1)/z2 b=a^3 d=z2^2+1 elseif @v==3 a=(z1*z3-z1)/z2 b=a^3 d=z2^2+1 elseif @v==4 a=(z3^2-z1)/z2 b=a^3 d=z2^2+1 elseif @v==5 a=(z1*z3^2-z1)/z2 b=a^3 d=z2^2+1 elseif @v==6 a=(z1^2*z3-1)/z2 b=a^3 d=z2^2 else a=(z1^2*z3-z1)/z2 b=a^3 d=z2^2+1 endif z1=@p1*fn2(z1-a/i+a/(i*b))+@p2 z2=@p3*fn3(z2+z3*a*d/i+z3*a*d/(i*b))+@p4 pz=z1+z2 return pz return z1 return z2 return z3 endfunc default: title="Tengawn 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param p20 caption="Start Parameter 1" default=(0,0) endparam param p21 caption="Start Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param v caption="Tengawn Variant" enum="1""2""3""4""5""6""7""8" endparam param p1 caption="Tengawn Parameter 1" default=(1,0) endparam param p2 caption="Tengawn Parameter 2" default=(0,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p4 caption="Tengawn Parameter 4" default=(0,0) endparam param p7 caption="Z3 Parameter 1" default=(1,0) endparam param p8 caption="Z3 Parameter 2" default=(0,0) endparam func fn2 caption="Tengawn Function 1" default=ident() endfunc func fn3 caption="Tengawn Function 2" default=ident() endfunc func fn4 caption="Z3 Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn5(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@p20*fn1(pixel) z2=@p21*fn1(pixel) return pz return z1 return z2 endfunc private: complex z1 complex z2 complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z1=@p4*z1+@p7 z2=@p8*z2+@p9 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 if @v==0 a=(z1-z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*(z1*z2)+@p1 elseif @v==1 a=(z1+z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*(z1*z2)+@p1 elseif @v==2 a=(z1*z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*(z1*z2)+@p1 elseif @v==3 a=(z1/z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*(z1*z2)+@p1 elseif @v==4 a=(z1-z2)^3 z1=cos(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*(z1*z2)+@p1 elseif @v==5 a=recip(z1+z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*tanh(z1*z2)+@p1 elseif @v==6 a=cotanh(z1*z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*tan(z1*z2)+@p1 else a=(z1/z2)^3 z1=(z1)+@p2*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=@p3*exp(z1*z2)+@p1 endif pz=z1+z2 return pz return z1 return z2 endfunc default: title="Tengawn 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param p1 caption="Tengawn Parameter 1" default=(0.3,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc param p20 caption="Start Parameter 1" default=(1,0) endparam param p21 caption="Start Parameter 2" default=(1,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn6J(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=fn1(pz) z1=z1+@p11/z1+@p12*(z1-1i)/(z1+1i) if @sv==0 z2=z1 elseif @sv==1 z2=-z1 elseif @sv==2 z2=-sqr(z1) elseif @sv==3 z2=sqr(z1) elseif @sv==4 z2=1/z1 elseif @sv==5 z2=-1/z1 elseif @sv==6 z2=exp(z1) elseif @sv==7 z2=-exp(z1) elseif @sv==8 z2=tan(z1) elseif @sv==9 z2=-tan(z1) elseif @sv==10 z2=cos(z1) elseif @sv==11 z2=-cos(z1) elseif @sv==12 z2=sin(z1) else z2=-sin(z1) endif return pz return z1 return z2 endfunc private: complex z1 complex z2 complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z1=@p4*z1+@p7 z2=@p8*z2+@p9 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 b=z1 if @v==0 a=(z1-z2)^3 z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+@p2)+z1*z2*(5*z1+@p2)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2) elseif @v==1 a=(z1-z2)^3 z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=z2-@p10*(z2^2-b*z2^3-z2^2*(3*b+@p2)+b*z2*(5*b+@p2)-2*b^2)/(z2^3-z2*(b+z2)+3*b*z2*(b-z2)-b^2) elseif @v==2 a=(z2-z1)^3 z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+@p2)+z1*z2*(5*z1+@p2)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2) elseif @v==3 a=(z2-z1)^3 z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) z2=z2-@p10*(z2^2-b*z2^3-z2^2*(3*b+@p2)+b*z2*(5*b+@p2)-2*b^2)/(z2^3-z2*(b+z2)+3*b*z2*(b-z2)-b^2) elseif @v==4 a=(z1-z2)^3 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+@p2)+z1*z2*(5*z1+@p2)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2) z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) else a=(z2-z1)^3 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+@p2)+z1*z2*(5*z1+@p2)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2) z1=z1+@p3*(@p1*z1^2-a*z1-@p1*z1*z2-2*a*z2)/(@p1*z1+a+@p1*z2) endif pz=z1+z2 return pz return z1 return z2 endfunc default: title="Tengawn 6 J" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam func fn1 caption="Start Function" default=ident() endfunc param p11 caption="Start Parameter 1" default=(0,0) endparam param p12 caption="Start Parameter 2" default=(0,0) endparam param v caption="Tengawn Variant" enum="1""2""3""4""5""6" endparam param p1 caption="Tengawn Parameter 1" default=(1,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p10 caption="Tengawn Parameter 4" default=(1,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param p5 caption="Add Sqr Parameter" default=(0.67,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn6M(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@p11 z2=@p12 fpixel=pz c=fn1(fpixel) return pz return z1 return z2 endfunc private: complex z1 complex z2 complex c complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z1=@p4*z1+@p7 z2=@p8*z2+@p9 c=@p13*c+@p14 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 b=z1 if @v==0 a=(z1-z2)^3 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+c)+z1*z2*(5*z1+c)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2)+@p2 elseif @v==1 a=(z1-z2)^3 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 z2=z2-@p10*(z2^2-b*z2^3-z2^2*(3*b+c)+b*z2*(5*b+c)-2*b^2)/(z2^3-z2*(b+z2)+3*b*z2*(b-z2)-b^2)+@p2 elseif @v==2 a=(z2-z1)^3 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+c)+z1*z2*(5*z1+c)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2) elseif @v==3 a=(z2-z1)^3 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 z2=z2-@p10*(z2^2-b*z2^3-z2^2*(3*b+c)+b*z2*(5*b+c)-2*b^2)/(z2^3-z2*(b+z2)+3*b*z2*(b-z2)-b^2)+@p2 elseif @v==4 a=(z1-z2)^3 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+c)+z1*z2*(5*z1+c)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2)+@p2 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 else a=(z2-z1)^3 z2=z2-@p10*(z2^2-z1*z2^3-z2^2*(3*z1+c)+z1*z2*(5*z1+c)-2*z1^2)/(z2^3-z2*(z1+z2)+3*z1*z2*(z1-z2)-z1^2)+@p2 z1=z1+@p3*(c*z1^2-a*z1-c*z1*z2-2*a*z2)/(c*z1+a+c*z2)+@p1 endif pz=z1+z2 return pz return z1 return z2 endfunc default: title="Tengawn 6 M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6" endparam param p11 caption="Start Parameter 1" default=(-0.75,0) endparam param p12 caption="Start Parameter 2" default=(-0.75,0) endparam param p1 caption="Tengawn Parameter 1" default=(0,0) endparam param p2 caption="Tengawn Parameter 2" default=(0,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p10 caption="Tengawn Parameter 4" default=(1,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param p13 caption="C Parameter 1" default=(1,0) endparam param p14 caption="C Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0.75,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn7(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@p5 z2=@p15 fpixel=pz c=fn1(fpixel) i=0 return pz return z1 return z2 endfunc private: complex z1 complex z2 complex c int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz i=i+1 z1=@p6*z1+@p7 z2=@p12*z2+@p13 c=@p8*fn3(c) z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z1=z1+@p14/z1 z2=z2+@p14/z2 b=z2 if @v==0 z2=z2-@p1*(z2^3-1)/(3*z2^2)+@p2*z1*z2+c k=3*sqr(z1^2-b^2) z1=z1-@p3*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 elseif @v==1 z2=z2-@p1*(z2^3-1)/(3*z2^2)+@p2*z1*z2+c k=3*sqr(z1^i-b^i) z1=z1-@p3*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/k)+@p4 elseif @v==2 z2=z2-@p1*(z2^3-1)/(3*z2^2)+@p2*z1*z2+c k=3*sqr(z1^2-b^i) z1=z1-@p3*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/k)+@p4 elseif @v==3 z2=z2-@p1*(z2^3-1)/(3*z2^2)+@p2*i*z1*z2+c k=3*sqr(z1^i-b^i) z1=z1-@p3*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 elseif @v==4 z2=z2-@p1*(z2^3-1)/(3*z2^2)+@p2*i*z1*z2+c k=3*sqr(z1^2-b^i) z1=z1-@p3*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 elseif @v==5 z2=z2-@p1*(z2^3-1)/(3*z2^i)+(@p2-1.42)*z1*z2+c k=3*sqr(z1^2-b^2) z1=z1-@p3*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 elseif @v==6 z2=z2-@p1*(z2^3-1)/(3*z2^i)+@p2*z1*z2+c k=3*sqr(z1^i-b^i) z1=z1-@p3*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/k)+@p4 elseif @v==7 z2=z2-(@p1-2.5)*(z2^3-1)/(3*z2^i)+@p2*z1*z2+c k=3*sqr(z1^2-b^i) z1=z1-@p3*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/k)+@p4 elseif @v==8 z2=z2-@p1*(z2^3-1)/(3*z2^i)+@p2*i*z1*z2+c k=3*sqr(z1^i-b^i) z1=z1-(@p3-0.815)*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 else z2=z2-@p1*(z2^3-1)/(3*z2^i)+@p2*i*z1*z2+c k=3*sqr(z1^2-b^i) z1=z1-(@p3-0.6)*(z1/3+(c*z1^2+i*b*(c*b-2*c*z1))/k)+@p4 endif pz=z1^2+z2^2 return pz return z1 return z2 endfunc default: title="Tengawn 7" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10" endparam param p5 caption="Start Parameter (Z1)" default=(-0.33,0) endparam param p15 caption="Start Parameter (Z2)" default=(-0.3,0) endparam param p1 caption="Tengawn Parameter 1" default=(1,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p4 caption="Tengawn Parameter 4" default=(0,0) endparam param p6 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p12 caption="Z2 Parameter 1" default=(1,0) endparam param p13 caption="Z2 Parameter 2" default=(0,0) endparam param p8 caption="C Parameter" default=(1,0) endparam func fn1 caption="C Function 1" default=ident() endfunc func fn3 caption="C Function 2" default=ident() endfunc param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_Tengawn8(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=@p5 z2=@p15 z3=@p18 fpixel=pz c=fn1(fpixel) return pz return z1 return z2 return z3 endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz z1=@p6*z1+@p7 z2=@p12*z2+@p13 z3=@p19*z3+@p20 c=@p8*fn3(c) z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=z2^2*(z2-@p3)/(1-@p3*z2)+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c elseif @v==1 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=sqr((z2^2+@p3-2)/(2*z2+@p3-3))+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c elseif @v==2 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=z2^2*(1-@p3*z2)/(z2-@p3)+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c elseif @v==3 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=sqr((2*z2+@p3-2)/(z2^2+@p3-1))+(@p4-1.75)*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c elseif @v==4 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=z2-(@p3-1.8)*((z2^3-1)/(3*z2^2*(z2-(z2^3-1)/(6*z2^2))))+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c elseif @v==5 z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=z2-(@p3-1.6)*((3*z2^2*(z2-(z2^3-1)/(6*z2^2)))/(z2^3-1))+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c else z1=z1-@p1*(z1/3+(c*z1^2+b*(c*b-2*c*z1))/(3*sqr(z1^2-z2^2-z3^2)))+@p2*z2*z3+c z2=z2-(@p3-2.9)*(z2^3-1)*(3*z2^2)/((3*z2^2)^2-(z2^3-1)*(6*z2))+@p4*a*z3+c z3=z3-@p16*(z3^4-z3^3-4*z3^2+7*c*z3-2)/(z3^3-3*z3^2+z3+3)+@p17*a*b+c endif pz=z1+z2+z3 return pz return z1 return z2 return z3 endfunc default: title="Tengawn 8" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param p5 caption="Start Parameter (Z1)" default=(-0.3,0) endparam param p15 caption="Start Parameter (Z2)" default=(-0.3,0) endparam param p18 caption="Start Parameter (Z3)" default=(-0.3,0) endparam param p1 caption="Tengawn Parameter 1" default=(1,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(2,0) endparam param p4 caption="Tengawn Parameter 4" default=(1,0) endparam param p16 caption="Tengawn Parameter 5" default=(1,0) endparam param p17 caption="Tengawn Parameter 6" default=(1,0) endparam param p6 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p12 caption="Z2 Parameter 1" default=(1,0) endparam param p13 caption="Z2 Parameter 2" default=(0,0) endparam param p19 caption="Z3 Parameter 1" default=(1,0) endparam param p20 caption="Z3 Parameter 2" default=(0,0) endparam param p8 caption="Pixel Parameter" default=(1,0) endparam func fn1 caption="Pixel Function 1" default=ident() endfunc func fn3 caption="Pixel Function 2" default=ident() endfunc param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_TrivarMunster2M(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z1=@sp1 z2=@sp2 z3=@sp3 fpixel=pz c=fn1(fpixel) return pz return z1 return z2 return z3 endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c elseif @v==1 z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c elseif @v==2 z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c elseif @v==3 z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) elseif @v==4 z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c elseif @v==5 z3=@p7*z3^2*(z1-@p4*c)/(1-@p4*c*z2)+@p4*c z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3)+@p3*c z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) else z1=@p5*z1^2*(z2-@p1*c)/(1-@p1*c*z3) z2=@p6*z2^2*(a-@p2)/(1-@p2*z3)+@p3*c z3=@p7*z3^2*(a-@p4*c)/(1-@p4*c*b)+@p4*c endif pz=z1+z2+z3 return pz return z1 return z2 return z3 endfunc default: title="Trivar Munster 2 M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param sp1 caption="Start Parameter (Z1)" default=(-1,0) endparam param sp2 caption="Start Parameter (Z2)" default=(0,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0,0) endparam param p1 caption="Munster Parameter 1" default=(0.3,0) endparam param p2 caption="Munster Parameter 2" default=(0.5,0) endparam param p3 caption="Munster Parameter 3" default=(1,0) endparam param p4 caption="Munster Parameter 4" default=(1.5,0) endparam param p5 caption="Munster Parameter 5" default=(1,0) endparam param p6 caption="Munster Parameter 6" default=(1,0) endparam param p7 caption="Munster Parameter 7" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam func fn1 caption="C Function" default=ident() endfunc param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@p11 z2=@p12 return pz return z1 return z2 endfunc private: complex c complex z1 complex z2 complex func Iterate(complex pz) z1=@p4*z1+@p7 z2=@p8*z2+@p9 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 if @v==0 z1=(z1^2+z1*z2)/2+@pp1*c z2=(z2^2+z1*z2)/2+@pp2*c elseif @v==1 z1=(2*z1^2+z1*z2)/3+@pp1*c z2=(2*z2^2+z1*z2)/3+@pp2*c elseif @v==2 z1=(3*z1^2+z1*z2)/4+@pp1*c z2=(3*z2^2+z1*z2)/4+@pp2*c elseif @v==3 z1=(2*z1^2+z2^2)/3+@pp1*c z2=(2*z2^2+z1^2)/3+@pp2*c elseif @v==4 z1=(3*z1^2+z2^2)/4+@pp1*c z2=(3*z2^2+z1^2)/4+@pp2*c endif pz=z1+z2 return pz return z1 return z2 endfunc default: title="Bivar Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param p11 caption="Start Parameter (Z1)" default=(0.5,0) endparam param p12 caption="Start Parameter (Z2)" default=(-0.5,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarJulia4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z1=fn1(pz) z2=fn1(pz) return pz return z1 return z2 endfunc private: complex z1 complex z2 complex func Iterate(complex pz) z1=@p4*z1+@p7 z2=@p8*z2+@p9 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 if @v==0 z1=(z1^2+z1*z2)/2+@pp1 z2=(z2^2+z1*z2)/2+@pp2 elseif @v==1 z1=(2*z1^2+z1*z2)/3+@pp1 z2=(2*z2^2+z1*z2)/3+@pp2 elseif @v==2 z1=(3*z1^2+z1*z2)/4+@pp1 z2=(3*z2^2+z1*z2)/4+@pp2 elseif @v==3 z1=(2*z1^2+z2^2)/3+@pp1 z2=(2*z2^2+z1^2)/3+@pp2 else z1=(3*z1^2+z2^2)/4+@pp1 z2=(3*z2^2+z1^2)/4+@pp2 endif pz=z1+z2 return pz return z1 return z2 endfunc default: title="Bivar Julia 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param pp1 caption="Julia Seed 1" default=(-1.25,0) endparam param pp2 caption="Julia Seed 2" default=(-1.25,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_TrivarMandelbrot3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@sp1 z2=@sp2 z3=@sp3 return pz return z1 return z2 endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=z1^2*z2/z3+@p1*c z2=z2^2*z3/z1+@p2*c z3=z3^2*z1/z2+@p3*c elseif @v==1 z1=(z1^2*z2/z3+z2^2*z3/z1)/2+@p1*c z2=(z2^2*z3/z1+z3^2*z1/z2)/2+@p2*c z3=(z3^2*z1/z2+z1^2*z2/z3)/2+@p3*c elseif @v==2 z1=z1^3*z2/z3+@p1*c z2=z2^3*z3/z1+@p2*c z3=z3^3*z1/z2+@p3*c elseif @v==3 z1=(z1^3*z2/z3+z2^3*z3/z1)/2+@p1*c z2=(z2^3*z3/z1+z3^3*z1/z2)/2+@p2*c z3=(z3^3*z1/z2+z1^3*z2/z3)/2+@p3*c elseif @v==4 z1=z1^4*z2/z3+@p1*c z2=z2^4*z3/z1+@p2*c z3=z3^4*z1/z2+@p3*c elseif @v==5 z1=(z1^4*z2/z3+z2^4*z3/z1)/2+@p1*c z2=(z2^4*z3/z1+z3^4*z1/z2)/2+@p2*c z3=(z3^4*z1/z2+z1^4*z2/z3)/2+@p3*c elseif @v==6 z1=z1^2*z2/z3+@p1*c z2=z2^2*z3/a+@p2*c z3=z3^2*a/b+@p3*c elseif @v==7 z1=(z1^2*z2/z3+z2^2*z3/z1)/2+@p1*c z2=(z2^2*z3/a+z3^2*a/z2)/2+@p2*c z3=(z3^2*a/b+a^2*b/z3)/2+@p3*c elseif @v==8 z1=z1^3*z2/z3+@p1*c z2=z2^3*z3/a+@p2*c z3=z3^3*a/b+@p3*c elseif @v==9 z1=(z1^3*z2/z3+z2^3*z3/z1)/2+@p1*c z2=(z2^3*z3/a+z3^3*a/z2)/2+@p2*c z3=(z3^3*a/b+a^3*b/z3)/2+@p3*c elseif @v==10 z1=z1^4*z2/z3+@p1*c z2=z2^4*z3/a+@p2*c z3=z3^4*a/b+@p3*c else z1=(z1^4*z2/z3+z2^4*z3/z1)/2+@p1*c z2=(z2^4*z3/a+z3^4*a/z2)/2+@p2*c z3=(z3^4*a/b+a^4*b/z3)/2+@p3*c endif pz=z1+z2+z3 return pz return z1 return z2 return z3 endfunc default: title="Trivar Mandelbrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param sp1 caption="Start Parameter (Z1)" default=(0.5,0) endparam param sp2 caption="Start Parameter (Z2)" default=(0.5,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0.5,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p1 caption="Pixel Parameter 1" default=(1,0) endparam param p2 caption="Pixel Parameter 2" default=(1,0) endparam param p3 caption="Pixel Parameter 3" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarJuliaMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @sv==0 z1=@p11 z2=@p12 elseif @sv==1 z1=fn1(pz) z2=@p12 elseif @sv==2 z1=@p11 z2=fn1(pz) else z1=fn1(pz) z2=fn1(pz) endif return pz ;return z1 ;return z2 endfunc private: complex z1 complex z2 complex c complex func Iterate(complex pz) z1=@p4*z1+@p7 z2=@p8*z2+@p9 c=@p13*c z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 b=z1 if @v==0 z1=z1*z2+@p1 z2=z1*z2+c elseif @v==1 z1=z1*z2+@p1 z2=b*z2+c else z2=z1*z2+c z1=z1*z2+@p1 endif pz=z1+z2 return pz ;return z1 ;return z2 endfunc default: title="Bivar Julia/Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param p11 caption="Start Parameter (Z1)" default=(0.5,0) visible=@sv==0 || @sv==2 endparam param p12 caption="Start Parameter (Z2)" default=(-0.5,0) visible=@sv==0 || @sv==1 endparam param v caption="Bivar Variant" enum="1""2""3" endparam param p1 caption="Julia Seed" default=(-1,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param p13 caption="Pixel Parameter" default=(1,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_TrivarMunster2J(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z1=@sp1*fn1(pz) z2=@sp2*fn1(pz) z3=@sp3*fn1(pz) return pz endfunc private: complex z1 complex z2 complex z3 complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) elseif @v==1 z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) elseif @v==2 z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) elseif @v==3 z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) elseif @v==4 z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) elseif @v==5 z3=@p7*z3^2*(z1-@p4)/(1-@p4*z2) z2=@p6*z2^2*(z1-@p2)/(1-@p2*z3) z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) else z1=@p5*z1^2*(z2-@p1)/(1-@p1*z3) z2=@p6*z2^2*(a-@p2)/(1-@p2*z3) z3=@p7*z3^2*(a-@p4)/(1-@p4*b) endif pz=z1+z2+z3 return pz endfunc default: title="Trivar Munster 2 J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param sp1 caption="Start Parameter (Z1)" default=(1,0) endparam param sp2 caption="Start Parameter (Z2)" default=(1,0) endparam param sp3 caption="Start Parameter (Z3)" default=(1,0) endparam func fn1 caption="Start Function" default=ident() endfunc param p1 caption="Munster Parameter 1" default=(3,0) endparam param p2 caption="Munster Parameter 2" default=(0.5,0) endparam param p4 caption="Munster Parameter 4" default=(2,0) endparam param p5 caption="Munster Parameter 5" default=(1,0) endparam param p6 caption="Munster Parameter 6" default=(1,0) endparam param p7 caption="Munster Parameter 7" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMandelbrot4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@sp1 z2=@sp2 z3=@sp3 return pz endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=(z1+z2)^2/4+z3+@p1*c z2=(z2+z3)^2/4+z1+@p2*c z3=(z3+z1)^2/4+z2+@p3*c elseif @v==1 z1=(z1+z2)^2/4+z3+@p1*c z2=(z2+z3)^2/4+a+@p2*c z3=(z3+a)^2/4+b+@p3*c elseif @v==2 z1=((z1+z2)^2+(z2+z3)^2)/8+z1+z3+@p1*c z2=((z2+z3)^2+(z3+z1)^2)/8+z1+z2+@p2*c z3=((z3+z1)^2+(z1+z2)^2)/8+z2+z3+@p3*c elseif @v==3 z1=((z1+z2)^2+(z2+z3)^2)/8+z1+z3+@p1*c z2=((z2+z3)^2+(z3+a)^2)/8+a+z2+@p2*c z3=((z3+a)^2+(a+b)^2)/8+b+z3+@p3*c elseif @v==4 z1=(z1+z2)^2/4-z3+@p1*c z2=(z2+z3)^2/4-z1+@p2*c z3=(z3+z1)^2/4-z2+@p3*c elseif @v==5 z1=(z1+z2)^2/4-z3+@p1*c z2=(z2+z3)^2/4-a+@p2*c z3=(z3+a)^2/4-b+@p3*c elseif @v==6 z1=((z1+z2)^2+(z2+z3)^2)/8-z1-z3+@p1*c z2=((z2+z3)^2+(z3+z1)^2)/8-z1-z2+@p2*c z3=((z3+z1)^2+(z1+z2)^2)/8-z2-z3+@p3*c elseif @v==7 z1=((z1+z2)^2+(z2+z3)^2)/8-z1-z3+@p1*c z2=((z2+z3)^2+(z3+a)^2)/8-a-z2+@p2*c z3=((z3+a)^2+(a+b)^2)/8-b-z3+@p3*c elseif @v==8 z1=(z1+z2)^2/4+z1+z3+@p1*c z2=(z2+z3)^2/4+z2+z1+@p2*c z3=(z3+z1)^2/4+z3+z2+@p3*c elseif @v==9 z1=(z1+z2)^2/4+z1+z3+@p1*c z2=(z2+z3)^2/4+z2+a+@p2*c z3=(z3+a)^2/4+z3+b+@p3*c elseif @v==10 z1=(z1+z2)^2/4-z1-z3+@p1*c z2=(z2+z3)^2/4-z2-z1+@p2*c z3=(z3+z1)^2/4-z3-z2+@p3*c else z1=(z1+z2)^2/4-z1-z3+@p1*c z2=(z2+z3)^2/4-z2-a+@p2*c z3=(z3+a)^2/4-z3-b+@p3*c endif pz=z1+z2+z3 return pz endfunc default: title="Trivar Mandelbrot 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param sp1 caption="Start Parameter (Z1)" default=(-0.5,0) endparam param sp2 caption="Start Parameter (Z2)" default=(-0.5,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0.5,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p1 caption="Pixel Parameter 1" default=(1,0) endparam param p2 caption="Pixel Parameter 2" default=(1,0) endparam param p3 caption="Pixel Parameter 3" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarJuliaMandelbrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @sv==0 z1=@p11 z2=@p12 elseif @sv==1 z1=fn1(pz) z2=@p12 elseif @sv==2 z1=@p11 z2=fn1(pz) else z1=fn1(pz) z2=fn1(pz) endif return pz endfunc private: complex z1 complex z2 complex c complex func Iterate(complex pz) z1=@p4*z1+@p7 z2=@p8*z2+@p9 c=@p13*c z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z1=z1+@p6/z1 z2=z2+@p6/z2 if @v==0 z1=(z1^2+z1*z2)/2+@p1 z2=(z2^2+z1*z2)/2+c elseif @v==1 z2=(z1^2+z1*z2)/2+c z1=(z2^2+z1*z2)/2+@p1 elseif @v==2 z1=(z1+z2)^2/4+@p1 z2=(z1+z2)^2/4+c elseif @v==3 z2=(z1+z2)^2/4+c z1=(z1+z2)^2/4+@p1 elseif @v==4 z1=(z1+z2)^2/4+z1+@p1 z2=(z1+z2)^2/4+z2+c elseif @v==5 z2=(z1+z2)^2/4+z1+c z1=(z1+z2)^2/4+z2+@p1 elseif @v==6 z1=(z1+z2)^2/4-z1+@p1 z2=(z1+z2)^2/4-z2+c elseif @v==7 z2=(z1+z2)^2/4-z1+c z1=(z1+z2)^2/4-z2+@p1 elseif @v==8 z1=(z1^2+z1*z2)/2+z1+@p1 z2=(z2^2+z1*z2)/2+z2+c elseif @v==9 z2=(z1^2+z1*z2)/2+z1+c z1=(z2^2+z1*z2)/2+z2+@p1 elseif @v==10 z1=(z1^2+2*z1*z2)/3+z1+@p1 z2=(z2^2+2*z1*z2)/3+z2+c elseif @v==11 z2=(z1^2+2*z1*z2)/3+z1+c z1=(z2^2+2*z1*z2)/3+z2+@p1 elseif @v==12 z1=(2*z1^2+z1*z2)/3+z1+@p1 z2=(2*z2^2+z1*z2)/3+z2+c elseif @v==13 z2=(2*z1^2+z1*z2)/3+z1+c z1=(2*z2^2+z1*z2)/3+z2+@p1 elseif @v==14 z1=(z1^2+2*z1*z2)/3+@p1 z2=(z2^2+2*z1*z2)/3+c elseif @v==15 z2=(z1^2+2*z1*z2)/3+c z1=(z2^2+2*z1*z2)/3+@p1 elseif @v==16 z1=(2*z1^2+z1*z2)/3+@p1 z2=(2*z2^2+z1*z2)/3+c elseif @v==17 z2=(2*z1^2+z1*z2)/3+c z1=(2*z2^2+z1*z2)/3+@p1 endif pz=z1+z2 return pz endfunc default: title="Bivar Julia/Mandelbrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param p11 caption="Start Parameter (Z1)" default=(0,0) visible=@sv==0 || @sv==2 endparam param p12 caption="Start Parameter (Z2)" default=(0,0) visible=@sv==0 || @sv==1 endparam param v caption="Bivar Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17""18" endparam param p1 caption="Julia Seed" default=(-1.8,0) endparam param p4 caption="Z1 Parameter 1" default=(1,0) endparam param p7 caption="Z1 Parameter 2" default=(0,0) endparam param p8 caption="Z2 Parameter 1" default=(1,0) endparam param p9 caption="Z2 Parameter 2" default=(0,0) endparam param p13 caption="Pixel Parameter" default=(1,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p5 caption="Add Sqr Parameter" default=(0,0) endparam param p6 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Tengawn9(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) z1=fn1(pz) z1=z1+@p19/z1+@p20*((z1-1i)/(z1+1i)) z2=z1 z3=z1 z4=z1 fpixel=pz if @jm==0 c=@p9 else c=fn1(fpixel) endif i=0 return pz return z1 return z2 return z3 return z4 return c endfunc private: complex z1 complex z2 complex z3 complex z4 complex c int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz i=i+1 z1=@p11*z1+@p12 z2=@p13*z2+@p14 z3=@p15*z3+@p16 z4=@p17*z4+@p18 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z3=z3+@p5*sqr(z3) z4=z4+@p5*sqr(z4) a=z1+z4 b=z2*z3+z4^2 d=z1^2+z2*z3 z1=z1-@p1*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-@p2*fn4(z2/3+(@p7*d-z3*@p6*a)/c^2) g=z3-@p3*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) z2=f z3=g z4=h c=z1*z4-z2*z3 pz=z1+z2+z3+z4 return pz return c endfunc default: title="Tengawn 9" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param p19 caption="Start Parameter 1" default=(0,0) endparam param p20 caption="Start Parameter 2" default=(0,0) endparam param p1 caption="Tengawn Parameter 1" default=(0.75,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p4 caption="Tengawn Parameter 4" default=(1,0) endparam param p6 caption="Tengawn Parameter 5" default=(0.75,0) endparam param p7 caption="Tengawn Parameter 6" default=(1,0) endparam param p8 caption="Tengawn Parameter 7" default=(1,0) endparam param p10 caption="Tengawn Parameter 8" default=(1,0) endparam param p9 caption="Julia Seed" default=(1,0) visible=@jm==0 endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn3 caption="Tengawn Function 1" default=ident() endfunc func fn4 caption="Tengawn Function 2" default=ident() endfunc func fn5 caption="Tengawn Function 3" default=ident() endfunc func fn6 caption="Tengawn Function 4" default=ident() endfunc param p11 caption="Z1 Parameter 1" default=(1,0) endparam param p12 caption="Z1 Parameter 2" default=(0,0) endparam param p13 caption="Z2 Parameter 1" default=(1,0) endparam param p14 caption="Z2 Parameter 2" default=(0,0) endparam param p15 caption="Z3 Parameter 1" default=(1,0) endparam param p16 caption="Z3 Parameter 2" default=(0,0) endparam param p17 caption="Z4 Parameter 1" default=(1,0) endparam param p18 caption="Z4 Parameter 2" default=(0,0) endparam param p5 caption="Add Sqr Parameter" default=(0.3,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_Tengawn10(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) if @jm==0 z1=fn1(pz) else z1=@sp endif z1=z1+@p19/z1+@p20*((z1-1i)/(z1+1i)) if @sv==0 z2=z1 z3=z1 z4=z1 elseif @sv==1 z2=z1 z3=-z1 z4=z1 elseif @sv==2 z2=z1 z3=z1 z4=-z1 elseif @sv==3 z2=z1 z3=-z1 z4=-z1 elseif @sv==4 z2=-z1 z3=z1 z4=z1 elseif @sv==5 z2=-z1 z3=-z1 z4=z1 elseif @sv==6 z2=-z1 z3=z1 z4=-z1 elseif @sv==7 z2=-z1 z3=-z1 z4=-z1 endif fpixel=pz if @jm==0 c=@p9 else c=fn1(fpixel) endif i=0 return pz return z1 return z2 return z3 return z4 return c endfunc private: complex z1 complex z2 complex z3 complex z4 complex c int i complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz i=i+1 z1=@p11*z1+@p12 z2=@p13*z2+@p14 z3=@p15*z3+@p16 z4=@p17*z4+@p18 z1=z1+@p5*sqr(z1) z2=z2+@p5*sqr(z2) z3=z3+@p5*sqr(z3) z4=z4+@p5*sqr(z4) z1=z1+@p21/z1 z2=z2+@p21/z2 z3=z3+@p21/z3 z4=z4+@p21/z4 a=z1+z4 b=z2*z3+z4^2 d=z1^2+z2*z3 if @v==0 z1=z1-@p1*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-@p2*fn4((z2*a-@p6*c)/(3*d))+@p7 g=z3-@p3*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6((z4*a-@p8*c)/(3*d))+@p10 elseif @v==1 z1=z1-@p1*fn3((z1*a-@p7*c)/(3*b))+@p6+3.65 f=z2-@p2*fn4((z2*a-(@p6+3.65)*c)/(3*d))+@p7 g=z3-@p3*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) elseif @v==2 z1=z1-@p1*fn3((z1*a-@p7*c)/(3*b))+@p6-0.5 f=z2-@p2*fn4(z2/3+(@p7*d-z3*(@p6-0.5)*a)/c^2) g=z3-@p3*@fn5((z3*a-@p10*c)/(3*b))+@p8 h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) elseif @v==3 z1=z1-@p1*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-@p2*fn4(z2/3+(@p7*d-z3*@p6*a)/c^2) g=z3-(@p3-2)*@fn5((z3*a-@p10*c)/(3*b))+@p8 h=z4-@p4*@fn6((z4*a-@p8*c)/(3*d))+@p10 elseif @v==4 z1=z1-@p1*fn3((z1*a-@p7*c)/(3*b))+@p6 f=z2-(@p2-0.8)*fn4(z2/3+(@p7*d-z3*@p6*a)/c^2) g=z3-@p3*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) elseif @v==5 z1=z1-@p1*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-(@p2-0.4)*fn4((z2*a-@p6*c)/(3*d))+@p7 g=z3-@p3*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) elseif @v==6 z1=z1-(@p1+0.85)*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-@p2*fn4(z2/3+(@p7*d-z3*@p6*a)/c^2) g=z3-@p3*@fn5((z3*a-@p10*c)/(3*b))+@p8 h=z4-@p4*@fn6(z4/3+(@p10*d-z3*@p8*a)/c^2) else z1=z1-@p1*fn3(z1/3+(@p6*b-z2*@p7*a)/c^2) f=z2-@p2*fn4(z2/3+(@p7*d-z3*@p6*a)/c^2) g=z3-(@p3-1.715)*@fn5(z3/3+(@p8*b-z2*@p10*a)/c^2) h=z4-@p4*@fn6((z4*a-@p8*c)/(3*d))+@p10 endif z2=f z3=g z4=h c=z1*z4-z2*z3 pz=z1+z2+z3+z4 return pz return c endfunc default: title="Tengawn 10" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter (M)" default=(-0.6,0) visible=@jm==1 endparam param v caption="Tengawn Variant" enum="1""2""3""4""5""6""7""8" endparam param p19 caption="Start Parameter 1" default=(0,0) endparam param p20 caption="Start Parameter 2" default=(0,0) endparam param p1 caption="Tengawn Parameter 1" default=(0.75,0) endparam param p2 caption="Tengawn Parameter 2" default=(1,0) endparam param p3 caption="Tengawn Parameter 3" default=(1,0) endparam param p4 caption="Tengawn Parameter 4" default=(1,0) endparam param p6 caption="Tengawn Parameter 5" default=(0.75,0) endparam param p7 caption="Tengawn Parameter 6" default=(1,0) endparam param p8 caption="Tengawn Parameter 7" default=(1,0) endparam param p10 caption="Tengawn Parameter 8" default=(1,0) endparam param p9 caption="Julia Seed" default=(1,0) visible=@jm==0 endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn3 caption="Tengawn Function 1" default=ident() endfunc func fn4 caption="Tengawn Function 2" default=ident() endfunc func fn5 caption="Tengawn Function 3" default=ident() endfunc func fn6 caption="Tengawn Function 4" default=ident() endfunc param p11 caption="Z1 Parameter 1" default=(1,0) endparam param p12 caption="Z1 Parameter 2" default=(0,0) endparam param p13 caption="Z2 Parameter 1" default=(1,0) endparam param p14 caption="Z2 Parameter 2" default=(0,0) endparam param p15 caption="Z3 Parameter 1" default=(1,0) endparam param p16 caption="Z3 Parameter 2" default=(0,0) endparam param p17 caption="Z4 Parameter 1" default=(1,0) endparam param p18 caption="Z4 Parameter 2" default=(0,0) endparam param p5 caption="Add Sqr Parameter" default=(-0.05,0) endparam param p21 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_TrivarMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@sp1 z2=@sp2 z3=@sp3 return pz endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 if @v==0 z1=z1^2+@p1*z2+c z2=z2^2+@p2*z3+c z3=z3^2+@p3*z1+c elseif @v==1 z1=z1^2+@p1*z2+c z2=z2^2+@p2*z3+c z3=z3^2+@p3*a+c elseif @v==2 z1=z1^2*z2/z3+@p1*z2+c z2=z2^2*z3/z1+@p2*z3+c z3=z3^2*z1/z2+@p3*z1+c elseif @v==3 z1=z1^2*z2/z3+@p1*z2+c z2=z2^2*z3/a+@p2*z3+c z3=z3^2*a/b+@p3*a+c elseif @v==4 z1=z1^2+@p1*(z2+z3)/2+c z2=z2^2+@p2*(z3+z1)/2+c z3=z3^2+@p3*(z1+z2)/2+c elseif @v==5 z1=z1^2+@p1*(z2+z3)+c z2=z2^2+@p2*(z3+a)+c z3=z3^2+@p3*(a+b)+c elseif @v==6 z1=z1^2*z2/z3+@p1*(z2-z3)+c z2=z2^2*z3/z1+@p2*(z3-z1)+c z3=z3^2*z1/z2+@p3*(z1-z2)+c elseif @v==7 z1=z1^2*z2/z3+@p1*(z2-z3)+c z2=z2^2*z3/a+@p2*(z3-a)+c z3=z3^2*a/b+@p3*(a-b)+c elseif @v==8 z1=(z1^2+z2^2)/2+@p1*(z2-z3)+c z2=(z2^2+z3^2)/2+@p2*(z3-a)+c z3=(z3^2+a^2)/2+@p3*(a-b)+c elseif @v==9 z1=(z1^2+z2^2)/2+@p1*(z2+z3)+c z2=(z2^2+z3^2)/2+@p2*(z3+a)+c z3=(z3^2+a^2)/2+@p3*(a+b)+c elseif @v==10 z1=(z1+z2)^2/4+@p1*(z2+z3)/2+c z2=(z2+z3)^2/4+@p2*(z3+z1)/2+c z3=(z3+z1)^2/4+@p3*(z1+z2)/2+c elseif @v==11 z1=z1^2+@p1*(z2+z3-z1)/2+c z2=z2^2+@p2*(z3+z1-z2)/2+c z3=z3^2+@p3*(z1+z2-z3)/2+c else z1=z1^2+@p1*(z2+z3-z1)+c z2=z2^2+@p2*(z3+a-z2)+c z3=z3^2+@p3*(a+b-z3)+c endif pz=z1+z2+z3 return pz endfunc default: title="Trivar Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param sp1 caption="Start Parameter (Z1)" default=(-0.5,0) endparam param sp2 caption="Start Parameter (Z2)" default=(-0.5,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0.5,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p1 caption="Trivar Parameter 1" default=(1,0) endparam param p2 caption="Trivar Parameter 2" default=(1,0) endparam param p3 caption="Trivar Parameter 3" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMandelbrot6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@sp1 z2=@sp2 z3=@sp3 return pz endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 if @v==0 z1=z1^2+z3^2+@p1*z3+c z2=z2^2+z1^2+@p2*z1+c z3=z3^2+z2^2+@p3*z2+c elseif @v==1 z1=z1^2+z2^2+@p1*z2+c z2=z2^2+z3^2+@p2*z3+c z3=z3^2+z1^2+@p3*z1+c elseif @v==2 z1=z1^2+z2^2+@p1*z1+c z2=z2^2+z3^2+@p2*z2+c z3=z3^2+z1^2+@p3*z3+c elseif @v==3 z1=z1^2+z3^2+@p1*z1+c z2=z2^2+z1^2+@p2*z2+c z3=z3^2+z2^2+@p3*z3+c elseif @v==4 z1=z1^2+z3^2+@p1*z3+@p2*z1+c z2=z2^2+z1^2+@p2*z1+@p3*z2+c z3=z3^2+z2^2+@p3*z2+@p1*z3+c elseif @v==5 z1=z1^2+z2^2+(@p1*z2+@p2*z3)/2+c z2=z2^2+z3^2+(@p2*z3+@p3*z1)/2+c z3=z3^2+z1^2+(@p3*z1+@p1*z2)/2+c elseif @v==6 z1=z1^2+z2^2+@p1*z2+c z2=z2^2+z3^2-z1^2+@p2*z3+c z3=z3^2+z1^2+@p3*z1+c elseif @v==7 z1=z1^2+z3^2-(@p1*z1+@p2*z2)/2+c z2=z2^2+z1^2-(@p2*z2+@p3*z3)/2+c z3=z3^2+z2^2-(@p3*z3+@p1*z1)/2+c elseif @v==8 z1=z1^2+z3^2+@p1*z3+c z2=z2^2+z1^2-z3^2+@p2*z1+c z3=z3^2+z2^2+@p3*z2+c elseif @v==9 z1=z1^2+z3^2-@p1*(z3+z2)/2+c z2=(z2+z1)^2+z3^2+@p2*z1+c z3=z3^2+z2^2-z1^2-@p3*z2+c elseif @v==10 z1=z1^2+z2^2+@p1*z2*z3/z1+c z2=z2^2+z3^2-@p2*z3*z1/(4*z2)+c z3=z3^2+z1^2+@p3*z1*z2/(4*z3)+c elseif @v==11 z1=z1^2-@p1*z3+@p2*z1-@p3*z2/4+c z2=z1^2+z2^2+@p2*z1-@p3*z2/4+c z3=z1^2+z2^2+z3^2-@p3*z2/4+c elseif @v==12 z1=z1^2+z2^2+z3^2+@p1*z3-@p2*z1/2-@p3*z2/10+c z2=z2^2+z3^2-@p2*z1/2-@p3*z2/10+c z3=z3^2-@p3*z2/10+c elseif @v==13 z1=z1^2+z2^2+z3^2-@p3*z2/4+c z2=z2^2+z3^2-@p2*z1-@p3*z2/4+c z3=z3^2-@p1*z3-@p2*z1-@p3*z2/4+c elseif @v==14 z1=z1^2+z3^2-@p1*z3/4+c z2=z2^2+z1^2+@p2*z1/2+2*c z3=z3^2+z2^2-@p3*z2/4+3*c elseif @v==15 z1=z1^2+z2^2-@p1*z2/(4*z3)+c z2=z2^2+z3^2-@p2*z3/(4*z1)+c z3=z3^2+z1^2+@p3*z1/(4*z2)+c elseif @v==16 z1=z1^2+z2^2-@p1*z1/(4*z2)+c z2=z2^2+z3^2-@p2*z2/(4*z3)+c z3=z3^2+z1^2+@p3*z3/(4*z1)+c elseif @v==17 z1=z1^2+z2^2+@p1*z1*z2/z3+c z2=z2^2+z3^2+@p2*z2*z3/(4*z1)+c z3=z3^2+z1^2+@p3*z3*z1/(4*z2)+c elseif @v==18 z1=z1^2*z2/z3+z3^2+@p1*z1/2+c z2=z2^2+z1^2+@p2*z2*z3/z1+c z3=z3^2+z2^2-@p3*(z3+z1)/2+c else z1=z1^2*z2/z3+z3^2+@p3*(z3+z1)/2+c z2=z2^2+z1^2-@p2*z2*z3/z1+c z3=z3^2+z2^2+c-@p1*z1/2 endif pz=z1+z2+z3 return pz endfunc default: title="Trivar Mandelbrot 6" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20" endparam param sp1 caption="Start Parameter (Z1)" default=(-0.5,0) endparam param sp2 caption="Start Parameter (Z2)" default=(-0.5,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0.5,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p1 caption="Trivar Parameter 1" default=(1,0) endparam param p2 caption="Trivar Parameter 2" default=(1,0) endparam param p3 caption="Trivar Parameter 3" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMandelbrot7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=@sp1 z2=@sp2 z3=@sp3 return pz endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 a=z1 b=z2 d=z3 if @v==0 z1=z1^2-z2+@p1*z3+c z2=z2^2-z3+@p2*z1+c z3=z3^2-z1+@p3*z2+c elseif @v==1 z1=z1^2-z1+@p1*z3/2+c z2=z2^2-z2+@p2*z1/2+c z3=z3^2-z3-@p3*z2/2+c elseif @v==2 z1=z1^2-z2+@p1*z3/2+c z2=z2^2-z3+@p2*z1/2+c z3=z3^2-z1+@p3*z2/2+c z1=z1^2-z2+@p1*z3/2+c elseif @v==3 z1=z1^2-z2-@p1*z3/2+c z2=z2^2+z3+@p2*z1/2+c z3=z3^2-z1+@p3*z2/2+c z1=z1^2+z2-@p1*z3/2+c elseif @v==4 z1=z1^2-z2+@p1*z3+c z2=z2^2-z3+@p2*z1/2+c z3=z3^2-z1-@p3*z2+c z2=z2^2-z3+@p2*z1/2+c elseif @v==5 z1=z1^2-z1+@p1*z3/2+c z2=z2^2-z2+@p2*z1/2+c z3=z3^2-z3+@p3*z2/2+c z2=z2^2-z2+@p2*z1/2+c elseif @v==6 z1=z1^2-z2+@p1*z3+c z2=z2^2-z3+@p2*z1/2+c z3=z3^2-z1-@p3*z2/2+c z3=z3^2-z1-@p3*z2/2+c elseif @v==7 z1=z1^2-z1+@p1*z3/2+c z2=z2^2-z2+@p2*z1/2+c z3=z3^2-z3-@p3*z2/2+c z3=z3^2-z3-@p3*z2/2+c elseif @v==8 z1=z1^2-exp(z2)+@p1*z3+c z2=z2^2-z3+@p2*z1+c z3=z3^2-z1+@p3*z2+c elseif @v==9 z1=z1^2+z2^2+@p1*z3+c z2=z2^2-z3+@p2*z1+c z3=z3^2-z1-@p3*z2/2+c elseif @v==10 z1=z1^2-z2+@p1*z3+c z2=z2^2-z3-@p2*z1+c z3=z3^2-z1+@p3*z2*c elseif @v==11 z1=z1^2-z2+1.25*@p1*z3 z2=z2^2-z3-1.35*@p2*z1+c z3=z3^2-z1-0.25*@p3*z2*c+c elseif @v==12 z1=z1^2-z2+@p1*z3+c z2=sqr(z2)^2-z3+@p2*z1+c z3=z3^2-z1+@p3*z2+c elseif @v==13 z1=sqr(z1)^2-z2+@p1*z3+c z2=z2^2-z3+@p2*z1+c z3=z3^2-z1-@p3*z2+c elseif @v==14 z1=z1^3-z1^2-@p1*z3/2+c z2=z2^2-z2+@p2*z1/2+c z3=z3^2-z3-@p3*z2/2+c elseif @v==15 z1=z1^2-z1-@p1*z3/4+c z2=z2^3-z2^2-@p2*z1/4+c z3=z3^2-z3+@p3*z2/4+c elseif @v==16 z1=z1^2*z2/z3-z2-@p1*z3/3+c z2=-z2^2+z3^2-@p2*z1+c z3=z3^2-z1*z2/z3-@p3*z2+c elseif @v==17 z1=z1^2-z2+3*@p1*z3/4+c z2=z2^2-z3+@p2*a+c z3=z3^2-a+@p3*b+c elseif @v==18 z1=z1^2-z1+@p1*z3/2+c z2=z2^2-z2-@p2*a/6+c z3=z3^2-z3+@p3*b+c else z1=z1^2-z2+2*@p1*z3+c z2=z2^2-z3+@p2*a/2+c z3=z3^2-a-4*@p3*b/3+c z2=b^2-d+@p2*z1/2+c endif pz=z1+z2+z3 return pz endfunc default: title="Trivar Mandelbrot 7" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20" endparam param sp1 caption="Start Parameter (Z1)" default=(-0.5,0) endparam param sp2 caption="Start Parameter (Z2)" default=(-0.5,0) endparam param sp3 caption="Start Parameter (Z3)" default=(0.5,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p1 caption="Trivar Parameter 1" default=(1,0) endparam param p2 caption="Trivar Parameter 2" default=(1,0) endparam param p3 caption="Trivar Parameter 3" default=(1,0) endparam param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0.25,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Munster19(common.ulb:DivergentFormula) { public: complex func Init(complex pz) return @sf(pz) endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=exp(@p1*1i)*((pz-1/@p2)/(1-pz/@p2))^3*(pz-@p2^2*exp(-@p1*1i))/(1-@p2^2*exp(@p1*1i)*pz) return pz endfunc default: title="Munster 19" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Munster Parameter 1" default=0.0 endparam param p2 caption="Munster Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Munster20(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) pz=fn1(pz) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=@p1*pz^2*(pz-@p2)/(1-(2*@p2-3)*pz/(@p2-2))+@p3 elseif @jm==1 pz=@p1*pz^2*(pz-@p2*c)/(1-(2*@p2*c-3)*pz/(@p2*c-2))+@p3 elseif @jm==2 pz=@p1*pz^2*(pz-@p2)/(1-(2*@p2-3)*pz/(@p2-2))+(@p3+1)*c else pz=@p1*pz^2*(pz-@p2*c)/(1-(2*@p2*c-3)*pz/(@p2*c-2))+(@p3+1)*c endif return pz endfunc default: title="Munster 20" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param p1 caption="Munster Parameter 1" default=(1,0) endparam param p2 caption="Munster Parameter 2" default=(-2,0) endparam param p3 caption="Munster Parameter 3" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_TrivarX17(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) z1=fn1(pz) z2=fn1(pz) z3=fn1(pz) return pz endfunc private: complex z1 complex z2 complex z3 complex c complex func Iterate(complex pz) z1=@z1p1*z1+@z1p2 z2=@z2p1*z2+@z2p2 z3=@z3p1*z3+@z3p2 z1=z1+@p11*sqr(z1) z2=z2+@p11*sqr(z2) z3=z2+@p11*sqr(z3) z1=z1+@p14/z1 z2=z2+@p14/z2 z3=z3+@p14/z3 if @v==0 z1=@p1*z1^2*(z2-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 z2=@p1*z2^2*(z3-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 z3=@p1*z3^2*(z1-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 elseif @v==1 z1=@p1*z1^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 z2=@p1*z2^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 z3=@p1*z3^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 elseif @v==2 z1=@p1*z1^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 z2=@p1*z2^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 z3=@p1*z3^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 elseif @v==3 z1=@p1*z1^2*(z3-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 z2=@p1*z2^2*(z1-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 z3=@p1*z3^2*(z2-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 elseif @v==4 z1=(@p1-0.5)*z1^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 z2=(@p1-0.5)*z2^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 z3=(@p1-0.5)*z3^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 elseif @v==5 z1=(@p1-1)*z1^2*(z3-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3 z2=(@p1-1)*z2^2*(z1-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3 z3=(@p1-1)*z3^2*(z2-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3 elseif @v==6 z1=@p1*z1^2*(z2-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3*c z2=@p1*z2^2*(z3-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3*c z3=@p1*z3^2*(z1-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3*c elseif @v==7 z1=@p1*z1^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3*c z2=@p1*z2^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3*c z3=@p1*z3^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3*c elseif @v==8 z1=@p1*z1^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3*c z2=@p1*z2^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3*c z3=@p1*z3^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3*c elseif @v==9 z1=@p1*z1^2*(z3-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+@p3*c z2=@p1*z2^2*(z1-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+@p3*c z3=@p1*z3^2*(z2-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+@p3*c elseif @v==10 z1=@p1*z1^2*(z2-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+(@p3+2)*c z2=@p1*z2^2*(z3-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+(@p3+2)*c z3=@p1*z3^2*(z1-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+(@p3+2)*c else z1=@p1*z1^2*(z3-@p2)/(1-(2*@p2-3)*z1/(@p2-2))+(@p3+2)*c z2=@p1*z2^2*(z1-@p2)/(1-(2*@p2-3)*z2/(@p2-2))+(@p3+2)*c z3=@p1*z3^2*(z2-@p2)/(1-(2*@p2-3)*z3/(@p2-2))+(@p3+2)*c endif pz=z1+z2+z3 return pz endfunc default: title="Trivar X 17" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="J1""J2""J3""J4""J5""J6""M1""M2""M3""M4""M5""M6" endparam param p1 caption="Trivar Parameter 1" default=(-1,0) endparam param p2 caption="Trivar Parameter 2" default=(2.5,0) endparam param p3 caption="Trivar Parameter 3" default=(1,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param z1p1 caption="Z1 Parameter 1" default=(1,0) endparam param z1p2 caption="Z1 Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param z3p1 caption="Z3 Parameter 1" default=(1,0) endparam param z3p2 caption="Z3 Parameter 2" default=(0,0) endparam param p11 caption="Add Sqr Parameter" default=(0,0) endparam param p14 caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_Munster21(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) pz=fn1(pz) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p3*1i)*pz^2*((pz-@p1)/(1-@p1*pz))^3*(pz-@p2)/(1-@p2*pz) elseif @jm==1 pz=exp(-@p3*1i)*c*pz^2*((pz-@p1)/(1-@p1*pz))^3*(pz-@p2)/(1-@p2*pz) elseif @jm==2 pz=exp(-@p3*1i)*pz^3*((pz-@p1)/(1-@p1*pz))^2*(pz-(@p2-1.8))/(1-(@p2-1.8)*pz) elseif @jm==3 pz=exp(-@p3*1i)*c*pz^3*((pz-@p1)/(1-@p1*pz))^2*(pz-(@p2-1.8))/(1-(@p2-1.8)*pz) elseif @jm==4 pz=exp(-@p3*1i)*pz^2*(pz-(@p1-0.5))^2*(pz-(@p2-1.6))/((1-(@p1-0.5)*pz)^2*(1-(@p2-1.6)*pz)) elseif @jm==5 pz=exp(-@p3*1i)*c*pz^2*(pz-(@p1-0.5))^2*(pz-(@p2-1.6))/((1-(@p1-0.5)*pz)^2*(1-(@p2-1.6)*pz)) elseif @jm==6 pz=exp(-@p3*1i)*pz^2*(pz-(@p1-0.5))*(pz-(@p2-1.7))/((1-(@p1-0.5)*pz)*(1-(@p2-1.7)*pz)) elseif @jm==7 pz=exp(-@p3*1i)*c*pz^2*(pz-(@p1-0.5))*(pz-(@p2-1.7))/((1-(@p1-0.5)*pz)*(1-(@p2-1.7)*pz)) elseif @jm==8 pz=exp(-@p3*1i)*pz^2*(pz-(@p1-0.5))^2*(pz-(@p2+0.9))^2/((1-(@p1-0.5)*pz)^2*(1-(@p2+0.9)*pz)^2) else pz=exp(-@p3*1i)*c*pz^2*(pz-(@p1-0.5))^2*(pz-(@p2+0.9))^2/((1-(@p1-0.5)*pz)^2*(1-(@p2+0.9)*pz)^2) endif return pz endfunc default: title="Munster 21" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""M1""J2""M2""J3""M3""J4""M4""J5""M5" endparam param p1 caption="Munster Parameter 1" default=(1.65,0) endparam param p2 caption="Munster Parameter 2" default=(0.4,0) endparam param p3 caption="Munster Parameter 3" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_Munster22(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @jm==0 pz=fn1(pz) else if @sv==0 pz=@sp else pz=fn1(pz) endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p3*1i)*pz^3*((pz^2-@p1)/(1-@p1*pz))^2*(pz-(@p2-1.8))/(1-(@p2-1.8)*pz) else pz=exp(-@p3*1i)*c*pz^3*((pz^2-(@p1+1.8))/(1-(@p1+1.8)*pz))^2*(pz-(@p2+1.8))/(1-(@p2+1.8)*pz) endif return pz endfunc default: title="Munster 22" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="Parameter""Pixel" visible=@jm==1 default=1 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 && @sv==0 endparam param p1 caption="Munster Parameter 1" default=(3.7,0) endparam param p2 caption="Munster Parameter 2" default=(0.4,0) endparam param p3 caption="Munster Parameter 3" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_Munster23(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) pz=fn1(pz) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p2*1i)*((pz-@p1)/(1-@p1*pz))^2/pz^2 elseif @jm==1 pz=exp(-@p2*1i)*c*((pz-@p1)/(1-@p1*pz))^2/pz^2 elseif @jm==2 pz=exp(-@p2*1i)*c*((pz-(@p1-1.1)*c)/(1-(@p1-1.1)*pz*c))^2/pz^2 elseif @jm==3 pz=exp(-@p2*1i)*((pz-(@p1-1.1)*c)/(1-(@p1-1.1)*c*pz))^2/pz^2 elseif @jm==4 pz=exp(-@p2*1i)*((pz-(@p1-0.23))/(1-(@p1-0.23)*pz))^3/pz^3 elseif @jm==5 pz=exp(-@p2*1i)*c*((pz-(@p1-0.23))/(1-(@p1-0.23)*pz))^3/pz^3 elseif @jm==6 pz=exp(-@p2*1i)*c*((pz-(@p1-1.03)*c)/(1-(@p1-1.03)*c*pz))^3/pz^3 elseif @jm==7 pz=exp(-@p2*1i)*((pz-(@p1-1.03)*c)/(1-(@p1-1.03)*c*pz))^3/pz^3 elseif @jm==8 pz=exp(-@p2*1i)*((pz-(@p1+0.06))/(1-(@p1+0.06)*pz))^3/pz^2 elseif @jm==9 pz=exp(-@p2*1i)*c*((pz-(@p1+0.06))/(1-(@p1+0.06)*pz))^3/pz^2 elseif @jm==10 pz=exp(-@p2*1i)*c*((pz-(@p1-1.24)*c)/(1-(@p1-1.24)*c*pz))^3/pz^2 elseif @jm==11 pz=exp(-@p2*1i)*((pz-(@p1-1.24)*c)/(1-(@p1-1.24)*c*pz))^3/pz^2 elseif @jm==12 pz=exp(-@p2*1i)*((pz-(@p1-1.51))/(1-(@p1-1.51)*pz))/pz^2 elseif @jm==13 pz=exp(-@p2*1i)*c*((pz-(@p1-1.51))/(1-(@p1-1.51)*pz))/pz^2 elseif @jm==14 pz=exp(-@p2*1i)*c*((pz-(@p1-0.31)*c)/(1-(@p1-0.31)*c*pz))/pz^2 elseif @jm==15 pz=exp(-@p2*1i)*((pz-(@p1-0.31)*c)/(1-(@p1-0.31)*c*pz))/pz^2 elseif @jm==16 pz=sqr(pz) pz=exp(-@p2*1i)*((sqr(pz)-(@p1-1.3))/(1-(@p1-1.3)*sqr(pz)))^2/pz^2 elseif @jm==17 pz=sqr(pz) pz=exp(-@p2*1i)*c*((sqr(pz)-(@p1-1.3))/(1-(@p1-1.3)*sqr(pz)))^2/pz^2 else pz=flip(pz) pz=exp(-@p2*1i)*((pz-@p1)/(1-@p1*pz))^2/pz^2 endif return pz endfunc default: title="Munster 23" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""M1a""M1b""M1c""J2""M2a""M2b""M2c""J3"\ "M3a""M3b""M3c""j4""M4a""M4b""M4c""J5""M5""J6" endparam param p1 caption="Munster Parameter 1" default=(0.7,0) endparam param p2 caption="Munster Parameter 2" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_Munster24(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @jm==0 || @jm==1 || @jm==2 pz=fn1(pz) else if @sv==0 pz=@sp else pz=fn1(pz) endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p3*1i)*pz^2*((pz-@p1)/(1-@p1*pz))/((pz-@p2)/(1-@p2*pz)) elseif @jm==1 pz=exp(-@p3*1i)*pz^2*((pz-(@p1-0.05))/(1-(@p1-0.05)*pz))^2/((pz-(@p2-0.1))/(1-(@p2-0.1)*pz)) elseif @jm==2 pz=exp(-@p3*1i)*pz^2*((pz-(@p1-0.05))/(1-(@p1-0.05)*pz))/((pz-(@p2-0.1))/(1-(@p2-0.1)*pz))^2 elseif @jm==3 pz=exp(-@p3*1i)*pz^2*((pz-(@p1-2.65)*c)/(1-(@p1-2.65)*c*pz))/((pz-@p2*c)/(1-@p2*c*pz)) elseif @jm==4 pz=exp(-@p3*1i)*c*pz^2*((pz-@p1)/(1-@p1*pz))^2/((pz-@p2)/(1-@p2*pz)) else pz=exp(-@p3*1i)*c*pz^2*((pz-@p1)/(1-@p1*pz))/((pz-@p2)/(1-@p2*pz))^2 endif return pz endfunc default: title="Munster 24" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""J2""J3""M1""M2""M3" endparam param sv caption="Start Variant" enum="Parameter""Pixel" visible=@jm==3 || @jm==4 || @jm==5 default=1 endparam param sp caption="Start Parameter" default=(-1.65,0) visible=(@jm==3 || @jm==4 || @jm==5) && @sv==0 endparam param p1 caption="Munster Parameter 1" default=(1.2,0) endparam param p2 caption="Munster Parameter 2" default=(-0.75,0) endparam param p3 caption="Munster Parameter 3" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_Munster25(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @jm==0 || @jm==1 || @jm==2 || @jm==3 pz=fn1(pz) else if @sv==0 && (@jm==4 || @jm==7) pz=@sp elseif @sv==0 && (@jm==5 || @jm==6) pz=@sp+0.55 else pz=fn1(pz) endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p4*1i)*pz^2*((pz-@p1)/(1-@p1*pz))*((pz-@p2)/(1-@p2*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==1 pz=exp(-@p4*1i)*pz^2*((pz-@p1)/(1-@p1*pz))^2*((pz-@p2)/(1-@p2*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==2 pz=exp(-@p4*1i)*pz^3*((pz-@p1)/(1-@p1*pz))*((pz-(@p2+0.13))/(1-(@p2+0.13)*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==3 pz=exp(-@p4*1i)*pz^3*((pz-(@p1-5.3))/(1-(@p1-5.3)*pz))^2*((pz-@p2)/(1-@p2*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==4 pz=exp(-@p4*1i)*c*pz^2*((pz-@p1)/(1-@p1*pz))*((pz-@p2)/(1-@p2*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==5 pz=exp(-@p4*1i)*c*pz^2*((pz-@p1)/(1-@p1*pz))^2*((pz-@p2)/(1-@p2*pz))/((pz-@p3)/(1-@p3*pz)) elseif @jm==6 pz=exp(-@p4*1i)*c*pz^3*((pz-@p1)/(1-@p1*pz))*((pz-@p2)/(1-@p2*pz))/((pz-(@p3+1.64))/(1-(@p3+1.64)*pz)) else pz=exp(-@p4*1i)*c*pz^3*((pz-@p1)/(1-@p1*pz))^2*((pz-@p2)/(1-@p2*pz))/((pz-(@p3+1.81))/(1-(@p3+1.81)*pz)) endif return pz endfunc default: title="Munster 25" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""J2""J3""J4""M1""M2""M3""M4" endparam param sv caption="Start Variant" enum="Parameter""Pixel" visible=@jm==4 || @jm==5 || @jm==6 || @jm==7 default=1 endparam param sp caption="Start Parameter" default=(-1,0) visible=(@jm==4 || @jm==5 || @jm==6 || @jm==7) && @sv==0 endparam param p1 caption="Munster Parameter 1" default=(2.6,0) endparam param p2 caption="Munster Parameter 2" default=(1.25,0) endparam param p3 caption="Munster Parameter 3" default=(-1.38,0) endparam param p4 caption="Munster Parameter 4" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_Munster26(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=fn1(fpixel) if @jm==0 || @jm==1 || @jm==2 || @jm==3 pz=fn1(pz) else if @sv==0 && @jm==4 pz=@sp+4.26 elseif @sv==0 && @jm==5 pz=@sp+2.05 elseif @sv==0 && @jm==6 pz=@sp+0.55 elseif @sv==0 && @jm==8 pz=@sp+2 elseif @sv==0 && (@jm==7 || @jm==9 || @jm==10 || @jm==11) pz=@sp else pz=fn1(pz) endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*pz^2 pz=pz+@ar/pz if @jm==0 pz=exp(-@p1*1i)*pz^2*((pz-@p2)/(1+@p2*pz))*((pz-@p3)/(1+@p3*pz))/((pz-@p4)/(1+@p4*pz)) elseif @jm==1 pz=exp(-@p1*1i)*pz^3*((pz-(@p2-4.53))/(1+(@p2-4.53)*pz))*((pz-(@p3+0.13))/(1+(@p3+0.13)*pz))/((pz-@p4)/(1+@p4*pz)) elseif @jm==2 pz=exp(-@p1*1i)*pz^2*((pz-(@p2-3.4))/(1-(@p2-3.4)*pz))*((pz+(@p2-3.4))/(1+(@p2-3.4)*pz))/((pz-(@p3+2.7))/(1-(@p3+2.7)*pz)) elseif @jm==3 pz=exp(-@p1*1i)*pz^2*((pz-(@p2-3.35))/(1-(@p2-3.35)*pz))*((pz-(@p3+4.8))/(1-(@p3+4.8)*pz))/((pz+(@p2-3.35))/(1+(@p2-3.35)*pz)) elseif @jm==4 pz=exp(-@p1*1i)*c*pz^2*((pz-@p2)/(1+@p2*pz))*((pz-@p3)/(1+@p3*pz))/((pz-@p4)/(1+@p4*pz)) elseif @jm==5 pz=exp(-@p1*1i)*c*pz^3*((pz-(@p2-4.53))/(1+(@p2-4.53)*pz))*((pz-(@p3+0.13))/(1+(@p3+0.13)*pz))/((pz-@p4)/(1+@p4*pz)) elseif @jm==6 pz=exp(-@p1*1i)*c*pz^2*((pz-(@p2-3.4))/(1-(@p2-3.4)*pz))*((pz+(@p2-3.4))/(1+(@p2-3.4)*pz))/((pz-(@p3+2.7))/(1-(@p3+2.7)*pz)) elseif @jm==7 pz=exp(-@p1*1i)*c*pz^2*((pz-(@p2-3.35))/(1-(@p2-3.35)*pz))*((pz-(@p3+4.8))/(1-(@p3+4.8)*pz))/((pz+(@p2-3.35))/(1+(@p2-3.35)*pz)) elseif @jm==8 pz=exp(-@p1*1i)*c*pz^2*((pz-(@p2-4)*c)/(1+(@p2-4)*c*pz))*((pz-(@p3+4.6)*c)/(1+(@p3+4.6)*c*pz))/((pz-@p4*c)/(1+@p4*c*pz)) elseif @jm==9 pz=exp(-@p1*1i)*c*pz^3*((pz-(@p2-4.53)*c)/(1+(@p2-4.53)*c*pz))*((pz-(@p3+0.13)*c)/(1+(@p3+0.13)*c*pz))/((pz-@p4*c)/(1+@p4*c*pz)) elseif @jm==10 pz=exp(-@p1*1i)*c*pz^2*((pz-(@p2-3.4)*c)/(1-(@p2-3.4)*c*pz))*((pz+(@p2-3.4)*c)/(1+(@p2-3.4)*c*pz))/((pz-(@p3+2.18)*c)/(1-(@p3+2.18)*c*pz)) else pz=exp(-@p1*1i)*c*pz^2*((pz-(@p2-2.5)*c)/(1-(@p2-2.5)*c*pz))*((pz-(@p3+3.95)*c)/(1-(@p3+3.95)*c*pz))/((pz+(@p2-2.5)*c)/(1+(@p2-2.5)*c*pz)) endif return pz endfunc default: title="Munster 26" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""J2""J3""J4""M1""M2""M3""M4""M5""M6""M7""M8" endparam param sv caption="Start Variant" enum="Parameter""Pixel" visible=@jm!=0 && @jm!=1 && @jm!=2 && @jm!=3 default=1 endparam param sp caption="Start Parameter" default=(-1,0) visible=(@jm!=0 && @jm!=1 && @jm!=2 && @jm!=3) && @sv==0 endparam param p1 caption="Munster Parameter 1" default=0.0 endparam param p2 caption="Munster Parameter 2" default=(2.6,0) endparam param p3 caption="Munster Parameter 3" default=(-2.6,0) endparam param p4 caption="Munster Parameter 4" default=(-1.38,0) visible=@jm==0 || @jm==1 || @jm==4 || @jm==5 || @jm==8 || @jm==9 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000000.0 exponential=true endparam } class OM_3AltMunster2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @sv==0 pz=@sf(pz) else pz=@sp endif endif i=0 return pz endfunc private: int i complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if i==0 pz=exp(@mp4*1i)*pz^(@pow1+1)*((1-conj(@mp1)*pz)/(pz-@mp1))^@pow1 i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^(@pow2+1)*((1-conj(@mp2)*pz)/(pz-@mp2))^@pow2 i=i+1 else pz=exp(@mp6*1i)*pz^(@pow3+1)*((1-conj(@mp3)*pz)/(pz-@mp3))^@pow3 i=0 endif else if i==0 pz=exp(@mp4*1i)*c*pz^(@pow1+1)*((1-conj(@mp1)*pz)/(pz-@mp1))^@pow1 i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^(@pow2+1)*((1-conj(@mp2)*pz)/(pz-@mp2))^@pow2 i=i+1 else pz=exp(@mp6*1i)*c*pz^(@pow3+1)*((1-conj(@mp3)*pz)/(pz-@mp3))^@pow3 i=0 endif endif return pz endfunc default: title="3Alt Munster 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 && @sv==1 endparam param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(-0.3,0) endparam param mp3 caption="Munster Parameter 3" default=(0.85,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=3 endparam param pow3 caption="Exponent 3" default=3 endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_3AltMunster3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @sv==0 pz=@sf(pz) else pz=@sp endif endif i=0 return pz endfunc private: int i complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if @av==0 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz))^2 i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz))^3 i=0 endif elseif @av==1 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz))^3 i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz))^2 i=0 endif elseif @av==2 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz))^2 i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz)) i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz))^3 i=0 endif elseif @av==3 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz))^2 i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz))^3 i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz)) i=0 endif elseif @av==4 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz))^3 i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz)) i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz))^2 i=0 endif else if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz))^3 i=i+1 elseif i==1 pz=exp(@mp5*1i)*pz^2*((pz-@mp2)/(1-@mp2*pz))^2 i=i+1 else pz=exp(@mp6*1i)*pz^2*((pz-@mp3)/(1-@mp3*pz)) i=0 endif endif else if @av==0 if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz))^2 i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz))^3 i=0 endif elseif @av==1 if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz))^3 i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz))^2 i=0 endif elseif @av==2 if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz))^2 i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz)) i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz))^3 i=0 endif elseif @av==3 if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz))^2 i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz))^3 i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz)) i=0 endif elseif @av==4 if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz))^3 i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz)) i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz))^2 i=0 endif else if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz))^3 i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*pz^2*((pz-@mp2)/(1-@mp2*pz))^2 i=i+1 else pz=exp(@mp6*1i)*c*pz^2*((pz-@mp3)/(1-@mp3*pz)) i=0 endif endif endif return pz endfunc default: title="3Alt Munster 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 && @sv==1 endparam param av caption="Alt Variant" enum="1""2""3""4""5""6" endparam param mp1 caption="Munster Parameter 1" default=(2.57,0) endparam param mp2 caption="Munster Parameter 2" default=(-2.63,0) endparam param mp3 caption="Munster Parameter 3" default=(0.85,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Munster27(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @v==0 || @v==1 || @v==2 pz=@sf(pz) else if @sv==0 pz=@sf(pz) else if @v==3 || @v==4 || @v==7 || @v==8 || @v==10 || @v==13 pz=@sp else pz=@sp-1.49 endif endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=exp(@p1*1i)*((pz-1/@p2)/(1-pz/@p2))^3*(pz-@p2^2*exp(-@p1*1i))/(1-@p2^2*exp(@p1*1i)*pz)/(pz^2*(pz-@p3)/(1-@p3*pz)) elseif @v==1 pz=exp(@p1*1i)*((pz-1/(@p2-0.8))/(1-pz/(@p2-0.8)))^3*(pz-(@p2-0.8)^2*exp(-@p1*1i))/(1-(@p2-0.8)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3+2.91))/(1-(@p3+2.91)*pz))^2 elseif @v==2 pz=exp(@p1*1i)*((pz-1/(@p2-6.3))/(1-pz/(@p2-6.3)))^2*(pz-(@p2-6.3)^2*exp(-@p1*1i))/(1-(@p2-6.3)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3-0.48))/(1-(@p3-0.48)*pz))^2 elseif @v==3 pz=exp(@p1*1i)*c*((pz-1/@p2)/(1-pz/@p2))^3*(pz-@p2^2*exp(-@p1*1i))/(1-@p2^2*exp(@p1*1i)*pz)/(pz^2*(pz-@p3)/(1-@p3*pz)) elseif @v==4 pz=exp(@p1*1i)*c*((pz-1/(@p2+0.9))/(1-pz/(@p2+0.9)))^3*(pz-(@p2+0.9)^2*exp(-@p1*1i)*c)/(1-(@p2+0.9)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3+3.31)*c)/(1-(@p3+3.31)*c*pz)) elseif @v==5 pz=exp(@p1*1i)*((pz-1/(@p2-0.26))/(1-pz/(@p2-0.26)))^3*(pz-(@p2-0.26)^2*exp(-@p1*1i))/(1-(@p2-0.26)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3+1.61)*c)/(1-(@p3+1.61)*c*pz)) elseif @v==6 pz=exp(@p1*1i)*c*((pz-1/(@p2-1.4))/(1-pz/(@p2-1.4)))^3*(pz-(@p2-1.4)^2*exp(-@p1*1i)*c)/(1-(@p2-1.4)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3+1.81))/(1-(@p3+1.81)*pz)) elseif @v==7 pz=exp(@p1*1i)*c*((pz-1/(@p2-0.8))/(1-pz/(@p2-0.8)))^3*(pz-(@p2-0.8)^2*exp(-@p1*1i))/(1-(@p2-0.8)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3+2.91))/(1-(@p3+2.91)*pz))^2 elseif @v==8 pz=exp(@p1*1i)*c*((pz-1/(@p2+0.2))/(1-pz/(@p2+0.2)))^3*(pz-(@p2+0.2)^2*exp(-@p1*1i)*c)/(1-(@p2+0.2)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3+11.78)*c)/(1-(@p3+11.78)*c*pz))^2 elseif @v==9 pz=exp(@p1*1i)*((pz-1/(@p2+4.1))/(1-pz/(@p2+4.1)))^3*(pz-(@p2+4.1)^2*exp(-@p1*1i))/(1-(@p2+4.1)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3+10.87)*c)/(1-(@p3+10.87)*c*pz))^2 elseif @v==10 pz=exp(@p1*1i)*c*((pz-1/(@p2-0.8))/(1-pz/(@p2-0.8)))^3*(pz-(@p2-0.8)^2*exp(-@p1*1i)*c)/(1-(@p2-0.8)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3-10.01))/(1-(@p3-10.01)*pz))^2 elseif @v==11 pz=exp(@p1*1i)*c*((pz-1/(@p2-6.3))/(1-pz/(@p2-6.3)))^2*(pz-(@p2-6.3)^2*exp(-@p1*1i))/(1-(@p2-6.3)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3-0.48))/(1-(@p3-0.48)*pz))^2 elseif @v==12 pz=exp(@p1*1i)*c*((pz-1/(@p2+4.5))/(1-pz/(@p2+4.5)))^2*(pz-(@p2+4.5)^2*exp(-@p1*1i)*c)/(1-(@p2+4.5)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3+13.83)*c)/(1-(@p3+13.83)*c*pz))^2 elseif @v==13 pz=exp(@p1*1i)*((pz-1/(@p2+3.92))/(1-pz/(@p2+3.92)))^2*(pz-(@p2+3.92)^2*exp(-@p1*1i))/(1-(@p2+3.92)^2*exp(@p1*1i)*pz)/(pz^2*(pz-(@p3+11.33)*c)/(1-(@p3+11.33)*c*pz))^2 else pz=exp(@p1*1i)*c*((pz-1/(@p2-1.8))/(1-pz/(@p2-1.8)))^2*(pz-(@p2-1.8)^2*exp(-@p1*1i)*c)/(1-(@p2-1.8)^2*exp(@p1*1i)*c*pz)/(pz^2*(pz-(@p3-2.17))/(1-(@p3-2.17)*pz))^2 endif return pz endfunc default: title="Munster 27" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Munster Variant" enum="J1""J2""J3""M1a""M1b""M1c""M1d""M2a""M2b""M2c""M2d""M3a""M3b""M3c""M3d" endparam param sv caption="Start Variant" enum="Pixel""Parameter" visible=@v!=0 && @v!=1 && @v!=2 endparam param sp caption="Start Parameter" default=(0.5,0) visible=@v!=0 && @v!=1 && @v!=2 &&@sv==1 endparam param p1 caption="Munster Parameter 1" default=0.0 endparam param p2 caption="Munster Parameter 2" default=(-2.3,0) endparam param p3 caption="Munster Parameter 3" default=(-1.31,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_3AltMunster4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @sv==0 pz=@sf(pz) else pz=@sp endif endif i=0 return pz endfunc private: int i complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if i==0 pz=exp(@mp4*1i)*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*((pz-@mp2)/(1-@mp2*pz))^2/pz^2 i=i+1 else pz=exp(@mp6*1i)*((pz-@mp3)/(1-@mp3*pz))^2/pz^2 i=0 endif else if i==0 pz=exp(@mp4*1i)*c*pz^2*((pz-@mp1)/(1-@mp1*pz)) i=i+1 elseif i==1 pz=exp(@mp5*1i)*c*((pz-@mp2)/(1-@mp2*pz))^2/pz^2 i=i+1 else pz=exp(@mp6*1i)*c*((pz-@mp3)/(1-@mp3*pz))^2/pz^2 i=0 endif endif return pz endfunc default: title="3Alt Munster 4" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sv caption="Start Variant" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 && @sv==1 endparam param mp1 caption="Munster Parameter 1" default=(3.5,0) endparam param mp2 caption="Munster Parameter 2" default=(-0.65,0) endparam param mp3 caption="Munster Parameter 3" default=(1.07,0) endparam param mp4 caption="Munster Parameter 4" default=0.0 endparam param mp5 caption="Munster Parameter 5" default=0.0 endparam param mp6 caption="Munster Parameter 6" default=0.0 endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_BivarNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pk=@sf(pz) pz=@sf(pz) return pz return pk endfunc private: complex pk complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 if @version==100 pk=@bp1*@bf(pk/pz)+@bp2 pz=pz+pk-@np1*(pz^@zpow-@np2)/(@zpow*pz^(@zpow-1))-@np3*(pk^@kpow-@np4)/(@kpow*pk^(@kpow-1)) else if @bv==0 a=pk pk=@bp1*@bf(pk/pz)+@bp2 pz=pz+a-@np1*(pz^@zpow-@np2)/(@zpow*pz^(@zpow-1))-@np3*(a^@kpow-@np4)/(@kpow*a^(@kpow-1)) else pk=(@bp1+0.5)*@bf(pk/pz)+@bp2 pz=pz+pk-@np1*(pz^@zpow-@np2)/(@zpow*pz^(@zpow-1))-@np3*(pk^@kpow-@np4)/(@kpow*pk^(@kpow-1)) endif endif return pz return pk endfunc default: title="Bivar Newton" int param version caption="Version" default=101 visible=@version<101 endparam param np1 caption="Newton Parameter (Z)" default=(1,0) endparam param np3 caption="Newton Parameter (K)" default=(1,0) endparam param bv caption="Bivar Variant" enum="1""2" visible=@version==101 endparam param bp1 caption="Bivar Parameter 1" default=(-1.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param zpow caption="Exponent (Z)" default=(3,0) endparam param kpow caption="Exponent (K)" default=(3,0) endparam param np2 caption="Constant (Z)" default=(1,0) endparam param np4 caption="Constant (K)" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000001 exponential=true endparam } class OM_BivarSchröder(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pk=@sf(pz) pz=@sf(pz) pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz pz=pz-@sp1*(pz^@pow1-@sp2)*(@pow1*pz^(@pow1-1))/((@pow1*pz^(@pow1-1))^2-(pz^@pow1-@sp2)*((@pow1-1)*@pow1*pz^(@pow1-2)))+@bp1*pk pk=pk-@sp3*(pk^@pow2-@sp4)*(@pow2*pk^(@pow2-1))/((@pow2*pk^(@pow2-1))^2-(pk^@pow2-@sp4)*((@pow2-1)*@pow2*pk^(@pow2-2)))+@bp2*a return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Schröder" int param version caption="Version" default=100 visible=@version<100 endparam param sp1 caption="Schröder Parameter (Z)" default=(1,0) endparam param pow1 caption="Schröder Exponent (Z)" default=3 endparam param sp2 caption="Schröder Constant (Z)" default=(1,0) endparam param sp3 caption="Schröder Parameter (K)" default=(1,0) endparam param pow2 caption="Schröder Exponent (K)" default=3 endparam param sp4 caption="Schröder Constant (K)" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.1,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarMunster(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp pz=@sf(pz) else pk=@sf(pz) pz=@sp endif else if @sv2==0 pk=@sf(pz) pz=@sf(pz) elseif @sv2==1 pk=@sp pz=@sf(pz) elseif @sv2==2 pk=@sf(pz) pz=@sp else pk=@sp pz=@sp endif endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=@bp1*@bf(pk/pz)+@bp2 if @jm==0 pz=exp(@p1*1i)*pz^2*(pz-@p2)/(1-@p2*pz)+exp(@p3*1i)*a^2*(a-@p4)/(1-@p4*a) elseif @jm==1 pz=exp(@p1*1i)*c*pz^2*(pz-@p2)/(1-@p2*pz)+exp(@p3*1i)*c*a^2*(a-@p4)/(1-@p4*a) elseif @jm==2 pz=exp(@p1*1i)*pz^2*(pz-@p2*c)/(1-@p2*c*pz)+exp(@p3*1i)*a^2*(a-@p4*c)/(1-@p4*c*a) elseif @jm==3 pz=exp(@p1*1i)*pz^2*(pz-@p2)/(1-@p2*pz)+exp(@p3*1i)*a^2*(a-@p4)/(1-@p4*a)+c elseif @jm==4 pz=exp(@p1*1i)*c*pz^2*(pz-@p2*c)/(1-@p2*c*pz)+exp(@p3*1i)*c*a^2*(a-@p4*c)/(1-@p4*c*a) elseif @jm==5 pz=exp(@p1*1i)*c*pz^2*(pz-@p2)/(1-@p2*pz)+exp(@p3*1i)*c*a^2*(a-@p4)/(1-@p4*a)+c elseif @jm==6 pz=exp(@p1*1i)*pz^2*(pz-@p2*c)/(1-@p2*c*pz)+exp(@p3*1i)*a^2*(a-@p4*c)/(1-@p4*c*a)+c else pz=exp(@p1*1i)*c*pz^2*(pz-@p2*c)/(1-@p2*c*pz)+exp(@p3*1i)*c*a^2*(a-@p4*c)/(1-@p4*c*a)+c endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3""M4""M5""M6""M7" endparam param sv caption="Start Variant" enum="1""2""3" visible=@jm==0 endparam param sv2 caption="Start Variant" enum="1""2""3""4" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(0.5,0) visible=(@jm!=0 && @sv2!=0) || (@jm==0 && @sv!=0) endparam param p1 caption="Munster Parameter Z1" default=0.0 endparam param p2 caption="Munster Parameter Z2" default=(1.4,0) endparam param p3 caption="Munster Parameter K1" default=0.0 endparam param p4 caption="Munster Parameter K2" default=(0.45,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.4,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_BivarMunster2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp+0.05 pz=@sf(pz) else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz if @jm==0 pz=exp(@p1*1i)*pz^2*(pz-@p2)/(1-@p2*pz)*((pk-@bp1)/(1-@bp1*pk)) pk=exp(@p3*1i)*pk^2*(pk-@p4)/(1-@p4*pk)*((a-@bp2)/(1-@bp2*a)) elseif @jm==1 pz=exp(@p1*1i)*c*pz^2*(pz-@p2)/(1-@p2*pz)*((pk-@bp1)/(1-@bp1*pk)) pk=exp(@p3*1i)*c*pk^2*(pk-@p4)/(1-@p4*pk)*((a-@bp2)/(1-@bp2*a)) else pz=exp(@p1*1i)*pz^2*(pz-@p2*c)/(1-@p2*c*pz)*((pk-@bp1)/(1-@bp1*pk)) pk=exp(@p3*1i)*pk^2*(pk-@p4*c)/(1-@p4*c*pk)*((a-@bp2)/(1-@bp2*a)) endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Munster 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@sv!=0 endparam param p1 caption="Munster Parameter Z1" default=0.0 endparam param p2 caption="Munster Parameter Z2" default=(1.4,0) endparam param p3 caption="Munster Parameter K1" default=0.0 endparam param p4 caption="Munster Parameter K2" default=(-3.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(1.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_BivarNewton2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pk=@sf(pz) pz=@sf(pz) pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+@bp1*pk/10 pk=pk-@sp3*(pk^@pow2-@sp4)/(@pow2*pK^(@pow2-1))+@bp2*a/10 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Newton 2" int param version caption="Version" default=100 visible=@version<100 endparam param sp1 caption="Newton Parameter (Z)" default=(1,0) endparam param pow1 caption="Newton Exponent (Z)" default=3 endparam param sp2 caption="Newton Constant (Z)" default=(1,0) endparam param sp3 caption="Newton Parameter (K)" default=(1,0) endparam param pow2 caption="Newton Exponent (K)" default=4 endparam param sp4 caption="Newton Constant (K)" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(-1,0) endparam param bp2 caption="Bivar Parameter 2" default=(-1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarNewton3(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pk=@sf(pz) pz=@sf(pz) pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+@bp1*pk^@pow2/10 pk=pk-@sp3*(pk^@pow2-@sp4)/(@pow2*pk^(@pow2-1))+@bp2*a^@pow1/10 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Newton 3" int param version caption="Version" default=100 visible=@version<100 endparam param sp1 caption="Newton Parameter (Z)" default=(1,0) endparam param pow1 caption="Newton Exponent (Z)" default=3 endparam param sp2 caption="Newton Constant (Z)" default=(1,0) endparam param sp3 caption="Newton Parameter (K)" default=(1,0) endparam param pow2 caption="Newton Exponent (K)" default=3 endparam param sp4 caption="Newton Constant (K)" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarNewton4(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pk=@sf(pz) pz=@sf(pz) pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=@bp1*pk^2*pz+@bp2 if @bv==0 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+pk-@sp3*(a^@pow2-@sp4)/(@pow2*a^(@pow2-1)) elseif @bv==1 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+a-@sp3*(a^@pow2-@sp4)/(@pow2*a^(@pow2-1)) elseif @bv==2 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+a-@sp3*(pk^@pow2-@sp4)/(@pow2*pk^(@pow2-1)) elseif @bv==3 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+pk-@sp3*(a^@pow2-@sp4)/(@pow2*pk^(@pow2-1)) elseif @bv==4 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+pk-@sp3*(pk^@pow2-@sp4)/(@pow2*a^(@pow2-1)) elseif @bv==5 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+a-@sp3*(a^@pow2-@sp4)/(@pow2*pk^(@pow2-1)) elseif @bv==6 pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+a-@sp3*(pk^@pow2-@sp4)/(@pow2*a^(@pow2-1)) else pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+pk-@sp3*(pk^@pow2-@sp4)/(@pow2*pk^(@pow2-1)) endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Newton 4" int param version caption="Version" default=100 visible=@version<100 endparam param sp1 caption="Newton Parameter (Z)" default=(1,0) endparam param pow1 caption="Newton Exponent (Z)" default=3 endparam param sp2 caption="Newton Constant (Z)" default=(1,0) endparam param sp3 caption="Newton Parameter (K)" default=(1,0) endparam param pow2 caption="Newton Exponent (K)" default=3 endparam param sp4 caption="Newton Constant (K)" default=(1,0) endparam param bv caption="Bivar Variant" enum="1""2""3""4""5""6""7""8" endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarNova(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pk=@sf(pz) pz=@sf(pz) pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex c complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk if @bv==0 pk=@bp1*@bf(pk/pz)+@bp2 elseif @bv==1 pk=@bp1*@bf(pk^2/pz)+@bp2+0.77 elseif @bv==2 pk=@bp1*@bf(pk/pz^2)+@bp2+0.5 else pk=@bp1*@bf(pk^2/pz^2)+@bp2-0.57 endif pz=pz+a-@np1*(pz^@zpow-@np2)/(@zpow*pz^(@zpow-1))-@np3*(a^@kpow-@np4)/(@kpow*a^(@kpow-1))+c return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Nova" int param version caption="Version" default=100 visible=@version<100 endparam param bv caption="Bivar Variant" enum="1""2""3""4" endparam param np1 caption="Nova Parameter (Z)" default=(1,0) endparam param np3 caption="Nova Parameter (K)" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(2,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.1,0) endparam param zpow caption="Exponent (Z)" default=(3,0) endparam param kpow caption="Exponent (K)" default=(3,0) endparam param np2 caption="Constant (Z)" default=(1,0) endparam param np4 caption="Constant (K)" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000001 exponential=true endparam } class OM_BivarNova2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif pzold=(0,0) pkold=(0,0) return pz return pk endfunc private: complex c complex pk complex pzold complex pkold complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pzold=pz pkold=pk pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz pz=pz-@sp1*(pz^@pow1-@sp2)/(@pow1*pz^(@pow1-1))+@bp1*pk+c pk=pk-@sp3*(pk^@pow2-@sp4)/(@pow2*pK^(@pow2-1))+@bp2*a+c return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz-pzold+pk-pkold)/2|<@p_bailout) return bail endfunc default: title="Bivar Nova 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(1,0) visible=@sv!=0 endparam param sp1 caption="Nova Parameter (Z)" default=(1,0) endparam param sp3 caption="Nova Parameter (K)" default=(1,0) endparam param sp2 caption="Constant (Z)" default=(1,0) endparam param sp4 caption="Constant (K)" default=(1,0) endparam param pow1 caption="Exponent (Z)" default=3 endparam param pow2 caption="Exponent (K)" default=4 endparam param bp1 caption="Bivar Parameter 1" default=(-0.1,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_BivarX60(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pz pz=pz^2+@p2*c/((pz-@p1)*(pk-@p1)) pk=pk*a+@p3*c/(pk-@p4)^2 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar X 60" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="X Parameter 1" default=(0,0) endparam param p4 caption="X Parameter 2" default=(1,0) endparam param p2 caption="X Parameter 3" default=(0.15,0) endparam param p3 caption="X Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_BivarDevaney2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=pk^@pow1+@p1*c/(pz-@p2)^@pow2 pz=pz^@pow1+@p3*c/(pz-@p4)^@pow2+a^@pow1+@p5*c/(a-@p6)^@pow2 return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Devaney 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(-0.25,0) endparam param p2 caption="Devaney Parameter 2" default=(0.5,0) endparam param p3 caption="Devaney Parameter 3" default=(-0.25,0) endparam param p4 caption="Devaney Parameter 4" default=(0.5,0) endparam param p5 caption="Devaney Parameter 5" default=(-0.25,0) endparam param p6 caption="Devaney Parameter 6" default=(0.5,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_BivarDevaney3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk pk=pk^@pow1+@p1/(pz-@p2)^@pow2+c pz=pz^@pow1+@p3/(pz-@p4)^@pow2+a^@pow1+@p5/(a-@p6)^@pow2+c return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Devaney 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(-1,0) endparam param p2 caption="Devaney Parameter 2" default=(0.5,0) endparam param p3 caption="Devaney Parameter 3" default=(-0.25,0) endparam param p4 caption="Devaney Parameter 4" default=(0.5,0) endparam param p5 caption="Devaney Parameter 5" default=(-0.25,0) endparam param p6 caption="Devaney Parameter 6" default=(-1.6,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_BivarDevaney4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk if @v==0 pk=c*pk^@pow1+@p1/(pz-@p2)^@pow2 pz=pz^@pow1+@p3/(c*pz-@p4)^@pow2+a^@pow1+@p5/(a-@p6)^@pow2+c elseif @v==1 pk=c*pk^@pow1+@p1/(pz-@p2)^@pow2 pz=pz^@pow1+@p3/(pz-@p4)^@pow2+a^@pow1+@p5/(c*a-@p6)^@pow2+c elseif @v==2 pk=pk^@pow1+@p1/(c*pz-@p2)^@pow2 pz=c*pz^@pow1+@p3/(pz-@p4)^@pow2+a^@pow1+@p5/(a-@p6)^@pow2+c elseif @v==3 pk=pk^@pow1+@p1/(c*pz-@p2)^@pow2 pz=pz^@pow1+@p3/(pz-@p4)^@pow2+c*a^@pow1+@p5/(a-@p6)^@pow2+c elseif @v==4 pk=pk^@pow1+@p1/(pz-@p2)^@pow2+c pz=c*pz^@pow1+@p3/(pz-@p4)^@pow2+a^@pow1+@p5/(c*a-@p6)^@pow2 else pk=pk^@pow1+@p1/(pz-@p2)^@pow2+c pz=pz^@pow1+@p3/(c*pz-@p4)^@pow2+c*a^@pow1+@p5/(a-@p6)^@pow2 endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Devaney 4" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Pixel Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(-1,0) endparam param p2 caption="Devaney Parameter 2" default=(0.5,0) endparam param p3 caption="Devaney Parameter 3" default=(-0.25,0) endparam param p4 caption="Devaney Parameter 4" default=(0.5,0) endparam param p5 caption="Devaney Parameter 5" default=(-0.25,0) endparam param p6 caption="Devaney Parameter 6" default=(-1.6,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_BivarDevaney5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) pk=@sp elseif @sv==2 pz=@sp pk=@sp else pk=@sf(pz) pz=@sp endif return pz return pk endfunc private: complex c complex pk complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 a=pk if @v==0 pk=(pk/pz)^@pow1+@p1/((pk/pz)-@p2)^@pow2 pz=pz^@pow1+@p3*c/(pz-@p4)^@pow2+a^@pow1+@p5*c/(a-@p6)^@pow2 elseif @v==1 pk=(pk-pz)^@pow1+@p1/((pk-pz)-@p2)^@pow2 pz=pz^@pow1+(@p3-1.5)*c/(pz-@p4)^@pow2+a^@pow1+@p5*c/(a-@p6)^@pow2 else pk=(pk*pz)^@pow1+@p1/((pk*pz)-@p2)^@pow2 pz=pz^@pow1+(@p3-2.5)*c/(pz-@p4)^@pow2+a^@pow1+@p5*c/(a-@p6)^@pow2 endif return pz return pk endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk)/2|>@p_bailout) return bail endfunc default: title="Bivar Devaney 5" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Bivar Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(0.5,0) endparam param p2 caption="Devaney Parameter 2" default=(3,0) endparam param p3 caption="Devaney Parameter 3" default=(2,0) endparam param p4 caption="Devaney Parameter 4" default=(0.5,0) endparam param p5 caption="Devaney Parameter 5" default=(-0.5,0) endparam param p6 caption="Devaney Parameter 6" default=(-2,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_TrivarDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp pw=@sf(pz) pz=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==3 pz=@sp pk=@sp pw=@sp elseif @sv==4 pw=@sf(pz) pz=@sp pk=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 a=pk b=pw pk=@bp1*pk/pz+@bp2 pw=@bp3*pw/pz+@bp4 if @v==0 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==1 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==2 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==3 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==4 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 else pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Trivar Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(2.5,0) endparam param p2 caption="Devaney Parameter 2" default=(0.5,0) endparam param p3 caption="Devaney Parameter 3" default=(1,0) endparam param p4 caption="Devaney Parameter 4" default=(1,0) endparam param p5 caption="Devaney Parameter 5" default=(1,0) endparam param p6 caption="Devaney Parameter 6" default=(1,0) endparam param bp1 caption="Trivar Parameter 1" default=(1,0) endparam param bp2 caption="Trivar Parameter 2" default=(0,0) endparam param bp3 caption="Trivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Trivar Parameter 4" default=(0,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(0.5,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_TrivarDevaney2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp pw=@sf(pz) pz=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==3 pz=@sp pk=@sp pw=@sp elseif @sv==4 pw=@sf(pz) pz=@sp pk=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 a=pk b=pw pk=@bp1*pk/pz+@bp2 pw=pw^@pow1+@p5*c/(pw-@p6)^@pow2+a^@pow1+@p1*c/(a-@p2)^@pow2 if @v==0 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==1 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==2 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==3 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==4 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 else pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar Devaney 2" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Trivar Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(1,0) endparam param p2 caption="Devaney Parameter 2" default=(1,0) endparam param p3 caption="Devaney Parameter 3" default=(1,0) endparam param p4 caption="Devaney Parameter 4" default=(1,0) endparam param p5 caption="Devaney Parameter 5" default=(1,0) endparam param p6 caption="Devaney Parameter 6" default=(1,0) endparam param bp1 caption="Trivar Parameter 1" default=(1,0) endparam param bp2 caption="Trivar Parameter 2" default=(0,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(0.5,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_TrivarDevaney3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp pw=@sf(pz) pz=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==3 pz=@sp pk=@sp pw=@sp elseif @sv==4 pw=@sf(pz) pz=@sp pk=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 a=pk b=pw pk=@bp1*pk*pw/pz+@bp2 pw=@bp3*pw*pz/a+@bp4 if @v==0 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==1 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 elseif @v==2 pz=pz^@pow1+@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==3 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2-a^@pow1-@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 elseif @v==4 pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2-b^@pow1-@p5*c/(b-@p6)^@pow2 else pz=-pz^@pow1-@p1*c/(pz-@p2)^@pow2+a^@pow1+@p3*c/(a-@p4)^@pow2+b^@pow1+@p5*c/(b-@p6)^@pow2 endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar Devaney 3" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Trivar Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="Devaney Parameter 1" default=(-2,0) endparam param p2 caption="Devaney Parameter 2" default=(1,0) endparam param p3 caption="Devaney Parameter 3" default=(1,0) endparam param p4 caption="Devaney Parameter 4" default=(1,0) endparam param p5 caption="Devaney Parameter 5" default=(1,0) endparam param p6 caption="Devaney Parameter 6" default=(1,0) endparam param bp1 caption="Trivar Parameter 1" default=(1,0) endparam param bp2 caption="Trivar Parameter 2" default=(-0.5,0) endparam param bp3 caption="Trivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Trivar Parameter 4" default=(0,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(0.5,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_TrivarX18(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pk=@sf(pz) pw=@sf(pz) pz=@sf(pz) elseif @sv==1 pk=@sp pw=@sf(pz) pz=@sf(pz) elseif @sv==2 pz=@sf(pz) pk=@sp pw=@sp elseif @sv==3 pz=@sp pk=@sp pw=@sp elseif @sv==4 pw=@sf(pz) pz=@sp pk=@sp else pk=@sf(pz) pw=@sf(pz) pz=@sp endif return pz return pk return pw endfunc private: complex c complex pk complex pw complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pk=@kp1*pk+@kp2 pw=@wp1*pw+@wp2 a=pk b=pw if @v==0 pk=@bp1*pk/pz+@bp2 pw=@bp3*pw/pz+@bp4 pz=pz^2/(1+0.4*pz)+a^2/(1+0.4*a)+b^2/(1+0.4*b)+c elseif @v==1 pk=@bp1*pk/pz+@bp2 pw=@bp3*pw/pz+@bp4 pz=pz^2/(1+0.4*pz)-a^2/(1+0.4*a)+b^2/(1+0.4*b)+c elseif @v==2 pk=@bp1*pk/pz+@bp2 pw=@bp3*pw/pz+@bp4 pz=-pz^2/(1+0.4*pz)+a^2/(1+0.4*a)-b^2/(1+0.4*b)+c elseif @v==3 pk=@bp1*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=pz^2/(1+0.4*pz)+a^2/(1+0.4*a)+b^2/(1+0.4*b)+c elseif @v==4 pk=@bp1*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=pz^2/(1+0.4*pz)-a^2/(1+0.4*a)+b^2/(1+0.4*b)+c elseif @v==5 pk=@bp1*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=-pz^2/(1+0.4*pz)+a^2/(1+0.4*a)-b^2/(1+0.4*b)+c elseif @v==6 pk=(@bp1-1.5)*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=pz^2/(1+0.4*pz)+a^2/(1+0.4*a)+b^2/(1+0.4*b) elseif @v==7 pk=(@bp1-1.5)*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=pz^2/(1+0.4*pz)-a^2/(1+0.4*a)+b^2/(1+0.4*b) else pk=(@bp1-1.5)*pk/pz+@bp2+c pw=@bp3*pw/pz+@bp4+c pz=-pz^2/(1+0.4*pz)+a^2/(1+0.4*a)-b^2/(1+0.4*b) endif return pz return pk return pw endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pk+pw)/3|>@p_bailout) return bail endfunc default: title="Trivar X 18" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4""5""6" endparam param v caption="Trivar Variant" enum="1""2""3""4""5""6""7""8""9" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param bp1 caption="Trivar Parameter 1" default=(1,0) endparam param bp2 caption="Trivar Parameter 2" default=(0,0) endparam param bp3 caption="Trivar Parameter 3" default=(0.5,0) endparam param bp4 caption="Trivar Parameter 4" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(0.5,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam param wp1 caption="W Parameter 1" default=(0.5,0) endparam param wp2 caption="W Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000000.0 exponential=true endparam } class OM_Nertusm(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @st==0 pz=@sf(pz) else pz=@sp endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(pz-@p2)/(1-@p2*pz) elseif @jm==1 pz=exp(@p1*1i)*c*((pz^2-1)/pz)^2*(pz-@p2)/(1-@p2*pz) else pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(pz-@p2)/(1-@p2*pz)+c endif return pz endfunc default: title="Nertusm" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(0.6,0) visible=@jm!=0 && @st==1 endparam param p1 caption="Nertusm Parameter 1" default=0.0 endparam param p2 caption="Nertusm Parameter 2" default=(4,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Nertusm2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 || @jm==1 pz=@sf(pz) else if @st==0 pz=@sf(pz) else pz=@sp endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(((pz^2-1)/pz)^2-@p2)/(1-@p2*((pz^2-1)/pz)^2) elseif @jm==1 pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(((pz^2-1)/pz)-@p2)/(1-@p2*((pz^2-1)/pz)) elseif @jm==2 pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(((pz^2-1)/pz)^2-@p2)/(1-@p2*((pz^2-1)/pz)^2)+c else pz=exp(@p1*1i)*((pz^2-1)/pz)^2*(((pz^2-1)/pz)-@p2)/(1-@p2*((pz^2-1)/pz))+c endif return pz endfunc default: title="Nertusm 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J1""J2""M1""M2" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 && @jm!=1 endparam param sp caption="Start Parameter" default=(0.6,0) visible=@jm!=0 && @jm!=1 && @st==1 endparam param p1 caption="Nertusm Parameter 1" default=0.0 endparam param p2 caption="Nertusm Parameter 2" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Munster28(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @st==0 pz=@sf(pz) else pz=@sp endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=exp(@p3*1i)*pz*(pz-@p1)/(1-@p1*pz) pz=exp(@p4*1i)*pz^2*(pz-@p2)/(1-@p2*pz) elseif @jm==1 pz=exp(@p3*1i)*pz*(pz-@p1)/(1-@p1*pz) pz=exp(@p4*1i)*c*pz^2*(pz-@p2)/(1-@p2*pz) else pz=exp(@p3*1i)*c*pz*(pz-@p1)/(1-@p1*pz) pz=exp(@p4*1i)*pz^2*(pz-@p2)/(1-@p2*pz) endif return pz endfunc default: title="Munster 28" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(3.5,0) visible=@jm!=0 && @st==1 endparam param p1 caption="Munster Parameter 1" default=(2,0) endparam param p2 caption="Munster Parameter 2" default=(0.85,0) endparam param p3 caption="Munster Parameter 3" default=0.0 endparam param p4 caption="Munster Parameter 4" default=0.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Glawlengy(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else if @st==0 pz=@sf(pz) else pz=@sp endif endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=pz*(pz-@p1)/(1-@p1*pz) pz=(1-pz)^2*(1-@p2*pz)/(1+@p2*pz) elseif @jm==1 && @st==0 pz=pz*(pz-@p1)/(1-@p1*pz) pz=(1-pz)^2*(1-@p2*c*pz)/(1+@p2*c*pz) else pz=pz*(pz-@p1)/(1-@p1*pz) pz=(1-pz)^2*(1+c*pz/2)/(1-c*pz/2) endif return pz endfunc default: title="Glawlengy" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@jm==1 && @st==1 endparam param p1 caption="Glawlengy Parameter 1" default=(1.5,0) endparam param p2 caption="Glawlengy Parameter 2" default=(-0.5,0) visible=@jm==0 || (@jm==1 && @st==0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Trebegah(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 if @st==0 pz=@sf(pz) else pz=@sp endif else pz=@sf(pz) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 && @st==0 pz=pz*(pz-@p1)/(1-@p1*pz) pz=pz^2+@p2*(@p4*c+pz^2)/pz^2 elseif @jm==0 && @st==1 pz=pz*(pz-@p1)/(1-@p1*pz) pz=pz^2+@p2*(c+pz^2)/pz^2 else pz=pz*(pz-@p1)/(1-@p1*pz) pz=pz^2+@p2*(@p3+pz^2)/pz^2 endif return pz endfunc default: title="Trebegah" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm==0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@st==1 && @jm==0 endparam param p1 caption="Trebegah Parameter 1" default=(1.67,0) endparam param p2 caption="Trebegah Parameter 2" default=(1,0) endparam param p3 caption="Julia Seed" default=(-1.25,0) visible=@jm==1 endparam param p4 caption="Pixel Parameter" default=(1,0) visible=@jm==0 && @st==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Girmolda(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @st==0 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==1 pz=pz*(pz-@p3)/(1-@p3*pz) pz=pz*((c-@p1)*(pz-@p1)-c*(@p2-1/pz)) else pz=pz*(pz-@p3)/(1-@p3*pz) pz=pz*((@pp*c-@p1)*(pz-@p1)-@pp*c*(@p2-1/pz)) endif return pz endfunc default: title="Girmolda" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@st==1 endparam param p1 caption="Girmolda Parameter 1" default=(-0.3,0) endparam param p2 caption="Girmolda Parameter 2" default=(2.05,0) endparam param p3 caption="Girmolda Parameter 3" default=(1.5,0) endparam param pp caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Menzermont(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sf(pz) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz^5/(pz^3+(@p1*c/pz)^@pow)+@p2 return pz endfunc default: title="Menzermont" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Menzermont Parameter 1" default=(-0.4,0) endparam param p2 caption="Menzermont Parameter 2" default=(-1.5,0) endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Wherinclid(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @st==1 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==1 pz=@p1*(@p2*c+pz-pz^2+2*pz^4)/pz^2 else pz=@p1*(c+pz-pz^2+2*pz^4)/pz^2 endif return pz endfunc default: title="Wherinclid" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@st==0 endparam param p1 caption="Wherinclid Parameter" default=(-0.333,0) endparam param p2 caption="Wherinclid Parameter 2" default=(1,0) visible=@st==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Jarratt3(common.ulb:ConvergentFormula) { ;Based on code from FractalAlex ;https://tinyurl.com/y57yng3d public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z1=@p1 z2=@p2 return pz return z1 return z2 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^@pow/@pow-@p4*pz fz1=z1^@pow/@pow-@p4*z1 fz2=z2^@pow/@pow-@p4*z2 elseif @v==1 fz=pz^@pow/@pow+pz^(@pow-1)/(@pow-1)-@p4*pz fz1=z1^@pow/@pow+z1^(@pow-1)/(@pow-1)-@p4*z1 fz2=z2^@pow/@pow+z2^(@pow-1)/(@pow-1)-@p4*z2 elseif @v==2 fz=pz^@pow/@pow+pz^(@pow-1)/(@pow-1)+pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow+z1^(@pow-1)/(@pow-1)+z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow+z2^(@pow-1)/(@pow-1)+z2^(@pow+1)/(@pow+1)-@p4*z2 elseif @v==3 fz=pz^@pow/@pow+pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow+z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow+z2^(@pow+1)/(@pow+1)-@p4*z2 elseif @v==4 fz=pz^@pow/@pow-pz^(@pow-1)/(@pow-1)+pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow-z1^(@pow-1)/(@pow-1)+z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow-z2^(@pow-1)/(@pow-1)+z2^(@pow+1)/(@pow+1)-@p4*z2 elseif @v==5 fz=pz^@pow/@pow-pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow-z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow-z2^(@pow+1)/(@pow+1)-@p4*z2 elseif @v==6 fz=pz^@pow/@pow-pz^(@pow-1)/(@pow-1)-@p4*pz fz1=z1^@pow/@pow-z1^(@pow-1)/(@pow-1)-@p4*z1 fz2=z2^@pow/@pow-z2^(@pow-1)/(@pow-1)-@p4*z2 elseif @v==7 fz=pz^@pow/@pow-pz^(@pow-1)/(@pow-1)-pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow-z1^(@pow-1)/(@pow-1)-z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow-z2^(@pow-1)/(@pow-1)-z2^(@pow+1)/(@pow+1)-@p4*z2 else fz=pz^@pow/@pow+pz^(@pow-1)/(@pow-1)-pz^(@pow+1)/(@pow+1)-@p4*pz fz1=z1^@pow/@pow+z1^(@pow-1)/(@pow-1)-z1^(@pow+1)/(@pow+1)-@p4*z1 fz2=z2^@pow/@pow+z2^(@pow-1)/(@pow-1)-z2^(@pow+1)/(@pow+1)-@p4*z2 endif d=pz+@p3*((z1-pz)^2*(fz-fz2)+(z2-pz)^2*(fz1-fz))/((z1-pz)*(fz-fz2)+(z2-pz)*(fz1-fz)) z2=z1 z1=pz pz=d return pz return z1 return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz-z1|<@p_bailout) return bail endfunc private: complex z1 complex z2 default: title="Jarratt 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9" endparam param p1 caption="Jarratt Parameter 1" default=(-0.33,0) endparam param p2 caption="Jarratt Parameter 2" default=(0.5,0) endparam param p4 caption="Jarratt Parameter 3" default=(1,0) endparam param p3 caption="Jarratt Parameter 4" default=(0.4999999,0) endparam param pow caption="Exponent" default=(4,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1.0e-15 exponential=true endparam } class OM_Jarratt(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) return @sf(pz) endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 f=pz^@pow-@c f1=@pow*pz^(@pow-1) a=f/f1 b=@pow*(pz-(2*pz^(1-@pow)*(pz^@pow-@c))/(3*@pow))^(@pow-1)*(1/3-(2*(1-@pow)*(pz^@pow-@c))/(3*@pow*pz^@pow)) pz=pz-@jp*(a/2-f/(f1-3*b)) return pz endfunc default: title="Jarratt Erratum" int param version caption="Version" default=100 visible=@version<100 endparam param jp caption="Jarratt Parameter" default=(1,0) endparam param c caption="Constant" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000000001 exponential=true endparam } class OM_ModifiedMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=9*@sf(fpixel)+(-13,4) if @st==1 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==1 pz=pz^2+@p1*@p5*c/(1+(@p2*@p5*c)^2)+1i*(@p3*@p5*c)^2/(1+(@p4*@p5*c)^2) else pz=pz^2+@p1*c/(1+(@p2*c)^2)+1i*(@p3*c)^2/(1+(@p4*c)^2) endif return pz endfunc default: title="Modified Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam param p1 caption="Pixel Parameter 1" default=(1,0) endparam param p2 caption="Pixel Parameter 2" default=(1,0) endparam param p3 caption="Pixel Parameter 3" default=(1,0) endparam param p4 caption="Pixel Parameter 4" default=(1,0) endparam param p5 caption="Pixel Parameter 5" default=(1,0) visible=@st==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_ModifiedMandelbrot6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=2*@sf(fpixel) pz=(0,0) return pz return c endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 c=(1+c)/(1-c)+@p3 pz=pz^2+@p1*c+@p2 return pz return c endfunc default: title="Modified Mandelbrot 6" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="MM Parameter 1" default=(1,0) endparam param p2 caption="MM Parameter 2" default=(0,0) endparam param p3 caption="MM Parameter 3" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(-0.55,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_ModifiedMandelbrot7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @st==0 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==1 pz=pz^@pow+@p1/(10*pz^(@pow-1))+c else pz=pz^@pow+@p1/(10*pz^(@pow-1))+@p2*c endif return pz endfunc default: title="Modified Mandelbrot 7" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0.368403,0) visible=@st==1 endparam param p1 caption="Modification Parameter" default=(1,0) endparam param p2 caption="Pixel Parameter" default=(1,0) visible=@st==0 endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_ModifiedMandelbrot8(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fPixel)+0.5i pz=@sp return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) if @v==0 pz=(1i+6*(@p1+0.25i)*pz^2-@p2*1i*pz^4-12*(@p1+0.25i)*pz^6-@p2*1i*pz^8+6*(@p1+0.25i)*pz^10)/(-1i+2*(@p1+0.25i)*pz^2-1i*pz^4)^2+c else pz=(1i+6*(@p1+0.2i)*pz^2-@p2*1i*pz^4-@p2*1i*pz^6-6*(@p1+0.2i)*pz^8+1i*pz^10)/(-1i+2*(@p1+0.2i)*pz^2-1i*pz^4)^2+c endif return pz endfunc default: title="Modified Mandelbrot 8" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="MM Parameter 1" default=(0,0) endparam param p2 caption="MM Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_ModifiedMandelbrot9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel)/3-0.2 pz=@sp return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=@p1*pz^2*(pz*c-@p2)/(pz+@p2) else pz=@p1*pz^2*(pz*c-@p2)/(pz+@p2)+c endif return pz endfunc default: title="Modified Mandelbrot 9" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-2,0) endparam param p1 caption="MM Parameter 1" default=(1,0) endparam param p2 caption="MM Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_ModifiedMandelbrot10(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=c/(@p1+c^2)+(@p1*c^2)/(@p1+c^2)+pz^2+@p2 return pz endfunc default: title="Modified Mandelbrot 10" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="MM Parameter 1" default=(1,0) endparam param p2 caption="MM Parameter 2" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Prugoripus(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @st==0 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @st==1 pz=@p1*(pz^2-pz+c)^3/(pz^2*(pz-c)^2)+@p2 else pz=@p1*(pz^2-pz+@pp*c)^3/(pz^2*(pz-@pp*c)^2)+@p2 endif return pz endfunc default: title="Prugoripus" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0.2,0) visible=@st==1 endparam param p1 caption="Prugoripus Parameter 1" default=(-0.2,0) endparam param p2 caption="Prugoripus Parameter 2" default=(0,0) endparam param pp caption="Pixel Parameter" default=(0.75,0) visible=@st==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_YischJernotch(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @mj==0 pz=@sp else pz=@sf(pz) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz*(pz-@p3)/(1-@p3*pz) if @mj==0 pz=pz^@pow*(pz^2-@p1*c)/(pz^2+@p1*c)+@p2*c else pz=pz^@pow*(pz^2-@p1)/(pz^2+@p1)+@p2 endif pz=pz*(pz-@p4)/(1-@p4*pz) return pz endfunc default: title="Yisch Jernotch" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="YJ Parameter 1" default=(1,0) endparam param p2 caption="YJ Parameter 2" default=(1,0) endparam param p3 caption="YJ Parameter 3" default=(0.5,0) endparam param p4 caption="YJ Parameter 4" default=(1.5,0) endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AttanakaHelastir(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @mj==0 pz=@sp else pz=@sf(pz) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @mj==0 pz=(@p1-0.75*pz^(@pow+2))/(pz^@pow-0.75)+c else pz=(@p1-0.75*pz^(@pow+2))/(pz^@pow-0.75)+@p2 endif return pz endfunc default: title="Attanaka Helastir" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="AH Parameter" default=(-0.25,0) endparam param p2 caption="Julia Seed" default=(1.4,0) visible=@mj==1 endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_SponicRictudibon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @mj==0 fPixel=pz c=@sf(fpixel) pz=@sp else pz=@sf(pz) c=@p3 endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz*(pz-@p2)/(1-@p2*pz) pz=(c+pz^2)^2+@p1^2*(c+pz^2)-@p1^4-@p1*(c-3*c*pz^2) return pz endfunc default: title="Sponic Rictudibon" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="SR Parameter 1" default=(-0.75,0) endparam param p2 caption="SR Parameter 2" default=(1.5,0) endparam param p3 caption="Julia Seed" default=(0.675,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000000.0 exponential=true endparam } class OM_Vorfumglace(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @mj==0 fPixel=pz c=@sf(fpixel) pz=@sp else pz=@sf(pz) c=@p4 endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=pz^2+c return pz endfunc default: title="Vorfumglace" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="Vorfumglace Parameter 1" default=(1,0) endparam param p2 caption="Vorfumglace Parameter 2" default=(0,0) endparam param p3 caption="Vorfumglace Parameter 3" default=(-1.5,0) endparam param p5 caption="Vorfumglace Parameter 4" default=3 endparam param p4 caption="Julia Seed" default=(-0.7,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Krofurdaque(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @mj==0 fPixel=pz c=@sf(fpixel) if @st==0 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) c=@p4 endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @mj==0 && @st==1 pz=pz^(-2)*(pz-1i*(@pp*c/pz)^2+@p2)*(pz+@p1*(@pp*c/pz)^2)*(pz+1i*(@pp*c/pz)^2-@p2)*(pz-@p1*(@pp*c/pz)^2)+@p3 else pz=pz^(-2)*(pz-1i*(c/pz)^2+@p2)*(pz+@p1*(c/pz)^2)*(pz+1i*(c/pz)^2-@p2)*(pz-@p1*(c/pz)^2)+@p3 endif return pz endfunc default: title="Krofurdaque" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@mj==0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@mj==0 && @st==0 endparam param p1 caption="Krofurdaque Parameter 1" default=(0.5,0) endparam param p2 caption="Krofurdaque Parameter 2" default=(0,0) endparam param p3 caption="Krofurdaque Parameter 3" default=(0,0) endparam param pp caption="Pixel Parameter" default=(1,0) visible=@mj==0 && @st==1 endparam param p4 caption="Julia Seed" default=(-0.45,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Munaloni(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @mj==0 fPixel=pz c=@sf(fpixel) pz=@sp else pz=@sf(pz) c=@js endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz*(pz+2)/(1+2*pz) pz=@p1*pz^2*(@p4+pz)/(@p2*c+pz)/((@p5+pz)/(@p3*c+pz)) return pz endfunc default: title="Munaloni" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(-1.5,0) visible=@mj==0 endparam param p1 caption="Munaloni Parameter 1" default=(2.75,0) endparam param p2 caption="Munaloni Parameter 2" default=(-2.5,0) endparam param p3 caption="Munaloni Parameter 3" default=(-1.5,0) endparam param p4 caption="Munaloni Parameter 4" default=(1,0) endparam param p5 caption="Munaloni Parameter 5" default=(1,0) endparam param js caption="Julia Seed" default=(-0.45,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IshikawaMunster (common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 pu=@sf(pz) pz=@sf(pz) else pz=@sp pu=@sp endif return pz return pu endfunc private: complex c complex pu complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pu=@up1*pu+@up2 if @version==100 pz=pz+@as*sqr(pz) pu=pu+@as*sqr(pz) pz=pz+@ar/pz pu=pu+@ar/pu else pz=pz+@as*sqr(pz) pu=pu+@as*sqr(pz) pz=pz+@ar/pz pu=pu+@ar/pu endif a=pz if @jm==0 pz=(1-@p1)*pz+@p1*(@mp2*pu^2*(pu-@mp1)/(1-@mp1*pu)) pu=(1-@p2)*a+@p2*(@mp2*a^2*(a-@mp1)/(1-@mp1*a)) elseif @jm==1 pz=(1-@p1)*pz+@p1*(c*pu^2*(pu-@mp1)/(1-@mp1*pu)) pu=(1-@p2)*a+@p2*(c*a^2*(a-@mp1)/(1-@mp1*a)) elseif @jm==2 pz=(1-@p1)*pz+@p1*(@mp2*pu^2*(pu-@mp1)/(1-@mp1*pu)+c) pu=(1-@p2)*a+@p2*(@mp2*a^2*(a-@mp1)/(1-@mp1*a)+c) elseif @jm==3 pz=(1-@p1)*pz+@p1*(@mp2*c*pu^2*(pu-@mp1)/(1-@mp1*pu)+c) pu=(1-@p2)*a+@p2*(@mp2*c*a^2*(a-@mp1)/(1-@mp1*a)+c) elseif @jm==4 pz=(1-@p1)*pz+@p1*(@mp2*c*pu^2*(pu-@mp1*c)/(1-@mp1*c*pu)+c) pu=(1-@p2)*a+@p2*(@mp2*c*a^2*(a-@mp1*c)/(1-@mp1*c*a)+c) elseif @jm==5 pz=(1-@p1)*pz+@p1*(@mp2*c*pu^2*(pu-@mp1*c)/(1-@mp1*c*pu)) pu=(1-@p2)*a+@p2*(@mp2*c*a^2*(a-@mp1*c)/(1-@mp1*c*a)) else pz=(1-@p1)*pz+@p1*(@mp2*pu^2*(pu-@mp1*c)/(1-@mp1*c*pu)+c) pu=(1-@p2)*a+@p2*(@mp2*a^2*(a-@mp1*c)/(1-@mp1*c*a)+c) endif return pz return pu endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+pu)/2|>@p_bailout) return bail endfunc default: title="Bivar Munster 3" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M1""M2""M3""M4""M5""M6" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm!=0 endparam param p1 caption="Bivar Parameter 1" default=(-0.45,0) endparam param p2 caption="Bivar Parameter 2" default=(-0.5,0) endparam param mp1 caption="Munster Parameter" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) visible=@jm!=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param up1 caption="U Parameter 1" default=(1,0) endparam param up2 caption="U Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DasDebataNewton(common.ulb:ConvergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 fz=pz^@pow1-@p3 fz1=@pow1*pz^(@pow1-1) elseif @v==1 fz=pz^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*((pz-1)/(pz+1))^@pow1/(pz^2-1) elseif @v==2 fz=((pz^2-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz-1)^(@pow1-1) elseif @v==3 fz=((pz^3-1)/(pz^2+1))^@pow1-@p3 fz1=@pow1*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow1-1) elseif @v==4 fz=((pz^2+1)/pz)^@pow1-@p3 fz1=@pow1*(pz^2-1)*(pz+1/pz)^@pow1/(pz^3+pz) elseif @v==5 fz=(pz+pz^2)^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz*(pz+1))^(@pow1-1) elseif @v==6 fz=pz^@pow1+((pz-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2i*@pow1*((pz-1i)/(pz+1i))^@pow1/(pz^2+1) elseif @v==7 fz=((pz^2-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow1-1) elseif @v==8 fz=((pz^2-1i)/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz)^(@pow1-1) elseif @v==9 fz=((pz^2+1i)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow1-1)/(pz+1)^2 elseif @v==10 fz=(pz+1i)^@pow1-@p3 fz1=@pow1*(pz+1i)^(@pow1-1) elseif @v==11 fz=(1/pz^2+1/pz)^@pow1-@p3 fz1=@pow1*(pz+2)*((pz+1)/pz^2)^(@pow1-1)/pz^2 elseif @v==12 fz=pz^@pow1*(pz-2)/(1-2*pz)-(@p3-0.5) fz1=pz^(@pow1-1)*(@pow1*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 fz=((pz^2-2)/(1-2*pz))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==14 fz=((1-2*pz)/(pz^2-2))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==15 fz=recip(pz)^@pow1-@p3 fz1=-@pow1*recip(pz)^(@pow1+1) elseif @v==16 fz=(pz+sqr(pz)+1/pz)^@pow1-@p3 fz1=@pow1*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow1-1) elseif @v==17 fz=(sqr(pz)-1/pz)^@pow1-@p3 fz1=@pow1*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow1-1) elseif @v==18 fz=(pz-1i-1i/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow1-1) elseif @v==19 fz=(pz+1i-1i/pz^2)^@pow1-@p3 fz1=@pow1*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow1-1) elseif @v==20 fz=(pz+pz^2)^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz^2+pz)^(@pow1-1)+@pow1*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow1-1) elseif @v==21 fz=(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1+@p3)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3)^2 elseif @v==22 fz=(pz^(@pow1+1)+@p3)/(pz^@pow1-1i) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1-1i)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)+@p3)/(pz^@pow1-1i)^2 elseif @v==23 fz=(pz^2+pz/1i)^@pow1-@p3 fz1=@pow1*(2*pz-1i)*(pz*(pz-1i))^(@pow1-1) elseif @v==24 fz=((pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2))^2 fz1=2*@pow1*pz^(@pow1-1)*(pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2)^2-2*@pow1*(pz^@pow1+(@p3-1)-1)^2/(@pow1*pz+(@p3-1)-2)^3 elseif @v==25 fz=tan(pz)^@pow1-@p3 fz1=@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==26 fz=cotan(pz)^@pow1-@p3 fz1=-@pow1*cotan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==27 fz=tanh(pz)^@pow1-@p3 fz1=@pow1*tanh(pz)^@pow1/(sinh(pz)*cosh(pz)) elseif @v==28 fz=(1/cos(pz))^@pow1-@p3 fz1=@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==29 fz=(1/sin(pz))^@pow1-@p3 fz1=-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==30 fz=pz^@pow1+(1/sin(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==31 fz=pz^@pow1+(1/cos(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==32 fz=pz^@pow1+(pz^2)^@pow1+1i*(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3i*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==33 fz=(pz-1i)^@pow1+(pz^2-1i)^@pow1+1i*(pz^3-1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2-1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3-1i)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==34 fz=(pz+1i)^@pow1+(pz^2+1i)^@pow1+1i*(pz^3+1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3+1i)^(@pow1-1)+@pow1*(pz+1i)^(@pow1-1) elseif @v==35 fz=9*pz^@pow1+3i*pz^(@pow1+1)+(1/cos(pz))^@pow1-@p3 fz1=9*@pow1*pz^(@pow1-1)+3i*(@pow1+1)*pz^@pow1+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==36 fz=pz^@pow1+pz^(@pow1+1)+pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1+(@pow1+2)*pz^(@pow1+1) elseif @v==37 fz=pz^@pow1+pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==38 fz=2*pz^@pow1-3i*pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=2*@pow1*pz^(@pow1-1)-3i*(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==39 fz=pz^@pow1+(pz^2)^@pow1+(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==40 fz=(pz+cotanh(pz))^@pow1-@p3 fz1=-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) elseif @v==41 fz=(pz^2*(pz-2)/(1-2*pz))^@pow1-@p3 fz1=@pow1*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow1/((pz-2)*pz*(2*pz-1)) elseif @v==42 fz=pz^@pow1+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 fz1=@pow1*pz^(@pow1-1)+@pow1*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 elseif @v==43 fz=pz^@pow1+1i*(pz-1/pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==44 fz=pz^(@pow1+1)-1i*(pz-1/pz)^@pow1-@p3 fz1=(@pow1+1)*pz^@pow1-1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==45 fz=pz^@pow1+pz^(@pow1-1)+1i*(pz-1/pz)^@pow1+tan(pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1-1)*pz^(@pow1-2)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1)+@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==46 fz=(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==47 fz=pz^@pow1+(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==48 fz=(pz+1i*pz)^@pow1+pz^3/1i+(pz+cotanh(pz))^@pow1-@p3 fz1=@pow1*((1+1i)*pz)^@pow1/pz+3*pz^2/1i-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) else fz=(pz^2+1i)^@pow1+(pz+2i)^(@pow1+1)-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+(@pow1+1)*(pz+2i)^@pow1 endif u=(1-@p1)*pz+@p1*(pz-fz/fz1) if @v==0 fu=u^@pow2-@p4 fu1=@pow2*u^(@pow2-1) elseif @v==1 fu=u^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*((u-1)/(u+1))^@pow2/(u^2-1) elseif @v==2 fu=((u^2-1)/(u+1))^@pow2-@p4 fu1=@pow2*(u-1)^(@pow2-1) elseif @v==3 fu=((u^3-1)/(u^2+1))^@pow2-@p4 fu1=@pow2*(3*u^2/(u^2+1)-2*u*(u^3-1)/(u^2+1)^2)*((u^3-1)/(u^2+1))^(@pow2-1) elseif @v==4 fu=((u^2+1)/u)^@pow2-@p4 fu1=@pow2*(u^2-1)*(u+1/u)^@pow2/(u^3+u) elseif @v==5 fu=(u+u^2)^@pow2-@p4 fu1=@pow2*(2*u+1)*(u*(u+1))^(@pow2-1) elseif @v==6 fu=u^@pow2+((u-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2i*@pow2*((u-1i)/(u+1i))^@pow2/(u^2+1) elseif @v==7 fu=((u^2-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*(2*u/(u+1i)-(u^2-1i)/(u+1i)^2)*((u^2-1i)/(u+1i))^(@pow2-1) elseif @v==8 fu=((u^2-1i)/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u)^(@pow2-1) elseif @v==9 fu=((u^2+1i)/(u+1))^@pow2-@p4 fu1=@pow2*(u^2+2*u-1i)*((u^2+1i)/(u+1))^(@pow2-1)/(u+1)^2 elseif @v==10 fu=(u+1i)^@pow2-@p4 fu1=@pow2*(u+1i)^(@pow2-1) elseif @v==11 fu=(1/u^2+1/u)^@pow2-@p4 fu1=@pow2*(u+2)*((u+1)/u^2)^(@pow2-1)/u^2 elseif @v==12 fu=u^@pow2*(u-2)/(1-2*u)-(@p4-0.5) fu1=u^(@pow2-1)*(@pow2*(-2*u^2+5*u-2)-3*u)/(1-2*u)^2 elseif @v==13 fu=((u^2-2)/(1-2*u))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((u^2-2)/(1-2*u))^@pow2/((2*u-1)*(u^2-2)) elseif @v==14 fu=((1-2*u)/(u^2-2))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((1-2*u)/(u^2-2))^@pow2/((2*u-1)*(u^2-2)) elseif @v==15 fu=recip(u)^@pow2-@p4 fu1=-@pow2*recip(u)^(@pow2+1) elseif @v==16 fu=(u+sqr(u)+1/u)^@pow2-@p4 fu1=@pow2*(-1/u^2+2*u+1)*(u^2+u+1/u)^(@pow2-1) elseif @v==17 fu=(sqr(u)-1/u)^@pow2-@p4 fu1=@pow2*(1/u^2+2*u)*((u^3-1)/u)^(@pow2-1) elseif @v==18 fu=(u-1i-1i/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u-1i)^(@pow2-1) elseif @v==19 fu=(u+1i-1i/u^2)^@pow2-@p4 fu1=@pow2*(1+2i/u^3)*(u-1i/u^2+1i)^(@pow2-1) elseif @v==20 fu=(u+u^2)^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*(2*u+1)*(u^2+u)^(@pow2-1)+@pow2*(1/(u+1)-(u-1)/(u+1)^2)*((u-1)/(u+1))^(@pow2-1) elseif @v==21 fu=(u^(@pow2+1)-@p4)/(u^@pow2+@p4) fu1=(@pow2+1)*u^@pow2/(u^@pow2+@p4)-@pow2*u^(@pow2-1)*(u^(@pow2+1)-@p4)/(u^@pow2+@p4)^2 elseif @v==22 fu=(u^(@pow2+1)+@p4)/(u^@pow2-1i) fu1=(@pow2+1)*u^@pow2/(u^@pow2-1i)-@pow2*u^(@pow2-1)*(u^(@pow2+1)+@p4)/(u^@pow2-1i)^2 elseif @v==23 fu=(u^2+u/1i)^@pow2-@p4 fu1=@pow2*(2*u-1i)*(u*(u-1i))^(@pow2-1) elseif @v==24 fu=((u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2))^2 fu1=2*@pow2*u^(@pow2-1)*(u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2)^2-2*@pow2*(u^@pow2+(@p4-1)-1)^2/(@pow2*u+(@p4-1)-2)^3 elseif @v==25 fu=tan(u)^@pow2-@p4 fu1=@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==26 fu=cotan(u)^@pow2-@p4 fu1=-@pow2*cotan(u)^@pow2/(sin(u)*cos(u)) elseif @v==27 fu=tanh(u)^@pow2-@p4 fu1=@pow2*tanh(u)^@pow2/(sinh(u)*cosh(u)) elseif @v==28 fu=(1/cos(u))^@pow2-@p4 fu1=@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==29 fu=(1/sin(u))^@pow2-@p4 fu1=-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==30 fu=u^@pow2+(1/sin(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==31 fu=u^@pow2+(1/cos(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==32 fu=u^@pow2+(u^2)^@pow2+1i*(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3i*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==33 fu=(u-1i)^@pow2+(u^2-1i)^@pow2+1i*(u^3-1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2-1i)^(@pow2-1)+3*@pow2*u*2*(u^3-1i)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==34 fu=(u+1i)^@pow2+(u^2+1i)^@pow2+1i*(u^3+1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+3*@pow2*u*2*(u^3+1i)^(@pow2-1)+@pow2*(u+1i)^(@pow2-1) elseif @v==35 fu=9*u^@pow2+3i*u^(@pow2+1)+(1/cos(u))^@pow2-@p4 fu1=9*@pow2*u^(@pow2-1)+3i*(@pow2+1)*u^@pow2+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==36 fu=u^@pow2+u^(@pow2+1)+u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2+(@pow2+2)*u^(@pow2+1) elseif @v==37 fu=u^@pow2+u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==38 fu=2*u^@pow2-3i*u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=2*@pow2*u^(@pow2-1)-3i*(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==39 fu=u^@pow2+(u^2)^@pow2+(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==40 fu=(u+cotanh(u))^@pow2-@p4 fu1=-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) elseif @v==41 fu=(u^2*(u-2)/(1-2*u))^@pow2-@p4 fu1=@pow2*(4*u^2-7*u+4)*((u-2)*u^2/(1-2*u))^@pow2/((u-2)*u*(2*u-1)) elseif @v==42 fu=u^@pow2+((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 fu1=@pow2*u^(@pow2-1)+@pow2*(((@p4+1)*(u-(@p4+1)))/(1-(@p4+1)*u)^2+1/(1-(@p4+1)*u))/((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 elseif @v==43 fu=u^@pow2+1i*(u-1/u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==44 fu=u^(@pow2+1)-1i*(u-1/u)^@pow2-@p4 fu1=(@pow2+1)*u^@pow2-1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==45 fu=u^@pow2+u^(@pow2-1)+1i*(u-1/u)^@pow2+tan(u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2-1)*u^(@pow2-2)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1)+@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==46 fu=(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==47 fu=u^@pow2+(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==48 fu=(u+1i*u)^@pow2+u^3/1i+(u+cotanh(u))^@pow2-@p4 fu1=@pow2*((1+1i)*u)^@pow2/u+3*u^2/1i-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) else fu=(u^2+1i)^@pow2+(u+2i)^(@pow2+1)-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+(@pow2+1)*(u+2i)^@pow2 endif pz=(1-@p2)*pz+@p2*(u-fu/fu1) return pz endfunc default: title="Das-Debata Newton" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param p1 caption="Das-Debata Parameter 1" default=(0.6,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.4,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=4 endparam param p3 caption="Constant 1" default=(1.5,0) endparam param p4 caption="Constant 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_GeneralisedAgarwalNewton(common.ulb:ConvergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 fz=pz^@pow1-@p3 fz1=@pow1*pz^(@pow1-1) elseif @v==1 fz=pz^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*((pz-1)/(pz+1))^@pow1/(pz^2-1) elseif @v==2 fz=((pz^2-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz-1)^(@pow1-1) elseif @v==3 fz=((pz^3-1)/(pz^2+1))^@pow1-@p3 fz1=@pow1*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow1-1) elseif @v==4 fz=((pz^2+1)/pz)^@pow1-@p3 fz1=@pow1*(pz^2-1)*(pz+1/pz)^@pow1/(pz^3+pz) elseif @v==5 fz=(pz+pz^2)^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz*(pz+1))^(@pow1-1) elseif @v==6 fz=pz^@pow1+((pz-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2i*@pow1*((pz-1i)/(pz+1i))^@pow1/(pz^2+1) elseif @v==7 fz=((pz^2-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow1-1) elseif @v==8 fz=((pz^2-1i)/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz)^(@pow1-1) elseif @v==9 fz=((pz^2+1i)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow1-1)/(pz+1)^2 elseif @v==10 fz=(pz+1i)^@pow1-@p3 fz1=@pow1*(pz+1i)^(@pow1-1) elseif @v==11 fz=(1/pz^2+1/pz)^@pow1-@p3 fz1=@pow1*(pz+2)*((pz+1)/pz^2)^(@pow1-1)/pz^2 elseif @v==12 fz=pz^@pow1*(pz-2)/(1-2*pz)-(@p3-0.5) fz1=pz^(@pow1-1)*(@pow1*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 fz=((pz^2-2)/(1-2*pz))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==14 fz=((1-2*pz)/(pz^2-2))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==15 fz=recip(pz)^@pow1-@p3 fz1=-@pow1*recip(pz)^(@pow1+1) elseif @v==16 fz=(pz+sqr(pz)+1/pz)^@pow1-@p3 fz1=@pow1*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow1-1) elseif @v==17 fz=(sqr(pz)-1/pz)^@pow1-@p3 fz1=@pow1*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow1-1) elseif @v==18 fz=(pz-1i-1i/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow1-1) elseif @v==19 fz=(pz+1i-1i/pz^2)^@pow1-@p3 fz1=@pow1*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow1-1) elseif @v==20 fz=(pz+pz^2)^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz^2+pz)^(@pow1-1)+@pow1*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow1-1) elseif @v==21 fz=(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1+@p3)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3)^2 elseif @v==22 fz=(pz^(@pow1+1)+@p3)/(pz^@pow1-1i) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1-1i)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)+@p3)/(pz^@pow1-1i)^2 elseif @v==23 fz=(pz^2+pz/1i)^@pow1-@p3 fz1=@pow1*(2*pz-1i)*(pz*(pz-1i))^(@pow1-1) elseif @v==24 fz=((pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2))^2 fz1=2*@pow1*pz^(@pow1-1)*(pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2)^2-2*@pow1*(pz^@pow1+(@p3-1)-1)^2/(@pow1*pz+(@p3-1)-2)^3 elseif @v==25 fz=tan(pz)^@pow1-@p3 fz1=@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==26 fz=cotan(pz)^@pow1-@p3 fz1=-@pow1*cotan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==27 fz=tanh(pz)^@pow1-@p3 fz1=@pow1*tanh(pz)^@pow1/(sinh(pz)*cosh(pz)) elseif @v==28 fz=(1/cos(pz))^@pow1-@p3 fz1=@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==29 fz=(1/sin(pz))^@pow1-@p3 fz1=-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==30 fz=pz^@pow1+(1/sin(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==31 fz=pz^@pow1+(1/cos(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==32 fz=pz^@pow1+(pz^2)^@pow1+1i*(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3i*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==33 fz=(pz-1i)^@pow1+(pz^2-1i)^@pow1+1i*(pz^3-1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2-1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3-1i)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==34 fz=(pz+1i)^@pow1+(pz^2+1i)^@pow1+1i*(pz^3+1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3+1i)^(@pow1-1)+@pow1*(pz+1i)^(@pow1-1) elseif @v==35 fz=9*pz^@pow1+3i*pz^(@pow1+1)+(1/cos(pz))^@pow1-@p3 fz1=9*@pow1*pz^(@pow1-1)+3i*(@pow1+1)*pz^@pow1+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==36 fz=pz^@pow1+pz^(@pow1+1)+pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1+(@pow1+2)*pz^(@pow1+1) elseif @v==37 fz=pz^@pow1+pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==38 fz=2*pz^@pow1-3i*pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=2*@pow1*pz^(@pow1-1)-3i*(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==39 fz=pz^@pow1+(pz^2)^@pow1+(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==40 fz=(pz+cotanh(pz))^@pow1-@p3 fz1=-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) elseif @v==41 fz=(pz^2*(pz-2)/(1-2*pz))^@pow1-@p3 fz1=@pow1*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow1/((pz-2)*pz*(2*pz-1)) elseif @v==42 fz=pz^@pow1+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 fz1=@pow1*pz^(@pow1-1)+@pow1*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 elseif @v==43 fz=pz^@pow1+1i*(pz-1/pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==44 fz=pz^(@pow1+1)-1i*(pz-1/pz)^@pow1-@p3 fz1=(@pow1+1)*pz^@pow1-1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==45 fz=pz^@pow1+pz^(@pow1-1)+1i*(pz-1/pz)^@pow1+tan(pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1-1)*pz^(@pow1-2)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1)+@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==46 fz=(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==47 fz=pz^@pow1+(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==48 fz=(pz+1i*pz)^@pow1+pz^3/1i+(pz+cotanh(pz))^@pow1-@p3 fz1=@pow1*((1+1i)*pz)^@pow1/pz+3*pz^2/1i-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) else fz=(pz^2+1i)^@pow1+(pz+2i)^(@pow1+1)-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+(@pow1+1)*(pz+2i)^@pow1 endif u=(1-@p1)*pz+@p1*(pz-fz/fz1) if @v==0 fu=u^@pow2-@p4 fu1=@pow2*u^(@pow2-1) elseif @v==1 fu=u^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*((u-1)/(u+1))^@pow2/(u^2-1) elseif @v==2 fu=((u^2-1)/(u+1))^@pow2-@p4 fu1=@pow2*(u-1)^(@pow2-1) elseif @v==3 fu=((u^3-1)/(u^2+1))^@pow2-@p4 fu1=@pow2*(3*u^2/(u^2+1)-2*u*(u^3-1)/(u^2+1)^2)*((u^3-1)/(u^2+1))^(@pow2-1) elseif @v==4 fu=((u^2+1)/u)^@pow2-@p4 fu1=@pow2*(u^2-1)*(u+1/u)^@pow2/(u^3+u) elseif @v==5 fu=(u+u^2)^@pow2-@p4 fu1=@pow2*(2*u+1)*(u*(u+1))^(@pow2-1) elseif @v==6 fu=u^@pow2+((u-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2i*@pow2*((u-1i)/(u+1i))^@pow2/(u^2+1) elseif @v==7 fu=((u^2-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*(2*u/(u+1i)-(u^2-1i)/(u+1i)^2)*((u^2-1i)/(u+1i))^(@pow2-1) elseif @v==8 fu=((u^2-1i)/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u)^(@pow2-1) elseif @v==9 fu=((u^2+1i)/(u+1))^@pow2-@p4 fu1=@pow2*(u^2+2*u-1i)*((u^2+1i)/(u+1))^(@pow2-1)/(u+1)^2 elseif @v==10 fu=(u+1i)^@pow2-@p4 fu1=@pow2*(u+1i)^(@pow2-1) elseif @v==11 fu=(1/u^2+1/u)^@pow2-@p4 fu1=@pow2*(u+2)*((u+1)/u^2)^(@pow2-1)/u^2 elseif @v==12 fu=u^@pow2*(u-2)/(1-2*u)-(@p4-0.5) fu1=u^(@pow2-1)*(@pow2*(-2*u^2+5*u-2)-3*u)/(1-2*u)^2 elseif @v==13 fu=((u^2-2)/(1-2*u))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((u^2-2)/(1-2*u))^@pow2/((2*u-1)*(u^2-2)) elseif @v==14 fu=((1-2*u)/(u^2-2))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((1-2*u)/(u^2-2))^@pow2/((2*u-1)*(u^2-2)) elseif @v==15 fu=recip(u)^@pow2-@p4 fu1=-@pow2*recip(u)^(@pow2+1) elseif @v==16 fu=(u+sqr(u)+1/u)^@pow2-@p4 fu1=@pow2*(-1/u^2+2*u+1)*(u^2+u+1/u)^(@pow2-1) elseif @v==17 fu=(sqr(u)-1/u)^@pow2-@p4 fu1=@pow2*(1/u^2+2*u)*((u^3-1)/u)^(@pow2-1) elseif @v==18 fu=(u-1i-1i/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u-1i)^(@pow2-1) elseif @v==19 fu=(u+1i-1i/u^2)^@pow2-@p4 fu1=@pow2*(1+2i/u^3)*(u-1i/u^2+1i)^(@pow2-1) elseif @v==20 fu=(u+u^2)^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*(2*u+1)*(u^2+u)^(@pow2-1)+@pow2*(1/(u+1)-(u-1)/(u+1)^2)*((u-1)/(u+1))^(@pow2-1) elseif @v==21 fu=(u^(@pow2+1)-@p4)/(u^@pow2+@p4) fu1=(@pow2+1)*u^@pow2/(u^@pow2+@p4)-@pow2*u^(@pow2-1)*(u^(@pow2+1)-@p4)/(u^@pow2+@p4)^2 elseif @v==22 fu=(u^(@pow2+1)+@p4)/(u^@pow2-1i) fu1=(@pow2+1)*u^@pow2/(u^@pow2-1i)-@pow2*u^(@pow2-1)*(u^(@pow2+1)+@p4)/(u^@pow2-1i)^2 elseif @v==23 fu=(u^2+u/1i)^@pow2-@p4 fu1=@pow2*(2*u-1i)*(u*(u-1i))^(@pow2-1) elseif @v==24 fu=((u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2))^2 fu1=2*@pow2*u^(@pow2-1)*(u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2)^2-2*@pow2*(u^@pow2+(@p4-1)-1)^2/(@pow2*u+(@p4-1)-2)^3 elseif @v==25 fu=tan(u)^@pow2-@p4 fu1=@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==26 fu=cotan(u)^@pow2-@p4 fu1=-@pow2*cotan(u)^@pow2/(sin(u)*cos(u)) elseif @v==27 fu=tanh(u)^@pow2-@p4 fu1=@pow2*tanh(u)^@pow2/(sinh(u)*cosh(u)) elseif @v==28 fu=(1/cos(u))^@pow2-@p4 fu1=@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==29 fu=(1/sin(u))^@pow2-@p4 fu1=-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==30 fu=u^@pow2+(1/sin(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==31 fu=u^@pow2+(1/cos(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==32 fu=u^@pow2+(u^2)^@pow2+1i*(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3i*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==33 fu=(u-1i)^@pow2+(u^2-1i)^@pow2+1i*(u^3-1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2-1i)^(@pow2-1)+3*@pow2*u*2*(u^3-1i)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==34 fu=(u+1i)^@pow2+(u^2+1i)^@pow2+1i*(u^3+1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+3*@pow2*u*2*(u^3+1i)^(@pow2-1)+@pow2*(u+1i)^(@pow2-1) elseif @v==35 fu=9*u^@pow2+3i*u^(@pow2+1)+(1/cos(u))^@pow2-@p4 fu1=9*@pow2*u^(@pow2-1)+3i*(@pow2+1)*u^@pow2+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==36 fu=u^@pow2+u^(@pow2+1)+u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2+(@pow2+2)*u^(@pow2+1) elseif @v==37 fu=u^@pow2+u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==38 fu=2*u^@pow2-3i*u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=2*@pow2*u^(@pow2-1)-3i*(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==39 fu=u^@pow2+(u^2)^@pow2+(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==40 fu=(u+cotanh(u))^@pow2-@p4 fu1=-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) elseif @v==41 fu=(u^2*(u-2)/(1-2*u))^@pow2-@p4 fu1=@pow2*(4*u^2-7*u+4)*((u-2)*u^2/(1-2*u))^@pow2/((u-2)*u*(2*u-1)) elseif @v==42 fu=u^@pow2+((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 fu1=@pow2*u^(@pow2-1)+@pow2*(((@p4+1)*(u-(@p4+1)))/(1-(@p4+1)*u)^2+1/(1-(@p4+1)*u))/((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 elseif @v==43 fu=u^@pow2+1i*(u-1/u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==44 fu=u^(@pow2+1)-1i*(u-1/u)^@pow2-@p4 fu1=(@pow2+1)*u^@pow2-1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==45 fu=u^@pow2+u^(@pow2-1)+1i*(u-1/u)^@pow2+tan(u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2-1)*u^(@pow2-2)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1)+@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==46 fu=(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==47 fu=u^@pow2+(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==48 fu=(u+1i*u)^@pow2+u^3/1i+(u+cotanh(u))^@pow2-@p4 fu1=@pow2*((1+1i)*u)^@pow2/u+3*u^2/1i-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) else fu=(u^2+1i)^@pow2+(u+2i)^(@pow2+1)-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+(@pow2+1)*(u+2i)^@pow2 endif pz=(1-@p2)*(pz-fz/fz1)+@p2*(u-fu/fu1) return pz endfunc default: title="Generalised Agarwal Newton" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param p1 caption="GA Parameter 1" default=(0.5,0) endparam param p2 caption="GA Parameter 2" default=(0.4,0) endparam param pow1 caption="Exponent 1" default=4 endparam param pow2 caption="Exponent 2" default=3 endparam param p3 caption="Constant 1" default=(2,0) endparam param p4 caption="Constant 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_GeneralisedAgarwalMunster(common.ulb:DivergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(@mp1b*pz^2*(pz-@mp1a)/(1-@mp1a*pz)) pz=(1-@p2)*(@mp2b*pz^2*(pz-@mp2a)/(1-@mp2a*pz))+@p2*(@mp3b*u^2*(u-@mp3a)/(1-@mp3a*u)) elseif @jm==1 u=(1-@p1)*pz+@p1*(@mp1b*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)) pz=(1-@p2)*(@mp2b*c*pz^2*(pz-@mp2a)/(1-@mp2a*pz))+@p2*(@mp3b*c*u^2*(u-@mp3a)/(1-@mp3a*u)) elseif @jm==2 u=(1-@p1)*pz+@p1*(@mp1b*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c) pz=(1-@p2)*(@mp2b*pz^2*(pz-@mp2a)/(1-@mp2a*pz)+c)+@p2*(@mp3b*u^2*(u-@mp3a)/(1-@mp3a*u)+c) else u=(1-@p1)*pz+@p1*(@mp1b*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c) pz=(1-@p2)*(@mp2b*c*pz^2*(pz-@mp2a)/(1-@mp2a*pz)+c)+@p2*(@mp3b*c*u^2*(u-@mp3a)/(1-@mp3a*u)+c) endif return pz endfunc default: title="Generalised Agarwal Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="GA Parameter 1" default=(0.67,0) endparam param p2 caption="GA Parameter 2" default=(-1.385,0) endparam param mp1a caption="Munster Parameter 1a" default=(1.6,0) endparam param mp1b caption="Munster Parameter 1b" default=(1,0) endparam param mp2a caption="Munster Parameter 2a" default=(3.8,0) endparam param mp2b caption="Munster Parameter 2b" default=(1,0) endparam param mp3a caption="Munster Parameter 3a" default=(1.5,0) endparam param mp3b caption="Munster Parameter 3b" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class YadavTripathiMagnetJ(common.ulb:ConvergentDivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=@p1a*pz+@p2a*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p3a*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2)))+@p3b*(sqr((u^2+@mp1-1)/(2*u+@mp1-2))) return pz endfunc default: title="Yadav-Tripathi Magnet J" param p1a caption="Yadav-Tripathi Parameter 1a" default=(-1.5,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-0.3,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.55,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.3,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(-0.65,0) endparam param mp1 caption="Magnet Parameter 1" default=(1.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.0001 exponential=true endparam complex param p_power visible=false endparam } class YadavTripathiMagnetM(common.ulb:ConvergentDivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=@p1a*pz+@p2a*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p3a*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p3b*(sqr((u^2+@mp1*c-1)/(2*u+@mp1*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Yadav-Tripathi Magnet M" param sp caption="Start Parameter" default=(0,0) endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-2.75,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-0.3,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.55,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.3,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(-0.65,0) endparam param mp1 caption="Magnet Parameter 1" default=(1,0) endparam param mp2 caption="Magnet Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 exponential=true endparam complex param p_power visible=false endparam } class OM_DasDebataPhoenix(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif c=@sf(pixel) return pz return a endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a) b=(1-@p2)*pz+@p2*(u^@pow1b+u^@pow2b*@pp2b+@pp1b*a) else u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*c+@pp1a*a) b=(1-@p2)*pz+@p2*(u^@pow1b+u^@pow2b*c+@pp1b*a) endif a=pz pz=b return pz return a endfunc private: complex c complex a complex b default: title="Das-Debata Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.5,0) visible=@jm==1 endparam param p1 caption="Das-Debata Parameter 1" default=(0.35,0) endparam param p2 caption="Das-Debata Parameter 2" default=(-0.2,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(0.56667,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.76667,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=(3,0) endparam param pow1b caption="Exponent 1b" default=(2,0) endparam param pow2a caption="Exponent 2a" default=(0,0) endparam param pow2b caption="Exponent 2b" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DasDebataDevaney(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif if @version==100 c=@sf(pixel) else c=c endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) else u=(1-@p1)*pz+@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b) endif return pz endfunc private: complex c default: title="Das-Debata Devaney" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.6,0) visible=@jm!=0 endparam param p1 caption="Das-Debata Parameter 1" default=(-0.325,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.4,0) endparam param jsa caption="Julia Seed a" default=(0.25,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(1.25,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.25,0) endparam param mpb caption="Modification Parameter b" default=(2.5,0) endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DasDebataCayley(common.ulb:ConvergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(((pz-1i)/(pz+1i))^@pow1+@cp1) pz=(1-@p2)*pz+@p2*(((u-1i)/(u+1i))^@pow2+@cp2) else u=(1-@p1)*pz+@p1*(((pz-1i)/(pz+1i))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(((u-1i)/(u+1i))^@pow2+@cp2*c) endif return pz endfunc private: complex c default: title="Das-Debata Cayley" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm!=0 endparam param p1 caption="Das-Debata Parameter 1" default=(0.85,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.4,0) endparam param cp1 caption="Cayley Parameter 1" default=(0.5,0) endparam param cp2 caption="Cayley Parameter 2" default=(0.4,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_DasDebataNova(common.ulb:ConvergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) if @st==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 fz=pz^@pow1-@p3 fz1=@pow1*pz^(@pow1-1) elseif @v==1 fz=pz^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*((pz-1)/(pz+1))^@pow1/(pz^2-1) elseif @v==2 fz=((pz^2-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz-1)^(@pow1-1) elseif @v==3 fz=((pz^3-1)/(pz^2+1))^@pow1-@p3 fz1=@pow1*(3*pz^2/(pz^2+1)-2*pz*(pz^3-1)/(pz^2+1)^2)*((pz^3-1)/(pz^2+1))^(@pow1-1) elseif @v==4 fz=((pz^2+1)/pz)^@pow1-@p3 fz1=@pow1*(pz^2-1)*(pz+1/pz)^@pow1/(pz^3+pz) elseif @v==5 fz=(pz+pz^2)^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz*(pz+1))^(@pow1-1) elseif @v==6 fz=pz^@pow1+((pz-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2i*@pow1*((pz-1i)/(pz+1i))^@pow1/(pz^2+1) elseif @v==7 fz=((pz^2-1i)/(pz+1i))^@pow1-@p3 fz1=@pow1*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow1-1) elseif @v==8 fz=((pz^2-1i)/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz)^(@pow1-1) elseif @v==9 fz=((pz^2+1i)/(pz+1))^@pow1-@p3 fz1=@pow1*(pz^2+2*pz-1i)*((pz^2+1i)/(pz+1))^(@pow1-1)/(pz+1)^2 elseif @v==10 fz=(pz+1i)^@pow1-@p3 fz1=@pow1*(pz+1i)^(@pow1-1) elseif @v==11 fz=(1/pz^2+1/pz)^@pow1-@p3 fz1=@pow1*(pz+2)*((pz+1)/pz^2)^(@pow1-1)/pz^2 elseif @v==12 fz=pz^@pow1*(pz-2)/(1-2*pz)-(@p3-0.5) fz1=pz^(@pow1-1)*(@pow1*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2 elseif @v==13 fz=((pz^2-2)/(1-2*pz))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((pz^2-2)/(1-2*pz))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==14 fz=((1-2*pz)/(pz^2-2))^@pow1-@p3 fz1=2*@pow1*(pz^2-pz+2)*((1-2*pz)/(pz^2-2))^@pow1/((2*pz-1)*(pz^2-2)) elseif @v==15 fz=recip(pz)^@pow1-@p3 fz1=-@pow1*recip(pz)^(@pow1+1) elseif @v==16 fz=(pz+sqr(pz)+1/pz)^@pow1-@p3 fz1=@pow1*(-1/pz^2+2*pz+1)*(pz^2+pz+1/pz)^(@pow1-1) elseif @v==17 fz=(sqr(pz)-1/pz)^@pow1-@p3 fz1=@pow1*(1/pz^2+2*pz)*((pz^3-1)/pz)^(@pow1-1) elseif @v==18 fz=(pz-1i-1i/pz)^@pow1-@p3 fz1=@pow1*(1+1i/pz^2)*(pz-1i/pz-1i)^(@pow1-1) elseif @v==19 fz=(pz+1i-1i/pz^2)^@pow1-@p3 fz1=@pow1*(1+2i/pz^3)*(pz-1i/pz^2+1i)^(@pow1-1) elseif @v==20 fz=(pz+pz^2)^@pow1+((pz-1)/(pz+1))^@pow1-@p3 fz1=@pow1*(2*pz+1)*(pz^2+pz)^(@pow1-1)+@pow1*(1/(pz+1)-(pz-1)/(pz+1)^2)*((pz-1)/(pz+1))^(@pow1-1) elseif @v==21 fz=(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1+@p3)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)-@p3)/(pz^@pow1+@p3)^2 elseif @v==22 fz=(pz^(@pow1+1)+@p3)/(pz^@pow1-1i) fz1=(@pow1+1)*pz^@pow1/(pz^@pow1-1i)-@pow1*pz^(@pow1-1)*(pz^(@pow1+1)+@p3)/(pz^@pow1-1i)^2 elseif @v==23 fz=(pz^2+pz/1i)^@pow1-@p3 fz1=@pow1*(2*pz-1i)*(pz*(pz-1i))^(@pow1-1) elseif @v==24 fz=((pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2))^2 fz1=2*@pow1*pz^(@pow1-1)*(pz^@pow1+(@p3-1)-1)/(@pow1*pz+(@p3-1)-2)^2-2*@pow1*(pz^@pow1+(@p3-1)-1)^2/(@pow1*pz+(@p3-1)-2)^3 elseif @v==25 fz=tan(pz)^@pow1-@p3 fz1=@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==26 fz=cotan(pz)^@pow1-@p3 fz1=-@pow1*cotan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==27 fz=tanh(pz)^@pow1-@p3 fz1=@pow1*tanh(pz)^@pow1/(sinh(pz)*cosh(pz)) elseif @v==28 fz=(1/cos(pz))^@pow1-@p3 fz1=@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==29 fz=(1/sin(pz))^@pow1-@p3 fz1=-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==30 fz=pz^@pow1+(1/sin(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)-@pow1*cos(pz)/sin(pz)^(@pow1+1) elseif @v==31 fz=pz^@pow1+(1/cos(pz))^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==32 fz=pz^@pow1+(pz^2)^@pow1+1i*(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3i*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==33 fz=(pz-1i)^@pow1+(pz^2-1i)^@pow1+1i*(pz^3-1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2-1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3-1i)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==34 fz=(pz+1i)^@pow1+(pz^2+1i)^@pow1+1i*(pz^3+1i)^@pow1-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+3*@pow1*pz*2*(pz^3+1i)^(@pow1-1)+@pow1*(pz+1i)^(@pow1-1) elseif @v==35 fz=9*pz^@pow1+3i*pz^(@pow1+1)+(1/cos(pz))^@pow1-@p3 fz1=9*@pow1*pz^(@pow1-1)+3i*(@pow1+1)*pz^@pow1+@pow1*sin(pz)/cos(pz)^(@pow1+1) elseif @v==36 fz=pz^@pow1+pz^(@pow1+1)+pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1+(@pow1+2)*pz^(@pow1+1) elseif @v==37 fz=pz^@pow1+pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==38 fz=2*pz^@pow1-3i*pz^(@pow1+1)-1i*pz^(@pow1+2)-@p3 fz1=2*@pow1*pz^(@pow1-1)-3i*(@pow1+1)*pz^@pow1-1i*(@pow1+2)*pz^(@pow1+1) elseif @v==39 fz=pz^@pow1+(pz^2)^@pow1+(pz^3)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+2*@pow1*pz*(pz^2)^(@pow1-1)+3*@pow1*pz^2*(pz^3)^(@pow1-1) elseif @v==40 fz=(pz+cotanh(pz))^@pow1-@p3 fz1=-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) elseif @v==41 fz=(pz^2*(pz-2)/(1-2*pz))^@pow1-@p3 fz1=@pow1*(4*pz^2-7*pz+4)*((pz-2)*pz^2/(1-2*pz))^@pow1/((pz-2)*pz*(2*pz-1)) elseif @v==42 fz=pz^@pow1+((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 fz1=@pow1*pz^(@pow1-1)+@pow1*(((@p3+1)*(pz-(@p3+1)))/(1-(@p3+1)*pz)^2+1/(1-(@p3+1)*pz))/((pz-(@p3+1))/(1-(@p3+1)*pz))^@pow1 elseif @v==43 fz=pz^@pow1+1i*(pz-1/pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==44 fz=pz^(@pow1+1)-1i*(pz-1/pz)^@pow1-@p3 fz1=(@pow1+1)*pz^@pow1-1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1) elseif @v==45 fz=pz^@pow1+pz^(@pow1-1)+1i*(pz-1/pz)^@pow1+tan(pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+(@pow1-1)*pz^(@pow1-2)+1i*@pow1*(1/pz^2+1)*(pz-1/pz)^(@pow1-1)+@pow1*tan(pz)^@pow1/(sin(pz)*cos(pz)) elseif @v==46 fz=(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==47 fz=pz^@pow1+(pz-1i)^@pow1+(1i*pz)^@pow1-@p3 fz1=@pow1*pz^(@pow1-1)+1i*@pow1*(1i*pz)^(@pow1-1)+@pow1*(pz-1i)^(@pow1-1) elseif @v==48 fz=(pz+1i*pz)^@pow1+pz^3/1i+(pz+cotanh(pz))^@pow1-@p3 fz1=@pow1*((1+1i)*pz)^@pow1/pz+3*pz^2/1i-@pow1*(1/sinh(pz)^2-1)*(pz+cotanh(pz))^(@pow1-1) else fz=(pz^2+1i)^@pow1+(pz+2i)^(@pow1+1)-@p3 fz1=2*@pow1*pz*(pz^2+1i)^(@pow1-1)+(@pow1+1)*(pz+2i)^@pow1 endif u=(1-@p1)*pz+@p1*(pz-fz/fz1+@pp1*c) if @v==0 fu=u^@pow2-@p4 fu1=@pow2*u^(@pow2-1) elseif @v==1 fu=u^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*((u-1)/(u+1))^@pow2/(u^2-1) elseif @v==2 fu=((u^2-1)/(u+1))^@pow2-@p4 fu1=@pow2*(u-1)^(@pow2-1) elseif @v==3 fu=((u^3-1)/(u^2+1))^@pow2-@p4 fu1=@pow2*(3*u^2/(u^2+1)-2*u*(u^3-1)/(u^2+1)^2)*((u^3-1)/(u^2+1))^(@pow2-1) elseif @v==4 fu=((u^2+1)/u)^@pow2-@p4 fu1=@pow2*(u^2-1)*(u+1/u)^@pow2/(u^3+u) elseif @v==5 fu=(u+u^2)^@pow2-@p4 fu1=@pow2*(2*u+1)*(u*(u+1))^(@pow2-1) elseif @v==6 fu=u^@pow2+((u-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2i*@pow2*((u-1i)/(u+1i))^@pow2/(u^2+1) elseif @v==7 fu=((u^2-1i)/(u+1i))^@pow2-@p4 fu1=@pow2*(2*u/(u+1i)-(u^2-1i)/(u+1i)^2)*((u^2-1i)/(u+1i))^(@pow2-1) elseif @v==8 fu=((u^2-1i)/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u)^(@pow2-1) elseif @v==9 fu=((u^2+1i)/(u+1))^@pow2-@p4 fu1=@pow2*(u^2+2*u-1i)*((u^2+1i)/(u+1))^(@pow2-1)/(u+1)^2 elseif @v==10 fu=(u+1i)^@pow2-@p4 fu1=@pow2*(u+1i)^(@pow2-1) elseif @v==11 fu=(1/u^2+1/u)^@pow2-@p4 fu1=@pow2*(u+2)*((u+1)/u^2)^(@pow2-1)/u^2 elseif @v==12 fu=u^@pow2*(u-2)/(1-2*u)-(@p4-0.5) fu1=u^(@pow2-1)*(@pow2*(-2*u^2+5*u-2)-3*u)/(1-2*u)^2 elseif @v==13 fu=((u^2-2)/(1-2*u))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((u^2-2)/(1-2*u))^@pow2/((2*u-1)*(u^2-2)) elseif @v==14 fu=((1-2*u)/(u^2-2))^@pow2-@p4 fu1=2*@pow2*(u^2-u+2)*((1-2*u)/(u^2-2))^@pow2/((2*u-1)*(u^2-2)) elseif @v==15 fu=recip(u)^@pow2-@p4 fu1=-@pow2*recip(u)^(@pow2+1) elseif @v==16 fu=(u+sqr(u)+1/u)^@pow2-@p4 fu1=@pow2*(-1/u^2+2*u+1)*(u^2+u+1/u)^(@pow2-1) elseif @v==17 fu=(sqr(u)-1/u)^@pow2-@p4 fu1=@pow2*(1/u^2+2*u)*((u^3-1)/u)^(@pow2-1) elseif @v==18 fu=(u-1i-1i/u)^@pow2-@p4 fu1=@pow2*(1+1i/u^2)*(u-1i/u-1i)^(@pow2-1) elseif @v==19 fu=(u+1i-1i/u^2)^@pow2-@p4 fu1=@pow2*(1+2i/u^3)*(u-1i/u^2+1i)^(@pow2-1) elseif @v==20 fu=(u+u^2)^@pow2+((u-1)/(u+1))^@pow2-@p4 fu1=@pow2*(2*u+1)*(u^2+u)^(@pow2-1)+@pow2*(1/(u+1)-(u-1)/(u+1)^2)*((u-1)/(u+1))^(@pow2-1) elseif @v==21 fu=(u^(@pow2+1)-@p4)/(u^@pow2+@p4) fu1=(@pow2+1)*u^@pow2/(u^@pow2+@p4)-@pow2*u^(@pow2-1)*(u^(@pow2+1)-@p4)/(u^@pow2+@p4)^2 elseif @v==22 fu=(u^(@pow2+1)+@p4)/(u^@pow2-1i) fu1=(@pow2+1)*u^@pow2/(u^@pow2-1i)-@pow2*u^(@pow2-1)*(u^(@pow2+1)+@p4)/(u^@pow2-1i)^2 elseif @v==23 fu=(u^2+u/1i)^@pow2-@p4 fu1=@pow2*(2*u-1i)*(u*(u-1i))^(@pow2-1) elseif @v==24 fu=((u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2))^2 fu1=2*@pow2*u^(@pow2-1)*(u^@pow2+(@p4-1)-1)/(@pow2*u+(@p4-1)-2)^2-2*@pow2*(u^@pow2+(@p4-1)-1)^2/(@pow2*u+(@p4-1)-2)^3 elseif @v==25 fu=tan(u)^@pow2-@p4 fu1=@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==26 fu=cotan(u)^@pow2-@p4 fu1=-@pow2*cotan(u)^@pow2/(sin(u)*cos(u)) elseif @v==27 fu=tanh(u)^@pow2-@p4 fu1=@pow2*tanh(u)^@pow2/(sinh(u)*cosh(u)) elseif @v==28 fu=(1/cos(u))^@pow2-@p4 fu1=@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==29 fu=(1/sin(u))^@pow2-@p4 fu1=-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==30 fu=u^@pow2+(1/sin(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)-@pow2*cos(u)/sin(u)^(@pow2+1) elseif @v==31 fu=u^@pow2+(1/cos(u))^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==32 fu=u^@pow2+(u^2)^@pow2+1i*(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3i*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==33 fu=(u-1i)^@pow2+(u^2-1i)^@pow2+1i*(u^3-1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2-1i)^(@pow2-1)+3*@pow2*u*2*(u^3-1i)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==34 fu=(u+1i)^@pow2+(u^2+1i)^@pow2+1i*(u^3+1i)^@pow2-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+3*@pow2*u*2*(u^3+1i)^(@pow2-1)+@pow2*(u+1i)^(@pow2-1) elseif @v==35 fu=9*u^@pow2+3i*u^(@pow2+1)+(1/cos(u))^@pow2-@p4 fu1=9*@pow2*u^(@pow2-1)+3i*(@pow2+1)*u^@pow2+@pow2*sin(u)/cos(u)^(@pow2+1) elseif @v==36 fu=u^@pow2+u^(@pow2+1)+u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2+(@pow2+2)*u^(@pow2+1) elseif @v==37 fu=u^@pow2+u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==38 fu=2*u^@pow2-3i*u^(@pow2+1)-1i*u^(@pow2+2)-@p4 fu1=2*@pow2*u^(@pow2-1)-3i*(@pow2+1)*u^@pow2-1i*(@pow2+2)*u^(@pow2+1) elseif @v==39 fu=u^@pow2+(u^2)^@pow2+(u^3)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+2*@pow2*u*(u^2)^(@pow2-1)+3*@pow2*u^2*(u^3)^(@pow2-1) elseif @v==40 fu=(u+cotanh(u))^@pow2-@p4 fu1=-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) elseif @v==41 fu=(u^2*(u-2)/(1-2*u))^@pow2-@p4 fu1=@pow2*(4*u^2-7*u+4)*((u-2)*u^2/(1-2*u))^@pow2/((u-2)*u*(2*u-1)) elseif @v==42 fu=u^@pow2+((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 fu1=@pow2*u^(@pow2-1)+@pow2*(((@p4+1)*(u-(@p4+1)))/(1-(@p4+1)*u)^2+1/(1-(@p4+1)*u))/((u-(@p4+1))/(1-(@p4+1)*u))^@pow2 elseif @v==43 fu=u^@pow2+1i*(u-1/u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==44 fu=u^(@pow2+1)-1i*(u-1/u)^@pow2-@p4 fu1=(@pow2+1)*u^@pow2-1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1) elseif @v==45 fu=u^@pow2+u^(@pow2-1)+1i*(u-1/u)^@pow2+tan(u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+(@pow2-1)*u^(@pow2-2)+1i*@pow2*(1/u^2+1)*(u-1/u)^(@pow2-1)+@pow2*tan(u)^@pow2/(sin(u)*cos(u)) elseif @v==46 fu=(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==47 fu=u^@pow2+(u-1i)^@pow2+(1i*u)^@pow2-@p4 fu1=@pow2*u^(@pow2-1)+1i*@pow2*(1i*u)^(@pow2-1)+@pow2*(u-1i)^(@pow2-1) elseif @v==48 fu=(u+1i*u)^@pow2+u^3/1i+(u+cotanh(u))^@pow2-@p4 fu1=@pow2*((1+1i)*u)^@pow2/u+3*u^2/1i-@pow2*(1/sinh(u)^2-1)*(u+cotanh(u))^(@pow2-1) else fu=(u^2+1i)^@pow2+(u+2i)^(@pow2+1)-@p4 fu1=2*@pow2*u*(u^2+1i)^(@pow2-1)+(@pow2+1)*(u+2i)^@pow2 endif pz=(1-@p2)*pz+@p2*(u-fu/fu1+@pp2*c) return pz endfunc private: complex c default: title="Das-Debata Nova" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="z^a=c""z^a+((z-1)/(z+1))^a=c""((z^2-1)/(z+1))^a=c"\ "((z^3-1)/(z^2+1))^a=c""((z^2+1)/z)^a=c""(z+z^2)^a=c""z^a+((z-i)/(z+i))^a=c"\ "((z^2-i)/(z+i))^a=c""((z^2-i)/z)^a=c""((z^2+i)/(z+1))^a=c""(z+i)^a=c"\ "(1/z^2+1/z)^a=c""z^a*(z-2)/(1-2*z)=c""((z^2-2)/(1-2*z))^a=c"\ "((1-2*z)/(z^2-2))^a=c""recip(z)^a=c""(z+sqr(z)+1/z)^a=c""(sqr(z)-1/z)^a=c"\ "(z-i-i/z)^a=c""(z+i-i/z^2)^a=c""(z+z^2)^a+((z-1)/(z+1))^a=c"\ "(z^(a+1)-c)/(z^a+c)=0""(z^(a+1)+c)/(z^a-i)=0""(z^2+z/i)^a=c"\ "((z^a+c-1)/(a*z+c-2))^2=0""tan(z)^a=c""cotan(z)^a=c""tanh(z)^a=c"\ "sec(z)^a=c""cosec(z)^a=c""z^a+cosec(z)^a=c""z^a+sec(z)^a=c"\ "z^a+(z^2)^a+i*(z^3)^a=c""(z-i)^a+(z^2-i)^a+(z^3-i)^a=c"\ "(z+i)^a+(z^2+i)^a+(z^3+i)^a=c""9*z^a+3*i*z^(a+1)+sec(z)^a=c""z^a+z^(a+1)+z^(a+2)=c"\ "z^a+z^(a+1)-i*z^(a+2)=c""2*z^a-3*i*z^(a+1)-i*z^(a+2)=c""z^a+(z^2)^a+(z^3)^a=c"\ "(z+cotanh(z))^a=c""(z^2*(z-2)/(1-2*z))^a=c""z^a+((z-c)/(1-c*z))^a=0"\ "z^a+i*(z-1/z)^a=c""z^(a+1)-i*(z-1/z)^a=c""z^a+z^(a-1)+i*(z-1/z)^a+tan(z)^a=c"\ "(z-i)^a+(i*z)^a=c""z^a+(z-i)^a+(i*z)^a=c""(z+i*z)^a+z^3/i+(z+cotanh(z))^a=c"\ "(z^2+i)^a+(z+2*i)^a=c" endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(-0.1,0) visible=@st==1 endparam param p1 caption="Das-Debata Parameter 1" default=(0.6,0) endparam param p2 caption="Das-Debata Parameter 2" default=(1.15,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=4 endparam param p3 caption="Constant 1" default=(1.5,0) endparam param p4 caption="Constant 2" default=(2.75,0) endparam param pp1 caption="Pixel Parameter 1" default=(0.25,0) endparam param pp2 caption="Pixel Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_DasDebataBarnsley(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) pz=@sf(pz) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu return pz endfunc private: complex fz complex fu default: title="Das-Debata Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param ddp1 caption="Das-Debata Parameter 1" default=(-0.11,0.33) endparam param ddp2 caption="Das-Debata Parameter 2" default=(0.34,0.01) endparam param p1a caption="Barnsley Parameter 1a" default=(3.7,-0.29) endparam param p1b caption="Barnsley Parameter 1b" default=(1.68,0.25) endparam param p2a caption="Barnsley Parameter 2a" default=(0.02,0.48) endparam param p2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param p3a caption="Barnsley Parameter 3a" default=(1,1) endparam param p3b caption="Barnsley Parameter 3b" default=(1,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_DasDebataSpider(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) ;Spider formula by Jon Horner via Rob Barnett (reb.ufm) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @st==0 pz=@sf(pz) else pz=@sp endif return pz ;return c endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) c=c+@as*sqr(c) pz=pz+@ar/pz c=c+@ar/c u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*pz+@p2*(u^@pow2+@pp2*c) uc=(1-@p1)*c+@p1*(@pp1*c/2+pz) c=(1-@p2)*c+@p2*(@pp2*uc/2+pz) return pz ;return c endfunc default: title="Das-Debata Spider" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@st==1 endparam param p1 caption="Das-debata Parameter 1" default=(-0.6,0) endparam param p2 caption="Das-debata Parameter 2" default=(-0.3,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 3" default=3 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DasDebataIFB(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) pz=@sf(pz) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz float a=real(pz) if a<0 fz=pz*@f1a(@p1a)+@p2a endif if 0<=a fz=pz*@f2a(@p1a)+@p3a endif u=(1-@ddp1)*pz+@ddp1*fz if a<0 fu=u*@f1b(@p1b)+@p2b endif if 0<=a fu=u*@f2b(@p1b)+@p3b endif pz=(1-@ddp2)*pz+@ddp2*fu return pz endfunc private: complex fz complex fu default: title="Das-Debata IFB" int param version caption="Version" default=100 visible=@version<100 endparam param ddp1 caption="Das-Debata Parameter 1" default=(2.44,-0.86) endparam param ddp2 caption="Das-Debata Parameter 2" default=(-0.32,0.52) endparam param p1a caption="IFB Parameter 1a" default=(1.77,-0.42) endparam param p1b caption="IFB Parameter 1b" default=(1.03,0.57) endparam param p2a caption="IFB Parameter 2a" default=(1.42,-0.13) endparam param p2b caption="IFB Parameter 2b" default=(-1.06,-0.75) endparam param p3a caption="IFB Parameter 3a" default=(2.71,0.22) endparam param p3b caption="IFB Parameter 3b" default=(-0.26,-2.22) endparam func f1a caption="IFB Function 1a" default=ident() endfunc func f2a caption="IFB Function 2a" default=conj() endfunc func f1b caption="IFB Function 1b" default=ident() endfunc func f2b caption="IFB Function 2b" default=log() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_KhanChoAbbasDevaney(common.ulb:DivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(pixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a)+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) else u=(1-@p1)*pz+@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a)+@p2*(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b) endif return pz endfunc private: complex c default: title="Khan-Cho-Abbas Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-1.25,0) visible=@jm==1 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(0.38,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(0.35,0) endparam param jsa caption="Julia Seed a" default=(0.25,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(1.25,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.25,0) endparam param mpb caption="Modification Parameter b" default=(2,0) endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_GeneralisedAgarwalPhoenix(common.ulb:DivergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) ;Phoenix by Shigehiro Ushiki, via Damien M. Jones (Standard.ufm) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a) b=(1-@p2)*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a)+@p2*(u^@pow1c+u^@pow2c*@pp2c+@pp1c*a) else u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*c+@pp1a*a) b=(1-@p2)*(pz^@pow1b+pz^@pow2b*c+@pp1b*a)+@p2*(u^@pow1c+u^@pow2c*c+@pp1c*a) endif a=pz pz=b return pz endfunc private: complex c complex a complex b default: title="Generalised Agarwal Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.65,0) visible=@jm==1 endparam param p1 caption="GA Parameter 1" default=(0.67,0) endparam param p2 caption="GA Parameter 2" default=(-1.385,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp1c caption="Phoenix Parameter c" default=(-1.55,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(0.56667,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.76667,0) visible=@jm==0 endparam param pp2c caption="Phoenix Parameter 2c" default=(0.36667,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow1c caption="Exponent 1c" default=1 endparam param pow2a caption="Exponent 2a" default=0 endparam param pow2b caption="Exponent 2b" default=0 endparam param pow2c caption="Exponent 2c" default=0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanChoAbbasPhoenix(common.ulb:DivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) ;Phoenix by Shigehiro Ushiki, via Damien M. Jones (Standard.ufm) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a) b=(1-@p2)*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a)+@p2*(u^@pow1b+u^@pow2b*@pp2b+@pp1b*a) else u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*c+@pp1a*a) b=(1-@p2)*(pz^@pow1a+pz^@pow2a*c+@pp1a*a)+@p2*(u^@pow1b+u^@pow2b*c+@pp1b*a) endif a=pz pz=b return pz endfunc private: complex c complex a complex b default: title="Khan-Cho-Abbas Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.175,0) visible=@jm==1 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(-1.5,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(0.55,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.75,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.6,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(0.8,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.67,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=0 endparam param pow2b caption="Exponent 2b" default=0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_KhanChoAbbasMunster(common.ulb:DivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(pixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)) pz=(1-@p2)*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p2*(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)) elseif @jm==1 u=(1-(@p1+3.85))*pz+(@p1+3.85)*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)) pz=(1-@p2)*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p2*(@mp2b*c*u^2*(u-@mp1b)/(1-@mp1b*u)) else u=(1-@p1)*pz+@p1*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c) pz=(1-(@p2+0.375))*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c)+(@p2+0.375)*(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)+c) endif return pz endfunc private: complex c default: title="Khan-Cho-Abbas Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parameter" default=(-0.4,0) visible=@jm!=0 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(-3.65,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(-0.25,0) endparam param mp1a caption="Munster Parameter 1a" default=(4.4,0) endparam param mp1b caption="Munster Parameter 1b" default=(1.5,0) endparam param mp2a caption="Munster Parameter 2a" default=(1,0) endparam param mp2b caption="Munster Parameter 2b" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_GeneralisedAgarwalDevaney(common.ulb:DivergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*(pz^@pow1b+@jsb/(pz-@mpb)^@pow2b)+@p2*(u^@pow1c+@jsc/(u-@mpc)^@pow2c) else u=(1-@p1)*pz+@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*(pz^@pow1b+@ppb*c/(pz-@mpb)^@pow2b)+@p2*(u^@pow1c+@ppc*c/(u-@mpc)^@pow2c) endif return pz endfunc private: complex c default: title="Generalised Agarwal Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.6,0) visible=@jm!=0 endparam param p1 caption="GA Parameter 1" default=(0.6,0) endparam param p2 caption="GA Parameter 2" default=(0.3,0) endparam param jsa caption="Julia Seed a" default=(-0.4,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(1.65,0) visible=@jm==0 endparam param jsc caption="Julia Seed c" default=(0.5,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.25,0) endparam param mpb caption="Modification Parameter b" default=(2.5,0) endparam param mpc caption="Modification Parameter c" default=(1.5,0) endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=1 endparam param pow1c caption="Exponent 1c" default=1 endparam param pow2c caption="Exponent 2c" default=2 endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param ppc caption="Pixel Parameter c" default=(1,0) visible=@jm==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavMunster(common.ulb:DivergentFormula) { ;Yadav iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(25) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(pixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p1*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)) pz=(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)) elseif @jm==1 u=(1-@p1)*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p1*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz)) pz=(@mp2b*c*u^2*(u-@mp1b)/(1-@mp1b*u)) elseif @jm==2 u=(1-@p1)*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c)+@p1*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+c) pz=(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)+c) elseif @jm==3 u=(1-@p1)*(@mp2a*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz))+@p1*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)) pz=(@mp2b*u^2*(u-@mp1b*c)/(1-@mp1b*c*u)) elseif @jm==4 u=(1-@p1)*(@mp2a*c*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz)+c)+@p1*(@mp2b*c*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)+c) pz=(@mp2b*c*u^2*(u-@mp1b*c)/(1-@mp1b*c*u)+c) elseif @jm==5 u=(1-@p1)*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c)+@p1*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+c) pz=(@mp2b*c*u^2*(u-@mp1b)/(1-@mp1b*u)+c) elseif @jm==6 u=(1-@p1)*(@mp2a*c*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz))+@p1*(@mp2b*c*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)) pz=(@mp2b*c*u^2*(u-@mp1b*c)/(1-@mp1b*c*u)) else u=(1-@p1)*(@mp2a*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz)+c)+@p1*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)+c) pz=(@mp2b*u^2*(u-@mp1b*c)/(1-@mp1b*c*u)+c) endif return pz endfunc private: complex c default: title="Yadav Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3""M4""M5""M6""M7" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Yadav Parameter" default=(0.5,0) endparam param mp1a caption="Munster Parameter 1a" default=(3,0) endparam param mp1b caption="Munster Parameter 1b" default=(-3,0) endparam param mp2a caption="Munster Parameter 2a" default=(1,0) endparam param mp2b caption="Munster Parameter 2b" default=(-1.8,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavDevaney(common.ulb:DivergentFormula) { ;Yadav iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(25) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(pixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a)+@p1*(pz^@pow1b+@jsb/(pz-@mpb)^@pow2b) pz=(u^@pow1b+@jsb/(u-@mpb)^@pow2b) else u=(1-@p1)*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a)+@p1*(pz^@pow1b+@ppb*c/(pz-@mpb)^@pow2b) pz=(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b) endif return pz endfunc private: complex c default: title="Yadav Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm!=0 endparam param p1 caption="Yadav Parameter" default=(0.5,0) endparam param jsa caption="Julia Seed a" default=(-1,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(-0.6,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0,0) endparam param mpb caption="Modification Parameter b" default=(0,0) endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=1 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavTripathiBarnsley(common.ulb:DivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) public: complex func Init(complex pz) pz=@sf(pz) fz1=(0,0) fz2=(0,0) fu1=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if real(@f1a(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a(pz))>=0 fz1=(pz-@bp2a)*@bp1a else fz1=(pz+@bp2a)*@bp1a endif if real(@f1b(pz))*imag(@bp3b)+real(@bp3b)*imag(@f1b(pz))>=0 fz2=(pz-@bp2b)*@bp1b else fz2=(pz+@bp2b)*@bp1b endif u=@p1a*pz+@p2a*fz1+@p3a*fz2 if real(@f1a(u))*imag(@bp3a)+real(@bp3a)*imag(@f1a(u))>=0 fu1=(u-@bp2a)*@bp1a else fu1=(u+@bp2a)*@bp1a endif pz=@p1b*pz+@p2b*fz2+@p3b*fu1 return pz endfunc private: complex fz1 complex fz2 complex fu1 default: title="Yadav-Tripathi Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-0.45,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(0.5,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.55,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.3,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(-0.67,-0.07) endparam param bp1a caption="Barnsley Parameter 1a" default=(-0.28,-0.71) endparam param bp1b caption="Barnsley Parameter 1b" default=(2.89,-0.43) endparam param bp2a caption="Barnsley Parameter 2a" default=(0.82,-2.02) endparam param bp2b caption="Barnsley Parameter 2b" default=(3.11,4.55) endparam param bp3a caption="Barnsley Parameter 3a" default=(1,1) endparam param bp3b caption="Barnsley Parameter 3b" default=(1,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavTripathiDevaney(common.ulb:DivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=@p1a*pz+@p2a*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a)+@p3a*(pz^@pow1b+@jsb/(pz-@mpb)^@pow2b) pz=@p1b*pz+@p2b*(pz^@pow1b+@jsb/(pz-@mpb)^@pow2b)+@p3b*(u^@pow1a+@jsa/(u-@mpa)^@pow2a) else u=@p1a*pz+@p2a*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a)+@p3a*(pz^@pow1b+@ppb*c/(pz-@mpb)^@pow2b) pz=@p1b*pz+@p2b*(pz^@pow1b+@ppb*c/(pz-@mpb)^@pow2b)+@p3b*(u^@pow1a+@ppa*c/(u-@mpa)^@pow2a) endif return pz endfunc private: complex c default: title="Yadav-Tripathi Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-0.25,0) visible=@jm!=0 endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(1,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(0.5,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.5,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(0.5,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-1,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.5,0) endparam param jsa caption="Julia Seed a" default=(-0.025,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(1.75,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.25,0) endparam param mpb caption="Modification Parameter b" default=(2,0) endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=1 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=2 endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavTripathiPhoenix(common.ulb:DivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) ;Phoenix by Shigehiro Ushiki, via Damien M. Jones (Standard.ufm) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=@p1a*pz+@p2a*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a)+@p3a*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a) b=@p1b*pz+@p2b*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a)+@p3b*(u^@pow1a+u^@pow2a*@pp2a+@pp1a*a) else u=@p1a*pz+@p2a*(pz^@pow1a+pz^@pow2a*c+@pp1a*a)+@p3a*(pz^@pow1b+pz^@pow2b*c+@pp1b*a) b=@p1b*pz+@p2b*(pz^@pow1b+pz^@pow2b*c+@pp1b*a)+@p3b*(u^@pow1a+u^@pow2a*c+@pp1a*a) endif a=pz pz=b return pz endfunc private: complex c complex a complex b default: title="Yadav-Tripathi Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0.13,0) endparam param sp2 caption="Start Parameter 2" default=(0.5,0) visible=@jm==1 endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(1,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(0.5,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(-0.5,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(0.5,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-1,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.5,0) endparam param pp1a caption="Phoenix Parameter a" default=(-1.3,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(0.56667,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.76667,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=0 endparam param pow2b caption="Exponent 2b" default=0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Stohminy(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp c=@sf(fpixel) else pz=@sf(pz) c=@js endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz pz=@p1*(pz^2+@p2*pz+c)^3/(27*pz^4) return pz endfunc private: complex c default: title="Stohminy" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(1.5,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-1.65,0) visible=@mj==1 endparam param p1 caption="Stohminy Parameter 1" default=(4,0) endparam param p2 caption="Stohminy Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_DasDebataMagnetJ(common.ulb:ConvergentDivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=(1-@p1)*pz+@p1*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2))) pz=(1-@p2)*pz+@p2*(sqr((u^2+@mp2-1)/(2*u+@mp2-2))) return pz endfunc default: title="Das-Debata Magnet J" param p1 caption="Das-Debata Parameter 1" default=(-2,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(-0.1,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000001 endparam complex param p_power visible=false endparam } class OM_DasDebataMagnetM(common.ulb:ConvergentDivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=(1-@p1)*pz+@p1*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2))) pz=(1-@p2)*pz+@p2*(sqr((u^2+@mp2*c-1)/(2*u+@mp2*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Das-Debata Magnet M" param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Das-debata Parameter 1" default=(0.35,0) endparam param p2 caption="Das-debata Parameter 2" default=(1.8,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_YadavPhoenix(common.ulb:DivergentFormula) { ;Yadav iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(25) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a)+@p1*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a) b=(u^@pow1b+u^@pow2b*@pp2b+@pp1b*a) else u=(1-@p1)*(pz^@pow1a+pz^@pow2a*c+@pp1a*a)+@p1*(pz^@pow1b+pz^@pow2b*c+@pp1b*a) b=(u^@pow1b+u^@pow2b*c+@pp1b*a) endif a=pz pz=b return pz endfunc private: complex c complex a complex b default: title="Yadav Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0.13,0) endparam param sp2 caption="Start Parameter 2" default=(0.6,0) visible=@jm==1 endparam param p1 caption="Yadav Parameter" default=(0.45,0) endparam param pp1a caption="Phoenix Parameter a" default=(-1.3,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(-0.45,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(-1.18,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow2a caption="Exponent 2a" default=0 endparam param pow2b caption="Exponent 2b" default=0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavTripathiMunster(common.ulb:DivergentFormula) { ;Yadav-Tripathi iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(24) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=@p1a*pz+@p2a*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p3a*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)) pz=@p1b*pz+@p2b*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz))+@p3b*(@mp2a*u^2*(u-@mp1a)/(1-@mp1a*u)) elseif @jm==1 u=@p1a*pz+@p2a*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz))+@p3a*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz)) pz=@p1b*pz+@p2b*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz))+@p3b*(@mp2a*c*u^2*(u-@mp1a)/(1-@mp1a*u)) elseif @jm==2 u=@p1a*pz+@p2a*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+c)+@p3a*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+c) pz=@p1b*pz+@p2b*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+c)+@p3b*(@mp2a*u^2*(u-@mp1a)/(1-@mp1a*u)+c) else u=@p1a*pz+@p2a*(@mp2a*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz))+@p3a*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)) pz=@p1b*pz+@p2b*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz))+@p3b*(@mp2a*u^2*(u-@mp1a*c)/(1-@mp1a*c*u)) endif return pz endfunc private: complex c default: title="Yadav-Tripathi Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param sp caption="Start Parameter" default=(-0.1,0) visible=@jm!=0 endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(0.3,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-1.25,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.5,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.2,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(0.7,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.5,0) endparam param mp1a caption="Munster Parameter 1a" default=(1.5,0) endparam param mp1b caption="Munster Parameter 1b" default=(1,0) endparam param mp2a caption="Munster Parameter 2a" default=(0.5,0) endparam param mp2b caption="Munster Parameter 2b" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_YadavMagnetJ(common.ulb:ConvergentDivergentFormula) { ;Yadav iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(25) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=(1-@p1)*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p1*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2))) pz=(sqr((u^2+@mp2-1)/(2*u+@mp2-2))) return pz endfunc default: title="Yadav Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Yadav Parameter" default=(-1.25,0) endparam param mp1 caption="Magnet Parameter 1" default=(-2,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=1000.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.00000001 exponential=true endparam complex param p_power visible=false endparam } class OM_DasDebataMagnet2J(common.ulb:ConvergentDivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=(1-@p1)*pz+@p1*(sqr((pz^3+3*(@mp1-1)*pz+(@mp1-1)*(@mp1-2))/(3*pz^2+3*(@mp1-2)*pz+(@mp1-1)*(@mp1-2)+1))) pz=(1-@p2)*pz+@p2*(sqr((u^3+3*(@mp2-1)*u+(@mp2-1)*(@mp2-2))/(3*u^2+3*(@mp2-2)*u+(@mp2-1)*(@mp2-2)+1))) return pz endfunc default: title="Das-Debata Magnet 2 J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Das-Debata Parameter 1" default=(-1.5,0) endparam param p2 caption="Das-Debata Parameter 2" default=(-0.45,0) endparam param mp1 caption="Magnet Parameter 1" default=(-2,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.8,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000008 endparam complex param p_power visible=false endparam } class OM_DasDebataMunster(common.ulb:DivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(pixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(@mp3*pz^2*(pz-@mp1)/(1-@mp1*pz)+@mp5) pz=(1-@p2)*pz+@p2*(@mp4*u^2*(u-@mp2)/(1-@mp2*u)+@mp6) elseif @jm==1 u=(1-@p1)*pz+@p1*(@mp3*c*pz^2*(pz-@mp1)/(1-@mp1*pz)+@mp5) pz=(1-@p2)*pz+@p2*(@mp4*c*u^2*(u-@mp2)/(1-@mp2*u)+@mp6) elseif @jm==2 u=(1-@p1)*pz+@p1*(@mp3*pz^2*(pz-@mp1)/(1-@mp1*pz)+(@mp5+1)*c) pz=(1-@p2)*pz+@p2*(@mp4*u^2*(u-@mp2)/(1-@mp2*u)+(@mp6+1)*c) elseif @jm==3 u=(1-@p1)*pz+@p1*(@mp3*pz^2*(pz-@mp1*c)/(1-@mp1*c*pz)+@mp5) pz=(1-@p2)*pz+@p2*(@mp4*u^2*(u-@mp2*c)/(1-@mp2*c*u)+@mp6) endif return pz endfunc private: complex c default: title="Das-Debata Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@jm!=0 endparam param p1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param p2 caption="Das-Debata Parameter 2" default=(2.4,0) endparam param mp1 caption="Munster Parameter 1" default=(-2.8,0) endparam param mp2 caption="Munster Parameter 2" default=(-3.15,0) endparam param mp3 caption="Munster Parameter 3" default=(1,0) endparam param mp4 caption="Munster Parameter 4" default=(1,0) endparam param mp5 caption="Munster Parameter 5" default=(0,0) endparam param mp6 caption="Munster Parameter 6" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_NewtonM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz elseif @v==1 f=pz^4+@p1*c*pz+@p2*c f1=4*pz^3+@p1*c elseif @v==2 f=pz^5+@p1*c*pz^3+@p2*c f1=5*pz^4+3*@p1*c*pz^2 elseif @v==3 f=pz^5-pz^4+@p1*c*pz^2+@p2*c f1=5*pz^4-4*pz^3+2*@p1*c*pz elseif @v==4 f=pz^5-pz^4-pz^3+@p1*c*pz^2-pz+@p2*c f1=5*pz^4-4*pz^3-3*pz^2+2*@p1*c*pz-1 elseif @v==5 f=pz^3+@p1*c*pz^(-2)+@p2*c f1=3*pz^2-2*c*pz^(-3) elseif @v==6 f=pz^4+@p1*c*pz^(-1)+(@p2-3)*c f1=4*pz^3-@p1*c*pz^(-2) elseif @v==7 f=(pz^7-pz^5)/(pz^4+1)-@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2-@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==8 f=pz^3+(pz-@p1*c)/(1-@p1*c*pz)+(@p2-3)*c f1=3*pz^2+(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==9 f=pz^4-(pz-@p1*c)/(1-@p1*c*pz)-(@p2+1)*c f1=4*pz^3-(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==10 f=((pz-1)/(pz+1))^3+@p1*c*pz^2+@p2*c f1=6*(pz-1)^2/(pz+1)^4+2*@p1*c*pz elseif @v==11 f=((pz-1i)/(pz+1i))^3+@p1*c*pz^2+@p2*c f1=6i*(pz-1i)^2/(pz+1i)^4+2*@p1*c*pz elseif @v==12 f=pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c f1=-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==13 f=pz^5-pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c f1=5*pz^4+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==14 f=pz^3-pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c f1=3*pz^2+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==15 f=pz^3+pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c f1=3*pz^2-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==16 f=pz^3+(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==17 f=pz^3-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==18 f=(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==19 f=pz^5-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=5*pz^4-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==20 f=pz^3+@p1*c*(pz^2/(2*pz-1))^2+@p2*c f1=3*pz^2+@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==21 f=pz^4+@p1*c*(pz^2/(2*pz-1))^2+@p2*c f1=4*pz^3+@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==22 f=pz^4+@p1*c*(pz^5-pz^3)/(pz^2+1)+@p2*c f1=4*pz^3+@p1*c*pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==23 f=pz^3-@p1*c*(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*c f1=3*pz^2-@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==24 f=(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==25 f=(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==26 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==27 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==28 f=pz^3+(pz^2/(2*pz-1))^2+@p1*(c-1)*pz-@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+@p1*(c-1) elseif @v==29 f=pz^3+@p1*(c-1)*pz+@p2*c f1=3*pz^2+@p1*(c-1) elseif @v==30 f=pz^3+pz^(-1)+@p1*(c+1)*pz+@p2*c f1=3*pz^2-pz^(-2)+@p1*(c+1) elseif @v==31 f=((pz^2+1)/(2*pz))^3+@p1*c*pz^2+@p2*c f1=3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)+2*@p1*c*pz elseif @v==32 f=pz^3-((pz^2+1)/(2*pz))^3-(@p1-4)*(1-c)*pz^2+@p2*c f1=3*pz^2-3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)-2*(@p1-4)*(1-c)*pz elseif @v==33 f=((pz^3-1)/(3*pz^2))^3+(@p1+2)*c*pz^2+@p2*c f1=(pz^9-3*pz^3+2)/(9*pz^7)+2*(@p1+2)*c*pz elseif @v==34 f=pz^3+@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2-@p2*c f1=3*pz^2+@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==35 f=pz^3+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c f1=3*pz^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==36 f=(pz^5-pz^3)/(pz^2+1)+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==37 f=(pz^7-pz^5)/(pz^4+1)+@p1*c*pz^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+2*@p1*c*pz else f=@p1*c*(pz^7-pz^5)/(pz^4+1)+((pz^3-1)/(3*pz^2))^3+pz^2+(@p2+3)*c f1=@p1*c*pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+(pz^9-3*pz^3+2)/(9*pz^7)+2*pz endif pz=pz-@p3*f/f1+@p4 return pz endfunc private: complex c default: title="Newton M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param sp caption="Start Parameter" default=(-0.4,0) endparam param p1 caption="Newton Parameter 1" default=(1,0) endparam param p2 caption="Newton Parameter 2" default=(1,0) endparam param p3 caption="Newton Parameter 3" default=(1,0) endparam param p4 caption="Newton Parameter 4" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1e-8 exponential=true endparam } class OM_GeneralisedAgarwalBarnsley(common.ulb:DivergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) { public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if real(@f1a(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a(pz))>=0 fz=(pz-@bp2a)*@bp1a else fz=(pz+@bp2a)*@bp1a endif u=(1-@p1)*pz+@p1*fz if real(@f1b(pz))*imag(@bp3b)+real(@bp3b)*imag(@f1b(pz))>=0 fz2=(pz-@bp2b)*@bp1b else fz2=(pz+@bp2b)*@bp1b endif if real(@f1c(u))*imag(@bp3c)+real(@bp3c)*imag(@f1c(u))>=0 fu=(u-@bp2c)*@bp1c else fu=(u+@bp2c)*@bp1c endif pz=(1-@p2)*fz2+@p2*fu return pz endfunc default: title="Generalised Agarwal Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="GA Parameter 1" default=(-0.4,0) endparam param p2 caption="GA Parameter 2" default=(-0.51,0) endparam param bp1a caption="Barnsley Parameter 1a" default=(3.7,-0.29) endparam param bp1b caption="Barnsley Parameter 1b" default=(0.51,0.86) endparam param bp1c caption="Barnsley Parameter 1c" default=(0.84,0.91) endparam param bp2a caption="Barnsley Parameter 2a" default=(0.02,0.48) endparam param bp2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param bp2c caption="Barnsley Parameter 2c" default=(1.2,-0.23) endparam param bp3a caption="Barnsley Parameter 3a" default=(1,1) endparam param bp3b caption="Barnsley Parameter 3b" default=(0,1) endparam param bp3c caption="Barnsley Parameter 3c" default=(1,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc func f1c caption="Barnsley Function c" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_SchröderM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz f2=6*pz+2*@p1*c elseif @v==1 f=pz^4-@p1*c*pz+@p2*c f1=4*pz^3-@p1*c f2=12*pz^2 elseif @v==2 f=pz^5+(@p1-3)*c*pz^3+@p2*c f1=5*pz^4+3*(@p1-3)*c*pz^2 f2=20*pz^3+6*(@p1-3)*c*pz elseif @v==3 f=pz^5-pz^4+@p1*c*pz^2+@p2*c f1=5*pz^4-4*pz^3+2*@p1*c*pz f2=20*pz^3-12*pz^2+2*@p1*c elseif @v==4 f=pz^5-pz^4-pz^3+(@p1-3)*c*pz^2-pz+@p2*c f1=5*pz^4-4*pz^3-3*pz^2+2*(@p1-3)*c*pz-1 f2=20*pz^3-12*pz^2-6*pz+2*(@p1-3)*c elseif @v==5 f=pz^3+@p1*c*pz^(-2)-(@p2+1)*c f1=3*pz^2-2*@p1*c*pz^(-3) f2=6*pz+6*c*pz^(-4) elseif @v==6 f=pz^4+@p1*c*pz^(-1)+@p2*c f1=4*pz^3-@p1*c*pz^(-2) f2=12*pz^2+2*@p1*c*pz^(-3) elseif @v==7 f=@p1*c*(pz^7-pz^5)/(pz^4+1)+((pz^3-1)/(3*pz^2))^3+pz^2+(@p2+2.5)*c f1=@p1*c*pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=@p1*c*2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3+2*(pz^9+6*pz^3-7)/(9*pz^8)+2 elseif @v==8 f=pz^3+(pz-@p1*c)/(1-@p1*c*pz)+@p2*c f1=3*pz^2+(1-@p1^2*c^2)/(1-@p1*c*pz)^2 f2=6*pz-(2*@p1*c*(@p1^2*c^2-1))/((1-@p1*c*pz)^3) elseif @v==9 f=pz^4-(pz-@p1*c)/(1-@p1*c*pz)-@p2*c f1=4*pz^3-(1-@p1^2*c^2)/(1-@p1*c*pz)^2 f2=12*pz^2+(2*@p1*c*(@p1^2*c^2-1))/((1-@p1*c*pz)^3) elseif @v==10 f=((pz-1)/(pz+1))^3+@p1*c*pz^2+(@p2+2)*c f1=6*(pz-1)^2/(pz+1)^4+2*@p1*c*pz f2=-12*(pz-3)*(pz-1)/(pz+1)^5+2*@p1*c elseif @v==11 f=((pz-1i)/(pz+1i))^3+(@p1+7)*c*pz^2+(@p2-8)*c f1=6i*(pz-1i)^2/(pz+1i)^4+2*(@p1+7)*c*pz f2=-12i*(pz-3i)*(pz-1i)/(pz+1i)^5+2*(@p1+7)*c elseif @v==12 f=pz^2*(pz-2)/(1-2*pz)+(@p1+4)*c*pz^2+@p2*c f1=-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+4)*c*pz f2=2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*(@p1+4)*c elseif @v==13 f=pz^5-pz^2*(pz-2)/(1-2*pz)+(@p1+2)*c*pz^2+@p2*c f1=5*pz^4+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+2)*c*pz f2=20*pz^3-2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*(@p1+2)*c elseif @v==14 f=pz^3-pz^2*(pz-2)/(1-2*pz)+(@p1+3)*c*pz^2+@p2*c f1=3*pz^2+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+3)*c*pz f2=6*pz-2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*(@p1+3)*c elseif @v==15 f=pz^3+pz^2*(pz-2)/(1-2*pz)+(@p1+3)*c*pz^2+@p2*c f1=3*pz^2-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+3)*c*pz f2=6*pz+2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*(@p1+3)*c elseif @v==16 f=pz^3+(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz f2=6*pz+4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p1*c elseif @v==17 f=pz^3-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz f2=6*pz-4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p1*c elseif @v==18 f=(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p1*c elseif @v==19 f=pz^5-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=5*pz^4-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz f2=20*pz^3-4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p1*c elseif @v==20 f=pz^3+(@p1+10)*c*(pz^2/(2*pz-1))^2+@p2*c f1=3*pz^2+(@p1+10)*c*4*(pz-1)*pz^3/(2*pz-1)^3 f2=6*pz+(@p1+10)*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==21 f=pz^4+(@p1+4)*c*(pz^2/(2*pz-1))^2+@p2*c f1=4*pz^3+(@p1+4)*c*4*(pz-1)*pz^3/(2*pz-1)^3 f2=12*pz^2+(@p1+4)*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==22 f=pz^4+@p1*c*(pz^5-pz^3)/(pz^2+1)+@p2*c f1=4*pz^3+@p1*c*pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 f2=12*pz^2+@p1*c*2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3 elseif @v==23 f=pz^3-(@p1-6)*c*(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*c f1=3*pz^2-(@p1-6)*c*4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 f2=6*pz-(@p1-6)*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3 elseif @v==24 f=(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p1*c elseif @v==25 f=(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p1*(1-c) elseif @v==26 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+(@p1-4)*(1-c)*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*(@p1-4)*(1-c)*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*(@p1-4)*(1-c) elseif @v==27 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p1*c elseif @v==28 f=pz^3+(pz^2/(2*pz-1))^2+@p1*(c-1)*pz+@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+@p1*(c-1) f2=6*pz+4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==29 f=pz^3+(@p1-1.395)*(c-1)*pz+@p2*c f1=3*pz^2+(@p1-1.395)*(c-1) f2=6*pz elseif @v==30 f=pz^3+pz^(-1)+(@p1-2.7)*(c+1)*pz-@p2*c f1=3*pz^2-pz^(-2)+(@p1-2.7)*(c+1) f2=6*pz+2*pz^(-3) elseif @v==31 f=((pz^2+1)/(2*pz))^3+(@p1-5.5)*c*pz^2+@p2*c f1=3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)+2*(@p1-5.5)*c*pz f2=3*(pz^6+pz^2+2)/(4*pz^5)+2*(@p1-5.5)*c elseif @v==32 f=pz^3-((pz^2+1)/(2*pz))^3-(@p1-8)*(1-c)*pz^2+@p2*c f1=3*pz^2-3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)-2*(@p1-8)*(1-c)*pz f2=6*pz-3*(pz^6+pz^2+2)/(4*pz^5)-2*(@p1-8)*(1-c) elseif @v==33 f=((pz^3-1)/(3*pz^2))^3+(@p1+2)*c*pz^2+@p2*c f1=(pz^9-3*pz^3+2)/(9*pz^7)+2*(@p1+2)*c*pz f2=2*(pz^9+6*pz^3-7)/(9*pz^8)+2*(@p1+2)*c elseif @v==34 f=pz^3+@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p2*c f1=3*pz^2+@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=6*pz+2*@p1*c*(pz^9+6*pz^3-7)/(9*pz^8)+2 elseif @v==35 f=pz^3+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c f1=3*pz^2+0.75-3/(4*pz^4)+2*@p1*c*pz f2=6*pz+3/pz^5+2*@p1*c elseif @v==36 f=(pz^5-pz^3)/(pz^2+1)+pz-(pz^4-1)/(4*pz^3)-@p1*c*pz^2-@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+0.75-3/(4*pz^4)-2*@p1*c*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+3/pz^5-2*@p1*c elseif @v==37 f=(pz^7-pz^5)/(pz^4+1)+@p1*c*pz^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+2*@p1*c*pz f2=2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3+2*@p1*c else f=(pz^7-pz^5)/(pz^4+1)-(@p1-0.25)*c*((pz^3-1)/(3*pz^2))^3+pz^2-@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2-(@p1-0.25)*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3-(@p1-0.25)*c*2*(pz^9+6*pz^3-7)/(9*pz^8)+2 endif pz=pz-@p3*f*f1/(f1^2-f*f2)+@p4 return pz endfunc private: complex c default: title="Schröder M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param sp caption="Start Parameter" default=(-0.44,0) endparam param p1 caption="Schröder Parameter 1" default=(1,0) endparam param p2 caption="Schröder Parameter 2" default=(1,0) endparam param p3 caption="Schröder Parameter 3" default=(1,0) endparam param p4 caption="Schröder Parameter 4" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1e-20 exponential=true endparam } class OM_Munster29(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @jm==0 pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)*(@p2*pz^2)/(@p2-pz^2)+@js elseif @jm==1 pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)*(@p2*pz^2)/(@p2-pz^2)+c elseif @jm==2 pz=@p3*pz^2*(pz-@p1*c)/(1-@p1*c*pz)*(@p2*c*pz^2)/(@p2*c-pz^2) endif return pz endfunc private: complex c default: title="Munster 29" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2" endparam param sp caption="Start Parsmeter" default=(-3.4,0) visible=@jm!=0 endparam param p1 caption="Munster Parameter 1" default=(4.75,0) endparam param p2 caption="Munster Parameter 2" default=(1.1,0) endparam param p3 caption="Munster Parameter 3" default=(1,0) endparam param js caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarDasDebataMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@as*sqr(pz) z2=z2+@as*sqr(z2) pz=pz+@ar/pz z2=z2+@ar/z2 u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*pz+@p2*(u^@pow2+@pp2*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*z2+@p2*(u2^@pow2+@pp2*c) a=z2 z2=@bp1*@bf(z2/pz)+@bp2+@pp3*c pz=pz^2+@bp3*a^2+@pp4*c return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Das-Debata Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Das-debata Parameter 1" default=(0.5,0) endparam param p2 caption="Das-debata Parameter 2" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param pp1 caption="Pixel Parameter 1" default=(-2,0) endparam param pp2 caption="Pixel Parameter 2" default=(0.5,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pp4 caption="Pixel Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarDasDebataJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*pz+@p2*(u^@pow2+@js2) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*z2+@p2*(u2^@pow2+@js2) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js3 else a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js3 u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*pz+@p2*(u^@pow2+@js2) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*z2+@p2*(u2^@pow2+@js2) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex z2 default: title="Bivar Das-Debata Julia" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1 caption="Das-debata Parameter 1" default=(0.5,0) endparam param p2 caption="Das-debata Parameter 2" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param js1 caption="Julia Seed 1" default=(-1.25,0) endparam param js2 caption="Julia Seed 2" default=(-0.5,0) endparam param js3 caption="Julia Seed 3" default=(-2.37,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BroydenJ(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) pz=@sf(pz) z0=@p1 fz=(0,0) i=0 return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz zold=pz if @v==0 fz=pz^@pow-@c fz0=z0^@pow-@c f1=@pow*pz^(@pow-1) elseif @v==1 fz=pz^@pow-pz^(@pow-1)-pz^(@pow-2)-@c fz0=z0^@pow-z0^(@pow-1)-z0^(@pow-2)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2)-(@pow-2)*pz^(@pow-3) elseif @v==2 fz=pz^@pow+pz^(@pow-1)+pz^(@pow-2)-@c fz0=z0^@pow+z0^(@pow-1)+z0^(@pow-2)-@c f1=@pow*pz^(@pow-1)+(@pow-1)*pz^(@pow-2)+(@pow-2)*pz^(@pow-3) elseif @v==3 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2 elseif @v==4 fz=pz^@pow*(pz-1.5)/(1-1.5*pz)-@c fz0=z0^@pow*(z0-1.5)/(1-1.5*z0)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2/3+13*pz/9-2/3)+-5*pz/9)/(2/3-pz)^2 elseif @v==5 fz=((pz^2-1)/(pz+1))^@pow-@c fz0=((z0^2-1)/(z0+1))^@pow-@c f1=@pow*(pz-1)^(@pow-1) elseif @v==6 fz=((pz^2-1i)/(pz+1i))^@pow-@c fz0=((z0^2-1i)/(z0+1i))^@pow-@c f1=@pow*(2*pz/(pz+1i)-(pz^2-1i)/(pz+1i)^2)*((pz^2-1i)/(pz+1i))^(@pow-1) elseif @v==7 fz=pz^@pow-pz-@c fz0=z0^@pow-z0-@c f1=@pow*pz^(@pow-1)-1 elseif @v==8 fz=pz^@pow-pz^@pow*(pz+0.75)/(1+0.75*pz)-@c fz0=z0^@pow-z0^@pow*(z0+0.75)/(1+0.75*z0)-@c f1=@pow*pz^(@pow-1)-pz^(@pow-1)*(@pow*(4*pz^2/3+25*pz/9+4/3)+7*pz/9)/(pz+4/3)^2 elseif @v==9 fz=pz^@pow-pz^(@pow-1)-@c fz0=z0^@pow-z0^(@pow-1)-@c f1=@pow*pz^(@pow-1)-(@pow-1)*pz^(@pow-2) elseif @v==10 fz=pz^@pow*(pz-0.5)/(1-0.5*pz)+pz^(@pow-1)*(pz-0.5)/(1-0.5*pz)-@c fz0=z0^@pow*(z0-0.5)/(1-0.5*z0)+z0^(@pow-1)*(z0-0.5)/(1-0.5*z0)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)+3*pz)/(2-pz)^2+pz^(@pow-2)*(@pow*(-2*pz^2+5*pz-2)+2*pz^2-2*pz+2)/(2-pz)^2 elseif @v==11 fz=pz^@pow*(pz-2)/(1-2*pz)-pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)-z0^(@pow-1)*(z0-2)/(1-2*z0)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2-pz^(@pow-2)*(@pow*(-2*pz^2+5*pz-2)+2*(pz^2-4*pz+1))/(1-2*pz)^2 else fz=pz^@pow*(pz-2)/(1-2*pz)+pz^(@pow-1)*(pz-2)/(1-2*pz)-@c fz0=z0^@pow*(z0-2)/(1-2*z0)+z0^(@pow-1)*(z0-2)/(1-2*z0)-@c f1=pz^(@pow-1)*(@pow*(-2*pz^2+5*pz-2)-3*pz)/(1-2*pz)^2+pz^(@pow-2)*(@pow*(-2*pz^2+5*pz-2)+2*(pz^2-4*pz+1))/(1-2*pz)^2 endif if i==0 f1=(fz-fz0)/(pz-z0) else f1=f1 endif i=i+1 pz=pz-@p2*fz/f1 z0=zold return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz int i default: title="Broyden J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param p1 caption="Broyden Parameter 1" default=(-0.25,0) endparam param p2 caption="Broyden Parameter 2" default=(1,0) endparam param pow caption="Exponent" default=(3,0) endparam param c caption="Constant" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_BivarDasDebataMandelbrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*pz+@p2*(u^@pow2+@pp2*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*z2+@p2*(u2^@pow2+@pp2*c) else u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*pz+@p2*(u^@pow2+@pp2*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*z2+@p2*(u2^@pow2+@pp2*c) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Das-Debata Mandelbrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.1,0) endparam param p1 caption="Das-debata Parameter 1" default=(-0.15,0) endparam param p2 caption="Das-debata Parameter 2" default=(-0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=2 endparam param pp1 caption="Pixel Parameter 1" default=(2,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarGeneralisedAgarwalMandelhrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow2+@pp2*c)+@p2*(u^@pow3+@pp3*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow2+@pp2*c)+@p2*(u2^@pow3+@pp3*c) else u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow2+@pp2*c)+@p2*(u^@pow3+@pp3*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow2+@pp2*c)+@p2*(u2^@pow3+@pp3*c) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Generalised Agarwal Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="GA Parameter 1" default=(0.5,0) endparam param p2 caption="GA Parameter 2" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.67,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.275,0) endparam param bp3 caption="Bivar Parameter 3" default=(-1.75,0) endparam param pp1 caption="Pixel Parameter 1" default=(-0.175,0) endparam param pp2 caption="Pixel Parameter 2" default=(-2.45,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarGeneralisedAgarwalJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js4 u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*(pz^@pow2+@js2)+@p2*(u^@pow3+@js3) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*(z2^@pow2+@js2)+@p2*(u2^@pow3+@js3) else u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*(pz^@pow2+@js2)+@p2*(u^@pow3+@js3) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*(z2^@pow2+@js2)+@p2*(u2^@pow3+@js3) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js4 endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex z2 default: title="Bivar Generalised Agarwal Julia" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1 caption="GA Parameter 1" default=(0.5,0) endparam param p2 caption="GA Parameter 2" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.67,0) endparam param bp2 caption="Bivar Parameter 2" default=(0.275,0) endparam param bp3 caption="Bivar Parameter 3" default=(-1.75,0) endparam param js1 caption="Julia Seed 1" default=(0.15,0) endparam param js2 caption="Julia Seed 2" default=(-1.6,0) endparam param js3 caption="Julia Seed 3" default=(1.375,0) endparam param js4 caption="Julia Seed 4" default=(0.1,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarYadavTripathiMagnetJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) z2=@sf(pz) pz=@sf(pz) zold=(0,0) z2old=(0,0) return pz return z2 endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) zold=pz z2old=z2 pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^2+@mp3-1)/(2*pz+@mp3-2))+@bp3*sqr((a^2+@mp3-1)/(2*a+@mp3-2)) u=@p1a*pz+@p2a*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p3a*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2)))+@p3b*(sqr((u^2+@mp1-1)/(2*u+@mp1-2))) u2=@p1a*z2+@p2a*(sqr((z2^2+@mp1-1)/(2*z2+@mp1-2)))+@p3a*(sqr((z2^2+@mp2-1)/(2*z2+@mp2-2))) z2=@p1b*z2+@p2b*(sqr((z2^2+@mp2-1)/(2*z2+@mp2-2)))+@p3b*(sqr((u2^2+@mp1-1)/(2*u2+@mp1-2))) else u=@p1a*pz+@p2a*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p3a*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2)))+@p3b*(sqr((u^2+@mp1-1)/(2*u+@mp1-2))) u2=@p1a*z2+@p2a*(sqr((z2^2+@mp1-1)/(2*z2+@mp1-2)))+@p3a*(sqr((z2^2+@mp2-1)/(2*z2+@mp2-2))) z2=@p1b*z2+@p2b*(sqr((z2^2+@mp2-1)/(2*z2+@mp2-2)))+@p3b*(sqr((u2^2+@mp1-1)/(2*u2+@mp1-2))) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^2+@mp3-1)/(2*pz+@mp3-2))+@bp3*sqr((a^2+@mp3-1)/(2*a+@mp3-2)) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_upperbailout || |(pz-zold+z2-z2old)/2|<@p_lowerbailout) return bail endfunc private: complex z2 complex zold complex z2old default: title="Bivar Yadav-Tripathi Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-0.25,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-0.3,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.55,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(0.6,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(1.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(1.35,0) endparam param mp3 caption="Magnet Parameter 3" default=(-2.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.0000001 endparam } class OM_BivarYadavTripathiMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^2+@mp3*c-1)/(2*pz+@mp3*c-2))+@bp3*sqr((a^2+@mp3*c-1)/(2*a+@mp3*c-2)) u=@p1a*pz+@p2a*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p3a*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p3b*(sqr((u^2+@mp1*c-1)/(2*u+@mp1*c-2))) u2=@p1a*z2+@p2a*(sqr((z2^2+@mp1*c-1)/(2*z2+@mp1*c-2)))+@p3a*(sqr((z2^2+@mp2*c-1)/(2*z2+@mp2*c-2))) z2=@p1b*z2+@p2b*(sqr((z2^2+@mp2*c-1)/(2*z2+@mp2*c-2)))+@p3b*(sqr((u2^2+@mp1*c-1)/(2*u2+@mp1*c-2))) else u=@p1a*pz+@p2a*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p3a*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2))) pz=@p1b*pz+@p2b*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p3b*(sqr((u^2+@mp1*c-1)/(2*u+@mp1*c-2))) u2=@p1a*z2+@p2a*(sqr((z2^2+@mp1*c-1)/(2*z2+@mp1*c-2)))+@p3a*(sqr((z2^2+@mp2*c-1)/(2*z2+@mp2*c-2))) z2=@p1b*z2+@p2b*(sqr((z2^2+@mp2*c-1)/(2*z2+@mp2*c-2)))+@p3b*(sqr((u2^2+@mp1*c-1)/(2*u2+@mp1*c-2))) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^2+@mp3*c-1)/(2*pz+@mp3*c-2))+@bp3*sqr((a^2+@mp3*c-1)/(2*a+@mp3*c-2)) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) return |(pz+z2)/2|>@p_upperbailout || |(pz+z2-2)/2|<=@p_lowerbailout endfunc private: complex c complex z2 default: title="Bivar Yadav-Tripathi Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.5,0) endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(0.5,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-0.3,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.55,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.3,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(-0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.2,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.4,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(-1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 exponential=true endparam complex param p_power visible=false endparam } class OM_Lod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) c=@js i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if i==0 pz=@p3*pz^2*(@p1*pz^2+@p2)/(pz^2+@p1)+@p4+@ap1*@sf(pixel) else pz=pz^2+c+@ap2*@sf(pixel) endif i=i+1 return pz endfunc private: complex c int i default: title="Lod" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Lod Parameter 1" default=(1,0) endparam param p2 caption="Lod Parameter 2" default=(1,0) endparam param p3 caption="Lod Parameter 3" default=(1,0) endparam param p4 caption="Lod Parameter 4" default=(0,0) endparam param js caption="Julia Seed" default=(-1.148,-0.268) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ap1 caption="Add Pixel Parameter 1" default=(0,0) endparam param ap2 caption="Add Pixel Parameter 2" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarLod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz z2=@sf(pz) pz=@sf(pz) c=@js i=0 return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c+@ap2*@sf(fpixel) if i==0 pz=@p3*pz^2*(@p1*pz^2+@p2)/(pz^2+@p1)+@p4+@ap1*@sf(fpixel) z2=@p3*z2^2*(@p1*z2^2+@p2)/(z2^2+@p1)+@p4+@ap1*@sf(fpixel) else pz=pz^2+c+@ap3*@sf(fpixel) z2=z2^2+c+@ap3*@sf(fpixel) endif i=i+1 else if i==0 pz=@p3*pz^2*(@p1*pz^2+@p2)/(pz^2+@p1)+@p4+@ap1*@sf(fpixel) z2=@p3*z2^2*(@p1*z2^2+@p2)/(z2^2+@p1)+@p4+@ap1*@sf(fpixel) else pz=pz^2+c z2=z2^2+c endif i=i+1 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c+@ap2*@sf(fpixel) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex z2 complex fpixel complex c int i default: title="Bivar Lod" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1 caption="Lod Parameter 1" default=(0.3,0) endparam param p2 caption="Lod Parameter 2" default=(-1,0) endparam param p3 caption="Lod Parameter 3" default=(1,0) endparam param p4 caption="Lod Parameter 4" default=(0,0) endparam param js caption="Julia Seed" default=(-0.45,0.14) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ap1 caption="Add Pixel Parameter 1" default=(0,0) endparam param ap2 caption="Add Pixel Parameter 2" default=(0,0) endparam param ap3 caption="Add Pixel Parameter 3" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarX61(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz z2=@sf(pz) pz=@sf(pz) c=@js return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c+@ap*@sf(fpixel) pz=@p3*pz^2*(@p1*pz^2+@p2)/(pz^2+@p1)+@p4 z2=@p3*z2^2*(@p1*z2^2+@p2)/(z2^2+@p1)+@p4 else pz=@p3*pz^2*(@p1*pz^2+@p2)/(pz^2+@p1)+@p4 z2=@p3*z2^2*(@p1*z2^2+@p2)/(z2^2+@p1)+@p4 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c+@ap*@sf(fpixel) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 complex fpixel default: title="Bivar X 61" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1 caption="X Parameter 1" default=(0.3,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(0,0) endparam param js caption="Julia Seed" default=(-0.31,0.39) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ap caption="Add Pixel Parameter" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BroydenM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp1 z0=@sp2 f=(0,0) i=0 return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz zold=pz if @v==0 f=pz^3+@p1*c*pz^2+@p2*c fz0=z0^3+@p1*c*z0^2+@p2*c f1=3*pz^2+2*@p1*c*pz elseif @v==1 f=pz^4+@p1*c*pz+@p2*c fz0=z0^4+@p1*c*z0+@p2*c f1=4*pz^3+@p1*c elseif @v==2 f=pz^5+@p1*c*pz^3+@p2*c fz0=z0^5+@p1*c*z0^3+@p2*c f1=5*pz^4+3*@p1*c*pz^2 elseif @v==3 f=pz^5-pz^4+@p1*c*pz^2+@p2*c fz0=z0^5-z0^4+@p1*c*z0^2+@p2*c f1=5*pz^4-4*pz^3+2*@p1*c*pz elseif @v==4 f=pz^5-pz^4-pz^3+@p1*c*pz^2-pz+@p2*c fz0=z0^5-z0^4-z0^3+@p1*c*z0^2-z0+@p2*c f1=5*pz^4-4*pz^3-3*pz^2+2*@p1*c*pz-1 elseif @v==5 f=pz^3+@p1*c*pz^(-2)+@p2*c fz0=z0^3+@p1*c*z0^(-2)+@p2*c f1=3*pz^2-2*c*pz^(-3) elseif @v==6 f=pz^4+@p1*c*pz^(-1)+(@p2-3)*c fz0=z0^4+@p1*c*z0^(-1)+(@p2-3)*c f1=4*pz^3-@p1*c*pz^(-2) elseif @v==7 f=(pz^7-pz^5)/(pz^4+1)-@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p2*c fz0=(z0^7-z0^5)/(z0^4+1)-@p1*c*((z0^3-1)/(3*z0^2))^3+z0^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2-@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==8 f=pz^3+(pz-@p1*c)/(1-@p1*c*pz)+(@p2-3)*c fz0=z0^3+(z0-@p1*c)/(1-@p1*c*z0)+(@p2-3)*c f1=3*pz^2+(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==9 f=pz^4-(pz-@p1*c)/(1-@p1*c*pz)-(@p2+1)*c fz0=z0^4-(z0-@p1*c)/(1-@p1*c*z0)-(@p2+1)*c f1=4*pz^3-(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==10 f=((pz-1)/(pz+1))^3+@p1*c*pz^2+@p2*c fz0=((z0-1)/(z0+1))^3+@p1*c*z0^2+@p2*c f1=6*(pz-1)^2/(pz+1)^4+2*@p1*c*pz elseif @v==11 f=((pz-1i)/(pz+1i))^3+@p1*c*pz^2+@p2*c fz0=((z0-1i)/(z0+1i))^3+@p1*c*z0^2+@p2*c f1=6i*(pz-1i)^2/(pz+1i)^4+2*@p1*c*pz elseif @v==12 f=pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c fz0=z0^2*(z0-2)/(1-2*z0)+@p1*c*z0^2+@p2*c f1=-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==13 f=pz^5-pz^2*(pz-2)/(1-2*pz)+(@p1+3)*c*pz^2+@p2*c fz0=z0^5-z0^2*(z0-2)/(1-2*z0)+(@p1+3)*c*z0^2+@p2*c f1=5*pz^4+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+3)*c*pz elseif @v==14 f=pz^3-pz^2*(pz-2)/(1-2*pz)+(@p1+3)*c*pz^2+@p2*c fz0=z0^3-z0^2*(z0-2)/(1-2*z0)+(@p1+3)*c*z0^2+@p2*c f1=3*pz^2+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*(@p1+3)*c*pz elseif @v==15 f=pz^3+pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+@p2*c fz0=z0^3+z0^2*(z0-2)/(1-2*z0)+@p1*c*z0^2+@p2*c f1=3*pz^2-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==16 f=pz^3+(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c fz0=z0^3+(z0^2/(2*z0-1))^2+@p1*c*z0^2+@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==17 f=pz^3-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c fz0=z0^3-(z0^2/(2*z0-1))^2+@p1*c*z0^2+@p2*c f1=3*pz^2-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==18 f=(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c fz0=(z0^2/(2*z0-1))^2+@p1*c*z0^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==19 f=pz^5-(pz^2/(2*pz-1))^2+(@p1+3)*c*pz^2+@p2*c fz0=z0^5-(z0^2/(2*z0-1))^2+(@p1+3)*c*z0^2+@p2*c f1=5*pz^4-4*(pz-1)*pz^3/(2*pz-1)^3+2*(@p1+3)*c*pz elseif @v==20 f=pz^3+(@p1+3)*c*(pz^2/(2*pz-1))^2+@p2*c fz0=z0^3+(@p1+3)*c*(z0^2/(2*z0-1))^2+@p2*c f1=3*pz^2+(@p1+3)*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==21 f=pz^4+(@p1+7)*c*(pz^2/(2*pz-1))^2+@p2*c fz0=z0^4+(@p1+7)*c*(z0^2/(2*z0-1))^2+@p2*c f1=4*pz^3+(@p1+7)*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==22 f=pz^4+(@p1+3)*c*(pz^5-pz^3)/(pz^2+1)+@p2*c fz0=z0^4+(@p1+3)*c*(z0^5-z0^3)/(z0^2+1)+@p2*c f1=4*pz^3+(@p1+3)*c*pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==23 f=pz^3-(@p1+6)*c*(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*c fz0=z0^3-(@p1+6)*c*(z0^2/(2*z0-1))^2+(z0^5-z0^3)/(z0^2+1)+@p2*c f1=3*pz^2-(@p1+6)*c*4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==24 f=(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c fz0=(z0^5-z0^3)/(z0^2+1)+@p1*c*z0^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==25 f=(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c fz0=(z0^5-z0^3)/(z0^2+1)+@p1*(1-c)*z0^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==26 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c fz0=(z0^2/(2*z0-1))^2+(z0^5-z0^3)/(z0^2+1)+@p1*(1-c)*z0^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==27 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c fz0=(z0^2/(2*z0-1))^2+(z0^5-z0^3)/(z0^2+1)+@p1*c*z0^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==28 f=pz^3+(pz^2/(2*pz-1))^2+@p1*(c-1)*pz-@p2*c fz0=z0^3+(z0^2/(2*z0-1))^2+@p1*(c-1)*z0-@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+@p1*(c-1) elseif @v==29 f=pz^3+@p1*(c-1)*pz+@p2*c fz0=z0^3+@p1*(c-1)*z0+@p2*c f1=3*pz^2+@p1*(c-1) elseif @v==30 f=pz^3+pz^(-1)+@p1*(c+1)*pz+@p2*c fz0=z0^3+z0^(-1)+@p1*(c+1)*z0+@p2*c f1=3*pz^2-pz^(-2)+@p1*(c+1) elseif @v==31 f=((pz^2+1)/(2*pz))^3+@p1*c*pz^2+@p2*c fz0=((z0^2+1)/(2*z0))^3+@p1*c*z0^2+@p2*c f1=3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)+2*@p1*c*pz elseif @v==32 f=pz^3-((pz^2+1)/(2*pz))^3-@p1*(1-c)*pz^2+@p2*c fz0=z0^3-((z0^2+1)/(2*z0))^3-@p1*(1-c)*z0^2+@p2*c f1=3*pz^2-3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)-2*@p1*(1-c)*pz elseif @v==33 f=((pz^3-1)/(3*pz^2))^3+(@p1-0.75)*c*pz^2+@p2*c fz0=((z0^3-1)/(3*z0^2))^3+(@p1-0.75)*c*z0^2+@p2*c f1=(pz^9-3*pz^3+2)/(9*pz^7)+2*(@p1-0.75)*c*pz elseif @v==34 f=pz^3+@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2-@p2*c fz0=z0^3+@p1*c*((z0^3-1)/(3*z0^2))^3+z0^2-@p2*c f1=3*pz^2+@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==35 f=pz^3+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c fz0=z0^3+z0-(z0^4-1)/(4*z0^3)+@p1*c*z0^2+@p2*c f1=3*pz^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==36 f=(pz^5-pz^3)/(pz^2+1)+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c fz0=(z0^5-z0^3)/(z0^2+1)+z0-(z0^4-1)/(4*z0^3)+@p1*c*z0^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==37 f=(pz^7-pz^5)/(pz^4+1)+@p1*c*pz^2+@p2*c fz0=(z0^7-z0^5)/(z0^4+1)+@p1*c*z0^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+2*@p1*c*pz else f=@p1*c*(pz^7-pz^5)/(pz^4+1)+((pz^3-1)/(3*pz^2))^3+pz^2+(@p2+3)*c fz0=@p1*c*(z0^7-z0^5)/(z0^4+1)+((z0^3-1)/(3*z0^2))^3+z0^2+(@p2+3)*c f1=@p1*c*pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+(pz^9-3*pz^3+2)/(9*pz^7)+2*pz endif if i==0 f1=(f-fz0)/(pz-z0) else f1=f1 endif i=i+1 if @version==100 pz=pz-@p2*f/f1 else pz=pz-@p3*f/f1 endif z0=zold return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|f|<@p_bailout) return bail endfunc private: complex z0 complex f complex c int i default: title="Broyden M" int param version caption="Version" default=101 visible=@version<101 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param sp1 caption="Start Parameter 1" default=(1.5,0) endparam param sp2 caption="Start Parameter 2" default=(1,0) endparam param p1 caption="Broyden Parameter 1" default=(1,0) endparam param p2 caption="Broyden Parameter 2" default=(1,0) endparam param p3 caption="Broyden Parameter 3" default=(1,0) endparam func sf caption="Start Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_BivarGeneralisedAgarwalMandelhrot2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 a=pz b=z2 u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow2+@pp2*c)+@p2*(u^@pow3+@pp3*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow2+@pp2*c)+@p2*(u2^@pow3+@pp3*c) d=z2 z2=@bp1*@bf(b/a)+@bp2 pz=pz+@bp3*d return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Generalised Agarwal Mandelbrot 2" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="GA Parameter 1" default=(0.35,0) endparam param p2 caption="GA Parameter 2" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.75,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(-1.67,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Munster30(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==1 pz=@sp c=@sf(fpixel) else pz=@sf(pz) c=@js endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz if @jm==0 pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz)*@p3*pz/(@p3-pz)/@p4+@js else pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz)*@p3*pz/(@p3-pz)/@p4+c endif return pz endfunc private: complex c default: title="Munster 30" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@jm==1 endparam param p1 caption="Munster Parameter 1" default=(1,0) endparam param p2 caption="Munster Parameter 2" default=(2.6,0) endparam param p3 caption="Munster Parameter 3" default=(1,0) endparam param p4 caption="Munster Parameter 4" default=(1,0) endparam param js caption="Julia Seed" default=(0,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarDasDebataDevaney2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 z2=@sf(pz) pz=@sf(pz) else pz=@sp z2=@sp endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 if @jm==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@jsc/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@jsc/(a-@mpc)^@pow2c) u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) else a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@ppc*c/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@ppc*c/(a-@mpc)^@pow2c) u=(1-@p1)*pz+@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b) endif else if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@jsc/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@jsc/(a-@mpc)^@pow2c) else u=(1-@p1)*pz+@p1*(pz^@pow1a++@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b++@ppb*c/(u-@mpb)^@pow2b) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@ppc*c/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@ppc*c/(a-@mpc)^@pow2c) endif endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Das-Debata Devaney 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-0.01,0) visible=@jm!=0 endparam param p1 caption="Das-Debata Parameter 1" default=(0.4,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param jsa caption="Julia Seed a" default=(0.6,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(-0.8,0) visible=@jm==0 endparam param jsc caption="Julia Seed c" default=(2.25,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.5,0) endparam param mpb caption="Modification Parameter b" default=(-1.3,0) endparam param mpc caption="Modification Parameter c" default=(2.05,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.4,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.9,0) endparam param ppa caption="Pixel Parameter a" default=(0.75,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(0.75,0) visible=@jm==1 endparam param ppc caption="Pixel Parameter c" default=(1,0) visible=@jm==1 endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=1 endparam param pow1c caption="Exponent 1c" default=2 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=2 endparam param pow2c caption="Exponent 2c" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarDasDebataDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @jm==0 z2=@sf(pz) pz=@sf(pz) else pz=@sp z2=@sp endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 if @jm==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@jsc/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@jsc/(a-@mpc)^@pow2c) u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) u2=(1-@p1)*z2+@p1*(z2^@pow1a+@jsa/(z2-@mpa)^@pow2a) z2=(1-@p2)*z2+@p2*(u2^@pow1b+@jsb/(u2-@mpb)^@pow2b) else a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@ppc*c/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@ppc*c/(a-@mpc)^@pow2c) u=(1-@p1)*pz+@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b) u2=(1-@p1)*z2+@p1*(z2^@pow1a+@ppa*c/(z2-@mpa)^@pow2a) z2=(1-@p2)*z2+@p2*(u2^@pow1b+@ppb*c/(u2-@mpb)^@pow2b) endif else if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b+@jsb/(u-@mpb)^@pow2b) u2=(1-@p1)*z2+@p1*(z2^@pow1a+@jsa/(z2-@mpa)^@pow2a) z2=(1-@p2)*z2+@p2*(u2^@pow1b+@jsb/(u2-@mpb)^@pow2b) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@jsc/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@jsc/(a-@mpc)^@pow2c) else u=(1-@p1)*pz+@p1*(pz^@pow1a++@ppa*c/(pz-@mpa)^@pow2a) pz=(1-@p2)*pz+@p2*(u^@pow1b++@ppb*c/(u-@mpb)^@pow2b) u2=(1-@p1)*z2+@p1*(z2^@pow1a+@ppa*c/(z2-@mpa)^@pow2a) z2=(1-@p2)*z2+@p2*(u2^@pow1b+@ppb*c/(u2-@mpb)^@pow2b) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=(pz^@pow1c+@ppc*c/(pz-@mpc)^@pow2c)+@bp3*(a^@pow1c+@ppc*c/(a-@mpc)^@pow2c) endif endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Das-Debata Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-0.01,0) visible=@jm!=0 endparam param p1 caption="Das-Debata Parameter 1" default=(0.4,0) endparam param p2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param jsa caption="Julia Seed a" default=(0.2,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(0.25,0) visible=@jm==0 endparam param jsc caption="Julia Seed c" default=(2.25,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(1.15,0) endparam param mpb caption="Modification Parameter b" default=(-1.3,0) endparam param mpc caption="Modification Parameter c" default=(2.05,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.4,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.9,0) endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(2,0) visible=@jm==1 endparam param ppc caption="Pixel Parameter c" default=(-0.65,0) visible=@jm==1 endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=1 endparam param pow1c caption="Exponent 1c" default=3 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=2 endparam param pow2c caption="Exponent 2c" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarGeneralisedAgarwalMandelhrot3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 a=pz b=z2 u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow2+@pp2*c)+@p2*(u^@pow3+@pp3*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow2+@pp2*c)+@p2*(u2^@pow3+@pp3*c) z2=z2+a pz=pz+b return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Generalised Agarwal Mandelhrot 3" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="GA Parameter 1" default=(0.5,0) endparam param p2 caption="GA Parameter 2" default=(0.5,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(0.5,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=3 endparam param pow3 caption="Exponent 3" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanBarnsley(common.ulb:DivergentFormula) { ;Khan iteration from ;https://www.utgjiu.ro/math/sma/v06/p08.pdf ;(1.5) public: complex func Init(complex pz) pz=@sf(pz) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz if real(@f1a(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a(pz))>=0 fz=(pz-@bp2a)*@bp1a else fz=(pz+@bp2a)*@bp1a endif u=@p1*fz+@p2*pz if real(@f1b(u))*imag(@bp3b)+real(@bp3b)*imag(@f1b(u))>=0 fu=(u-@bp2b)*@bp1b else fu=(u+@bp2b)*@bp1b endif v=@p3*fu+@p4*pz pz=@p3*pz+(1-@p3)*v return pz endfunc private: complex fz complex fu default: title="Khan Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Khan Parameter 1" default=(-0.75,0) endparam param p2 caption="Khan Parameter 2" default=(-0.5,0) endparam param p3 caption="Khan Parameter 3" default=(1.1,0) endparam param p4 caption="Khan Parameter 4" default=(2.6,0) endparam param bp1a caption="Barnsley Parameter 1a" default=(3.7,-0.29) endparam param bp1b caption="Barnsley Parameter 1b" default=(0.51,0.86) endparam param bp2a caption="Barnsley Parameter 2a" default=(0.02,0.48) endparam param bp2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param bp3a caption="Barnsley Parameter 3a" default=(1,1) endparam param bp3b caption="Barnsley Parameter 3b" default=(0,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanDevaney(common.ulb:DivergentFormula) { ;Khan iteration from ;https://www.utgjiu.ro/math/sma/v06/p08.pdf ;(1.5) public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) else pz=@sp endif c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz if @jm==0 u=@p1*(pz^@pow1a+@jsa/(pz-@mpa)^@pow2a)+@p2*pz v=@p3*(u^@pow1b+@jsb/(u-@mpb)^@pow2b)+@p4*pz pz=@p3*pz+(1-@p3)*v else u=@p1*(pz^@pow1a+@ppa*c/(pz-@mpa)^@pow2a)+@p2*pz v=@p3*(u^@pow1b+@ppb*c/(u-@mpb)^@pow2b)+@p4*pz pz=@p3*pz+(1-@p3)*v endif return pz endfunc private: complex c default: title="Khan Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm!=0 endparam param p1 caption="Khan Parameter 1" default=(-0.45,0) endparam param p2 caption="Khan Parameter 2" default=(2.2,0) endparam param p3 caption="Khan Parameter 3" default=(1.35,0) endparam param p4 caption="Khan Parameter 4" default=(4.35,0) endparam param jsa caption="Julia Seed a" default=(2,0) visible=@jm==0 endparam param jsb caption="Julia Seed b" default=(1.75,0) visible=@jm==0 endparam param mpa caption="Modification Parameter a" default=(0.25,0) endparam param mpb caption="Modification Parameter b" default=(2,0) endparam param pow1a caption="Exponent 1a" default=2 endparam param pow1b caption="Exponent 1b" default=1 endparam param pow2a caption="Exponent 2a" default=2 endparam param pow2b caption="Exponent 2b" default=2 endparam param ppa caption="Pixel Parameter a" default=(1,0) visible=@jm==1 endparam param ppb caption="Pixel Parameter b" default=(1,0) visible=@jm==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarYadavTripathiMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c u=@p1a*pz+@p2a*(pz^@pow1+@pp1*c)+@p3a*(pz^@pow2+@pp2*c) pz=@p1b*pz+@p2b*(pz^@pow2+@pp2*c)+@p3b*(u^@pow1+@pp1*c) u2=@p1a*z2+@p2a*(z2^@pow1+@pp1*c)+@p3a*(z2^@pow2+@pp2*c) z2=@p1b*z2+@p2b*(z2^@pow2+@pp2*c)+@p3b*(u2^@pow1+@pp1*c) else u=@p1a*pz+@p2a*(pz^@pow1+@pp1*c)+@p3a*(pz^@pow2+@pp2*c) pz=@p1b*pz+@p2b*(pz^@pow2+@pp2*c)+@p3b*(u^@pow1+@pp1*c) u2=@p1a*z2+@p2a*(z2^@pow1+@pp1*c)+@p3a*(z2^@pow2+@pp2*c) z2=@p1b*z2+@p2b*(z2^@pow2+@pp2*c)+@p3b*(u2^@pow1+@pp1*c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex c complex z2 default: title="Bivar Yadav-Tripathi Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@sv!=3 endparam param v caption="Loop Variant" enum="1""2" endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-0.635,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-1.25,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.5,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(-0.2,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(0.7,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(-0.5,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarYadavMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) if @v==0 pz=@sp else pz=@sp+1 endif elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 u=(1-@p1)*(pz^@pow1+@pp1*c)+@p1*(pz^@pow2+@pp2*c) pz=(u^@pow2+@pp2*c) u2=(1-@p1)*(z2^@pow1+@pp1*c)+@p1*(z2^@pow2+@pp2*c) z2=(u2^@pow2+@pp2*c) a=z2 z2=@bp1*@bf(z2/pz)/2+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*@bf(z2/pz)/2+@bp2 pz=@bp3*(pz+a)+c u=(1-@p1)*(pz^@pow1+@pp1*c)+@p1*(pz^@pow2+@pp2*c) pz=(u^@pow2+@pp2*c) u2=(1-@p1)*(z2^@pow1+@pp1*c)+@p1*(z2^@pow2+@pp2*c) z2=(u2^@pow2+@pp2*c) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex c complex z2 default: title="Bivar Yadav Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.01,0) visible=@sv!=3 endparam param p1 caption="Yadav Parameter" default=(0.4,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(0.9,0) endparam param pp2 caption="Pixel Parameter 2" default=(0.85,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Munster31(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @jm==0 pz=@mp3*pz^2*(@mp1*pz^2+@mp2)/(pz^2+@mp1)+@mp4 elseif @jm==1 pz=pz^2*c*(@mp1*pz^2+@mp2)/(pz^2+@mp1)+(@mp3-1) elseif @jm==2 pz=@mp3*pz^2*(@mp1*pz^2+@mp2)/(pz^2+@mp1)+c elseif @jm==3 pz=@mp3*pz^2*(@mp1*c*pz^2+@mp2)/(pz^2+@mp1*c)+(@mp4+1)*c else pz=@mp3*pz^2*(@mp1*pz^2+c)/(pz^2+@mp1)+(@mp2-1) endif return pz endfunc private: complex c default: title="Munster 31" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3""M4" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm!=0 endparam param mp1 caption="Munster Parameter 1" default=(0.65,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param mp3 caption="Munster Parameter 3" default=(1,0) endparam param mp4 caption="Munster Parameter 4" default=(0,0) visible=(@jm==0 || @jm==3) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_OstrowskiMultipointM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @v==0 f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz elseif @v==1 f=pz^4+@p1*c*pz+@p2*c f1=4*pz^3+@p1*c elseif @v==2 f=pz^5+@p1*c*pz^3+@p2*c f1=5*pz^4+3*@p1*c*pz^2 elseif @v==3 f=pz^5-pz^4+@p1*c*pz^2+@p2*c f1=5*pz^4-4*pz^3+2*@p1*c*pz elseif @v==4 f=pz^5-pz^4-pz^3+@p1*c*pz^2-pz+@p2*c f1=5*pz^4-4*pz^3-3*pz^2+2*@p1*c*pz-1 elseif @v==5 f=pz^3+@p1*c*pz^(-2)+@p2*c f1=3*pz^2-2*c*pz^(-3) elseif @v==6 f=pz^4+@p1*c*pz^(-1)+@p2*c f1=4*pz^3-@p1*c*pz^(-2) elseif @v==7 f=(pz^7-pz^5)/(pz^4+1)-@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2-@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==8 f=pz^3+(pz-@p1*c)/(1-@p1*c*pz)+(@p2+2)*c f1=3*pz^2+(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==9 f=pz^4-(pz-@p1*c)/(1-@p1*c*pz)+@p2*c f1=4*pz^3-(1-@p1^2*c^2)/(1-@p1*c*pz)^2 elseif @v==10 f=((pz-1)/(pz+1))^3+@p1*c*pz^2+@p2*c f1=6*(pz-1)^2/(pz+1)^4+2*@p1*c*pz elseif @v==11 f=((pz-1i)/(pz+1i))^3+@p1*c*pz^2+@p2*c f1=6i*(pz-1i)^2/(pz+1i)^4+2*@p1*c*pz elseif @v==12 f=pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+(@p2+3)*c f1=-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==13 f=pz^5-pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+(@p2+3)*c f1=5*pz^4+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==14 f=pz^3-pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+(@p2+3)*c f1=3*pz^2+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==15 f=pz^3+pz^2*(pz-2)/(1-2*pz)+@p1*c*pz^2+(@p2+3)*c f1=3*pz^2-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p1*c*pz elseif @v==16 f=pz^3+(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==17 f=pz^3-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=3*pz^2-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==18 f=(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==19 f=pz^5-(pz^2/(2*pz-1))^2+@p1*c*pz^2+@p2*c f1=5*pz^4-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p1*c*pz elseif @v==20 f=pz^3+@p1*c*(pz^2/(2*pz-1))^2+@p2*c f1=3*pz^2+@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==21 f=pz^4+@p1*c*(pz^2/(2*pz-1))^2+@p2*c f1=4*pz^3+@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3 elseif @v==22 f=pz^4+@p1*c*(pz^5-pz^3)/(pz^2+1)+@p2*c f1=4*pz^3+@p1*c*pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==23 f=pz^3-@p1*c*(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*c f1=3*pz^2-@p1*c*4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 elseif @v==24 f=(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==25 f=(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==26 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*(1-c)*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*(1-c)*pz elseif @v==27 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p1*c*pz^2+@p2*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p1*c*pz elseif @v==28 f=pz^3+(pz^2/(2*pz-1))^2+@p1*(c-1)*pz-@p2*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+@p1*(c-1) elseif @v==29 f=pz^3+@p1*(c-1)*pz+@p2*c f1=3*pz^2+@p1*(c-1) elseif @v==30 f=pz^3+pz^(-1)+@p1*(c+1)*pz+@p2*c f1=3*pz^2-pz^(-2)+@p1*(c+1) elseif @v==31 f=((pz^2+1)/(2*pz))^3+@p1*c*pz^2+@p2*c f1=3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)+2*@p1*c*pz elseif @v==32 f=pz^3-((pz^2+1)/(2*pz))^3-@p1*(1-c)*pz^2+@p2*c f1=3*pz^2-3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)-2*@p1*(1-c)*pz elseif @v==33 f=((pz^3-1)/(3*pz^2))^3+(@p1+2)*c*pz^2+@p2*c f1=(pz^9-3*pz^3+2)/(9*pz^7)+2*(@p1+2)*c*pz elseif @v==34 f=pz^3+@p1*c*((pz^3-1)/(3*pz^2))^3+pz^2+(@p2-4)*c f1=3*pz^2+@p1*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz elseif @v==35 f=pz^3+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c f1=3*pz^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==36 f=(pz^5-pz^3)/(pz^2+1)+pz-(pz^4-1)/(4*pz^3)+@p1*c*pz^2+@p2*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+0.75-3/(4*pz^4)+2*@p1*c*pz elseif @v==37 f=(pz^7-pz^5)/(pz^4+1)+@p1*c*pz^2+@p2*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+2*@p1*c*pz else f=@p1*c*(pz^7-pz^5)/(pz^4+1)+((pz^3-1)/(3*pz^2))^3+pz^2+(@p2+2)*c f1=@p1*c*pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+(pz^9-3*pz^3+2)/(9*pz^7)+2*pz endif a=pz-@p4*f/f1 if @v==0 fa=a^3+@p1*c*a^2+@p2*c elseif @v==1 fa=a^4+@p1*c*a+@p2*c elseif @v==2 fa=a^5+@p1*c*a^3+@p2*c elseif @v==3 fa=a^5-a^4+@p1*c*a^2+@p2*c elseif @v==4 fa=a^5-a^4-a^3+@p1*c*a^2-a+@p2*c elseif @v==5 fa=a^3+@p1*c*a^(-2)+@p2*c elseif @v==6 fa=a^4+@p1*c*a^(-1)+@p2*c elseif @v==7 fa=(a^7-a^5)/(a^4+1)-@p1*c*((a^3-1)/(3*a^2))^3+a^2+@p2*c elseif @v==8 fa=a^3+(a-@p1*c)/(1-@p1*c*a)+(@p2+2)*c elseif @v==9 fa=a^4-(a-@p1*c)/(1-@p1*c*a)+@p2*c elseif @v==10 fa=((a-1)/(a+1))^3+@p1*c*a^2+@p2*c elseif @v==11 fa=((a-1i)/(a+1i))^3+@p1*c*a^2+@p2*c elseif @v==12 fa=a^2*(a-2)/(1-2*a)+@p1*c*a^2+(@p2+3)*c elseif @v==13 fa=a^5-a^2*(a-2)/(1-2*a)+@p1*c*a^2+(@p2+3)*c elseif @v==14 fa=a^3-a^2*(a-2)/(1-2*a)+@p1*c*a^2+(@p2+3)*c elseif @v==15 fa=a^3+a^2*(a-2)/(1-2*a)+@p1*c*a^2+(@p2+3)*c elseif @v==16 fa=a^3+(a^2/(2*a-1))^2+@p1*c*a^2+@p2*c elseif @v==17 fa=a^3-(a^2/(2*a-1))^2+@p1*c*a^2+@p2*c elseif @v==18 fa=(a^2/(2*a-1))^2+@p1*c*a^2+@p2*c elseif @v==19 fa=a^5-(a^2/(2*a-1))^2+@p1*c*a^2+@p2*c elseif @v==20 fa=a^3+@p1*c*(a^2/(2*a-1))^2+@p2*c elseif @v==21 fa=a^4+@p1*c*(a^2/(2*a-1))^2+@p2*c elseif @v==22 fa=a^4+@p1*c*(a^5-a^3)/(a^2+1)+@p2*c elseif @v==23 fa=a^3-@p1*c*(a^2/(2*a-1))^2+(a^5-a^3)/(a^2+1)+@p2*c elseif @v==24 fa=(a^5-a^3)/(a^2+1)+@p1*c*a^2+@p2*c elseif @v==25 fa=(a^5-a^3)/(a^2+1)+@p1*(1-c)*a^2+@p2*c elseif @v==26 fa=(a^2/(2*a-1))^2+(a^5-a^3)/(a^2+1)+@p1*(1-c)*a^2+@p2*c elseif @v==27 fa=(a^2/(2*a-1))^2+(a^5-a^3)/(a^2+1)+@p1*c*a^2+@p2*c elseif @v==28 fa=a^3+(a^2/(2*a-1))^2+@p1*(c-1)*a-@p2*c elseif @v==29 fa=a^3+@p1*(c-1)*a+@p2*c elseif @v==30 fa=a^3+a^(-1)+@p1*(c+1)*a+@p2*c elseif @v==31 fa=((a^2+1)/(2*a))^3+@p1*c*a^2+@p2*c elseif @v==32 fa=a^3-((a^2+1)/(2*a))^3-@p1*(1-c)*a^2+@p2*c elseif @v==33 fa=((a^3-1)/(3*a^2))^3+(@p1+2)*c*a^2+@p2*c elseif @v==34 fa=a^3+@p1*c*((a^3-1)/(3*a^2))^3+a^2+(@p2-4)*c elseif @v==35 fa=a^3+a-(a^4-1)/(4*a^3)+@p1*c*a^2+@p2*c elseif @v==36 fa=(a^5-a^3)/(a^2+1)+a-(a^4-1)/(4*a^3)+@p1*c*a^2+@p2*c elseif @v==37 fa=(a^7-a^5)/(a^4+1)+@p1*c*a^2+@p2*c else fa=@p1*c*(a^7-a^5)/(a^4+1)+((a^3-1)/(3*a^2))^3+a^2+(@p2+2)*c endif pz=a-@p3*f*fa/(f1*(f-2*fa))+@p5 return pz endfunc private: complex c default: title="Ostrowski Multipoint M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param sp caption="Start Parameter" default=(0.3,0) endparam param p1 caption="OMP Parameter 1" default=(1,0) endparam param p2 caption="OMP Parameter 2" default=(1,0) endparam param p3 caption="OMP Parameter 3" default=(1,0) endparam param p4 caption="OMP Parameter 4" default=(1,0) endparam param p5 caption="OMP Parameter 5" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1e-6 exponential=true endparam } class OM_BivarKhanChoAbbasMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow1+@pp1*c)+@p2*(u^@pow2+@pp2*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow1+@pp1*c)+@p2*(u2^@pow2+@pp2*c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c u=(1-@p1)*pz+@p1*(pz^@pow1+@pp1*c) pz=(1-@p2)*(pz^@pow1+@pp1*c)+@p2*(u^@pow2+@pp2*c) u2=(1-@p1)*z2+@p1*(z2^@pow1+@pp1*c) z2=(1-@p2)*(z2^@pow1+@pp1*c)+@p2*(u2^@pow2+@pp2*c) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex c complex z2 default: title="Bivar Khan-Cho-Abbas Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.5,0) endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(1.5,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=1 endparam param pp1 caption="Pixel Parameter 1" default=(0.5,0) endparam param pp2 caption="Pixel Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarKhanChoAbbasJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 z2=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sp endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*(pz^@pow1+@js1)+@p2*(u^@pow2+@js2) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*(z2^@pow1+@js1)+@p2*(u2^@pow2++@js2) a=z2 z2=@bp1*@js3*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+@js3 else a=z2 z2=@bp1*(@js3+1.92)*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+(@js3+1.92) u=(1-@p1)*pz+@p1*(pz^@pow1+(@js1-1.05)) pz=(1-@p2)*(pz^@pow1+(@js1-1.05))+@p2*(u^@pow2++@js2) u2=(1-@p1)*z2+@p1*(z2^@pow1+(@js1-1.05)) z2=(1-@p2)*(z2^@pow1+(@js1-1.05))+@p2*(u2^@pow2++@js2) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 default: title="Bivar Khan-Cho-Abbas Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param v caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@sv!=0 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(1.5,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=1 endparam param js1 caption="Julia Seed 1" default=(-1.1,0) endparam param js2 caption="Julia Seed 2" default=(-0.5,0) endparam param js3 caption="Julia Seed 3" default=(-1.25,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_RajputTenguriaPandeyPhoenix(common.ulb:DivergentFormula) { ;Rajput-Tenguria-Pandey iteration from ;https://www.arpapress.com/Volumes/Vol24Issue1/IJRRAS_24_1_01.pdf ;(8) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz return a endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @jm==0 u=@p1*pz+@p2*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a)+@p3*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a)+@p4*(pz^@pow1c+pz^@pow2c*@pp2c+@pp1c*a) b=@p1*pz+@p2*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a)+@p3*(pz^@pow1c+pz^@pow2c*@pp2c+@pp1c*a)+@p4*(u^@pow1a+u^@pow2a*@pp2a+@pp1a*a) else u=@p1*pz+@p2*(pz^@pow1a+pz^@pow2a*@pp2a*c+@pp1a*a)+@p3*(pz^@pow1b+pz^@pow2b*@pp2b*c+@pp1b*a)+@p4*(pz^@pow1c+pz^@pow2c*@pp2c*c+@pp1c*a) b=@p1*pz+@p2*(pz^@pow1b+pz^@pow2b*@pp2b*c+@pp1b*a)+@p3*(pz^@pow1c+pz^@pow2c*@pp2c*c+@pp1c*a)+@p4*(u^@pow1a+u^@pow2a*@pp2a*c+@pp1a*a) endif a=pz pz=b return pz return a endfunc private: complex c complex a complex b default: title="Rajput-Tenguria-Pandey Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.5,0) visible=@jm==1 endparam param p1 caption="RTP Parameter 1" default=(-0.875,0) endparam param p2 caption="RTP Parameter 2" default=(-0.5,0) endparam param p3 caption="RTP Parameter 3" default=(0.65,0) endparam param p4 caption="RTP Parameter 4" default=(0.5,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp1c caption="Phoenix Parameter c" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(1,0) endparam param pp2b caption="Phoenix Parameter 2b" default=(1,0) endparam param pp2c caption="Phoenix Parameter 2c" default=(1,0) endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow1c caption="Exponent 1c" default=2 endparam param pow2a caption="Exponent 2a" default=1 endparam param pow2b caption="Exponent 2b" default=1 endparam param pow2c caption="Exponent 2c" default=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarMandelbrot5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=pz^@pow+@pp1*c z2=z2^@pow+@pp2*c a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=pz^@pow+@pp1*c z2=z2^@pow+@pp2*c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Mandelbrot 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.1,0) endparam param pow caption="Exponent" default=2 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarMandelbrot6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=pz^@pow+@p1*c/(@p2*c-1) z2=z2^@pow+@p1*c/(@p2*c-1) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=pz^@pow+@p1*c/(@p2*c-1) z2=z2^@pow+@p1*c/(@p2*c-1) elseif @v==2 pz=pz^@pow+@p1*c/(@p2*c-1) z2=z2^@pow+@p1*c/(@p2*c-1) a=z2 z2=@bp1*(c/(c-1))*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c/(c-1) else a=z2 z2=@bp1*(c/(c-1))*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c/(c-1) pz=pz^@pow+@p1*c/(@p2*c-1) z2=z2^@pow+@p1*c/(@p2*c-1) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Mandelbrot 6" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=3 endparam param pow caption="Exponent" default=2 endparam param p1 caption="Pixel Parameter 1" default=(-0.425,0) endparam param p2 caption="Pixel Parameter 2" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarRajputTenguriaPandeyMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c u=@p1*pz+@p2*(pz^@pow1+@pp1*c)+@p3*(pz^@pow2+@pp2*c)+@p4*(pz^@pow3+@pp3*c) pz=@p1*pz+@p2*(pz^@pow2+@pp2*c)+@p3*(pz^@pow3+@pp3*c)+@p4*(u^@pow1+@pp1*c) u2=@p1*z2+@p2*(z2^@pow1+@pp1*c)+@p3*(z2^@pow2+@pp2*c)+@p4*(z2^@pow3+@pp3*c) z2=@p1*z2+@p2*(z2^@pow2+@pp2*c)+@p3*(z2^@pow3+@pp3*c)+@p4*(u2^@pow1+@pp1*c) else u=@p1*pz+@p2*(pz^@pow1+@pp1*c)+@p3*(pz^@pow2+@pp2*c)+@p4*(pz^@pow3+@pp3*c) pz=@p1*pz+@p2*(pz^@pow2+@pp2*c)+@p3*(pz^@pow3+@pp3*c)+@p4*(u^@pow1+@pp1*c) u2=@p1*z2+@p2*(z2^@pow1+@pp1*c)+@p3*(z2^@pow2+@pp2*c)+@p4*(z2^@pow3+@pp3*c) z2=@p1*z2+@p2*(z2^@pow2+@pp2*c)+@p3*(z2^@pow3+@pp3*c)+@p4*(u2^@pow1+@pp1*c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex c complex z2 default: title="Bivar Rajput-Tenguria-Pandey Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@sv!=3 endparam param p1 caption="RTP Parameter 1" default=(-1.1,0) endparam param p2 caption="RTP Parameter 2" default=(-0.5,0) endparam param p3 caption="RTP Parameter 3" default=(0.25,0) endparam param p4 caption="RTP Parameter 4" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarRajputTenguriaPandeyJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 z2=@sf(pz) pz=@sf(pz) elseif @sv==1 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sp endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@bp1*@js4*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+@js4 u=@p1*pz+@p2*(pz^@pow1+@js1)+@p3*(pz^@pow2+@js2)+@p4*(pz^@pow3+@js3) pz=@p1*pz+@p2*(pz^@pow2+@js2)+@p3*(pz^@pow3+@js3)+@p4*(u^@pow1+@js1) u2=@p1*z2+@p2*(z2^@pow1+@js1)+@p3*(z2^@pow2+@js2)+@p4*(z2^@pow3+@js3) z2=@p1*z2+@p2*(z2^@pow2+@js2)+@p3*(z2^@pow3+@js3)+@p4*(u2^@pow1+@js1) else u=@p1*pz+@p2*(pz^@pow1+@js1)+@p3*(pz^@pow2+@js2)+@p4*(pz^@pow3+@js3) pz=@p1*pz+@p2*(pz^@pow2+@js2)+@p3*(pz^@pow3+@js3)+@p4*(u^@pow1+@js1) u2=@p1*z2+@p2*(z2^@pow1+@js1)+@p3*(z2^@pow2+@js2)+@p4*(z2^@pow3+@js3) z2=@p1*z2+@p2*(z2^@pow2+@js2)+@p3*(z2^@pow3+@js3)+@p4*(u2^@pow1+@js1) a=z2 z2=@bp1*@js4*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+@js4 endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 default: title="Bivar Rajput-Tenguria-Pandey Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param v caption="Loop Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-1,0) visible=@sv!=0 endparam param p1 caption="RTP Parameter 1" default=(1.125,0) endparam param p2 caption="RTP Parameter 2" default=(-0.55,0) endparam param p3 caption="RTP Parameter 3" default=(0.25,0) endparam param p4 caption="RTP Parameter 4" default=(0.25,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param js1 caption="Julia Seed 1" default=(1.85,0) endparam param js2 caption="Julia Seed 2" default=(1.75,0) endparam param js3 caption="Julia Seed 3" default=(0.65,0) endparam param js4 caption="Julia Seed 4" default=(0.5,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX62(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=(pz^3*c)/(pz*c-1)+@p1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=(pz^3*c)/(pz*c-1)+@p1 elseif @v==2 pz=(pz^3*c)/(pz*c-1)+@p1 z2=(z2^3*c)/(z2*c-1)+@p1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=(pz^3*c)/(pz*c-1)+@p1 z2=(z2^3*c)/(z2*c-1)+@p1 endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 62" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=3 endparam param p1 caption="X Parameter" default=(-0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX63(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp+1 elseif @sv==2 pz=@sf(pz) z2=@sp else z2=@sf(pz) pz=@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=pz^2+@p1*pz/(pz-c) z2=z2^2+@p1*z2/(z2-c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 pz=pz^2+@p1*pz/(pz-c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else pz=pz^2+@p1*pz/(pz-c) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c z2=z2^2+@p1*z2/(z2-c) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 63" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="Loop Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@sv!=3 endparam param p1 caption="X Parameter" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(-1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(0.6,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.6,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Erratum14(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@ar/pz if @v==0 f=(pz^5-pz^3)/(pz^2+1)+(@p2+3)*c*pz^2+@p3*c f1=2*(@p2+3)*c*pz f2=2*(@p2+3)*c elseif @v==1 f=(pz^5-pz^3)/(pz^2+1)+(@p2-5)*(1-c)*pz^2+@p3*c f1=2*(@p2-5)*(1-c)*pz f2=2*(@p2-5)*(1-c) elseif @v==2 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+(@p2-5)*(1-c)*pz^2+@p3*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*(@p2-5)*(1-c)*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*(@p2-5)*(1-c) else f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+(@p2+1)*c*pz^2+@p3*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*(@p2+1)*c*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*(@p2+1)*c endif pz=pz-@p4*(@p1*f*f1/(f1^2-f*f2/2)+(1-@p1)*f*(1+(f*f2/f1^2)/2)/f1)+@p5 return pz endfunc private: complex c default: title="Erratum 14" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(1,0) endparam param p1 caption="Erratum Parameter 1" default=(-0.75,0) endparam param p2 caption="Erratum Parameter 2" default=(1,0) endparam param p3 caption="Erratum Parameter 3" default=(1,0) endparam param p4 caption="Erratum Parameter 4" default=(1,0) endparam param p5 caption="Erratum Parameter 5" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1e-8 exponential=true endparam } class OM_BivarYadavJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 u=(1-@p1)*(pz^@pow1+@js1)+@p1*(pz^@pow2+@js2) pz=(u^@pow2+@js2) u=(1-@p1)*(z2^@pow1+@js1)+@p1*(z2^@pow2+@js2) z2=(u^@pow2+@js2) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@js3 elseif @v==1 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@js3 u=(1-@p1)*(pz^@pow1+@js1)+@p1*(pz^@pow2+@js2) pz=(u^@pow2+@js2) u=(1-@p1)*(z2^@pow1+@js1)+@p1*(z2^@pow2+@js2) z2=(u^@pow2+@js2) elseif @v==2 u=(1-@p1)*(pz^@pow1+(@js1-0.45))+@p1*(pz^@pow2+(@js2+0.04)) pz=(u^@pow2+(@js2+0.04)) u=(1-@p1)*(z2^@pow1+(@js1-0.45))+@p1*(z2^@pow2+(@js2+0.04)) z2=(u^@pow2+(@js2+0.04)) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+(@js3+0.1) else a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+(@js3+0.1) u=(1-@p1)*(pz^@pow1+(@js1-0.45))+@p1*(pz^@pow2+(@js2+0.04)) pz=(u^@pow2+(@js2+0.04)) u=(1-@p1)*(z2^@pow1+(@js1-0.45))+@p1*(z2^@pow2+(@js2+0.04)) z2=(u^@pow2+(@js2+0.04)) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 default: title="Bivar Yadav Julia" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param p1 caption="Yadav Parameter" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param js1 caption="Julia Seed 1" default=(-0.4,0) endparam param js2 caption="Julia Seed 2" default=(-0.29,0) endparam param js3 caption="Julia Seed 3" default=(-1.5,0) endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_RafumoglecV(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp c=@sf(fpixel) else pz=@sf(pz) c=@p4 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) pz=@p1*pz*(pz^@p3-@p2)/(1-@p2*pz^(@p3-1))+c return pz endfunc private: complex c default: title="Rafumoglec V" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="RV Parameter 1" default=(1,0) endparam param p2 caption="RV Parameter 2" default=(-1.5,0) endparam param p3 caption="RV Parameter 3" default=3 endparam param p4 caption="Julia Seed" default=(-0.25,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarStohminy(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=@p1*(pz^2+@p2*pz+c)^3/(27*pz^4) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=@p1*(pz^2+@p2*pz+c)^3/(27*pz^4) elseif @v==2 pz=(@p1-3)*(pz^2+(@p2+1)*pz+c)^3/(27*pz^4) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+c pz=(@p1-3)*(pz^2+(@p2+1)*pz+c)^3/(27*pz^4) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 complex c default: title="Bivar Stohminy" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(1.5,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-0.55,0) visible=@mj==1 endparam param p1 caption="Stohminy Parameter 1" default=(4,0) endparam param p2 caption="Stohminy Parameter 2" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Dongong(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @st==0 pz=@sf(pz) else pz=@sp endif c=@sf(fpixel) else pz=@sf(pz) c=@js endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) pz=@p1*(c*(pz^2+@p2)^2/(pz*(pz^2-@p3)))^2 return pz endfunc default: title="Dongong" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0.2,0) visible=@mj==0 && @st==1 endparam param js caption="Julia Seed" default=(0.2,0) visible=@mj==1 endparam param p1 caption="Dongong Parameter 1" default=(1,0) endparam param p2 caption="Dongong Parameter 2" default=(1,0) endparam param p3 caption="Dongong Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarDongong(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @st==0 z2=@sf(pz) pz=@sf(pz) else pz=@sp z2=@sp endif c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@as*sqr(pz) z2=z2+@as*sqr(z2) pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=@p1*(c*(pz^2+@p2)^2/(pz*(pz^2-@p3)))^2 z2=@p1*(c*(z2^2+@p2)^2/(z2*(z2^2-@p3)))^2 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=@p1*(c*(pz^2+@p2)^2/(pz*(pz^2-@p3)))^2 z2=@p1*(c*(z2^2+@p2)^2/(z2*(z2^2-@p3)))^2 elseif @v==2 pz=@p1*(c*(pz^2+@p2)^2/(pz*(pz^2-@p3)))^2 z2=@p1*(c*(z2^2+@p2)^2/(z2*(z2^2-@p3)))^2 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+c pz=@p1*(c*(pz^2+@p2)^2/(pz*(pz^2-@p3)))^2 z2=@p1*(c*(z2^2+@p2)^2/(z2*(z2^2-@p3)))^2 endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 complex c default: title="Bivar Dongong" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0.2,0) visible=@mj==0 && @st==1 endparam param js caption="Julia Seed" default=(0.2,0) visible=@mj==1 endparam param p1 caption="Dongong Parameter 1" default=(1,0) endparam param p2 caption="Dongong Parameter 2" default=(1,0) endparam param p3 caption="Dongong Parameter 3" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_RajputTenguriaPandeyMunster(common.ulb:DivergentFormula) { ;Rajput-Tenguria-Pandey iteration from ;https://www.arpapress.com/Volumes/Vol24Issue1/IJRRAS_24_1_01.pdf ;(8) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 pz=@sf(pz) else pz=@sp endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @jm==0 u=@p1*pz+@p2*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+@mp3a)+@p3*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+@mp3b)+@p4*(@mp2c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+@mp3c) pz=@p1*pz+@p2*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+@mp3b)+@p3*(@mp2c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+@mp3c)+@p4*(@mp2a*u^2*(u-@mp1a)/(1-@mp1a*u)+@mp3a) elseif @jm==1 u=@p1*pz+@p2*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+@mp3a)+@p3*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+@mp3b)+@p4*(@mp2c*c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+@mp3c) pz=@p1*pz+@p2*(@mp2b*c*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+@mp3b)+@p3*(@mp2c*c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+@mp3c)+@p4*(@mp2a*c*u^2*(u-@mp1a)/(1-@mp1a*u)+@mp3a) elseif @jm==2 u=@p1*pz+@p2*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+(@mp3a+1)*c)+@p3*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+(@mp3b+1)*c)+@p4*(@mp2c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+(@mp3c+1)*c) pz=@p1*pz+@p2*(@mp2b*pz^2*(pz-@mp1b)/(1-@mp1b*pz)+(@mp3b+1)*c)+@p3*(@mp2c*pz^2*(pz-@mp1c)/(1-@mp1c*pz)+(@mp3c+1)*c)+@p4*(@mp2a*u^2*(u-@mp1a)/(1-@mp1a*u)+(@mp3a+1)*c) else u=@p1*pz+@p2*(@mp2a*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz)+@mp3a)+@p3*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)+@mp3b)+@p4*(@mp2c*pz^2*(pz-@mp1c*c)/(1-@mp1c*c*pz)+@mp3c) pz=@p1*pz+@p2*(@mp2b*pz^2*(pz-@mp1b*c)/(1-@mp1b*c*pz)+@mp3b)+@p3*(@mp2c*pz^2*(pz-@mp1c*c)/(1-@mp1c*c*pz)+@mp3c)+@p4*(@mp2a*u^2*(u-@mp1a*c)/(1-@mp1a*c*u)+@mp3a) endif return pz endfunc private: complex c default: title="Rajput-Tenguria-Pandey Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@jm!=0 endparam param p1 caption="RTP Parameter 1" default=(-1.1,0) endparam param p2 caption="RTP Parameter 2" default=(-0.5,0) endparam param p3 caption="RTP Parameter 3" default=(0.25,0) endparam param p4 caption="RTP Parameter 4" default=(0.5,0) endparam param mp1a caption="Munster Parameter 1a" default=(0.5,0) endparam param mp1b caption="Munster Parameter 1b" default=(1.5,0) endparam param mp1c caption="Munster Parameter 1c" default=(2,0) endparam param mp2a caption="Munster Parameter 2a" default=(1,0) endparam param mp2b caption="Munster Parameter 2b" default=(1,0) endparam param mp2c caption="Munster Parameter 2c" default=(1,0) endparam param mp3a caption="Munster Parameter 3a" default=(0,0) endparam param mp3b caption="Munster Parameter 3b" default=(0,0) endparam param mp3c caption="Munster Parameter 3c" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX64(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) a=z2 if @mj==0 z2=@bp1*c*@bf(z2/pz)+@bp2*pz pz=@bp3*(pz^2+a^2)+@bp4*a+c else z2=@bp1*c*@bf(z2/pz)+(@bp2-1.75)*pz pz=@bp3*(pz^2+a^2)+(@bp4-3)*a+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 64" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0.25,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@mj==1 endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param bp4 caption="Bivar Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarMunster4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2*pz pz=@bp3*(pz^2*(pz-@mp)/(1-@mp*pz)+a^2*(a-@mp)/(1-@mp*a))+@bp4*a+c return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Munster 4" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0.25,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-0.375,0) visible=@mj==1 endparam param mp caption="Munster Parameter" default=(-1.33,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param bp4 caption="Bivar Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_Xenomysticon(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @v==0 pz=@p2*pz*cotan(pz)+(pz^2-cotan(pz)^2)/@p1+c elseif @v==1 pz=@p2*c*pz*cotan(pz)+(pz^2-cotan(pz)^2)/@p1+c elseif @v==2 pz=(@p2-2)*pz*cotan(pz)+(pz^2-cotan(pz)^2)/((@p1+2)*c)+c elseif @v==3 pz=@p2*pz*cotan(pz)+c*(pz^2-cotan(pz)^2)/@p1+c elseif @v==4 pz=(@p2-0.5)*c*pz*cotan(pz)+c*(pz^2-cotan(pz)^2)/(@p1-1) elseif @v==5 pz=(@p2-2)*c*pz*cotan(pz)+(pz^2-cotan(pz)^2)/((@p1+2)*c) elseif @v==6 pz=pz+c pz=@p2*pz*cotan(pz)+(pz^2-cotan(pz)^2)/@p1 elseif @v==7 pz=pz+c pz=@p2*pz*cotan(pz)+(pz^2-cotan(pz)^2)/@p1+c elseif @v==8 pz=(@p2-2)*c*pz*cotan(pz)+(pz^2-cotan(pz)^2)/(@p1*c)+c else pz=-@p2*c*pz*cotan(pz)+c*(pz^2-cotan(pz)^2)/(-@p1)+c endif return pz endfunc private: complex c default: title="Xenomysticon" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10" endparam param sp caption="Start Parameter" default=(0.5,0) endparam param p1 caption="Xenomysticon Parameter 1" default=(2,0) endparam param p2 caption="Xenomysticon Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarX65(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @sv==0 pz=@sp z2=@sp elseif @sv==1 z2=@sf(pz) pz=@sp elseif @sv==2 z2=@sp+@sf(pz) pz=@sp+@sf(pz) else z2=@sp-@sf(pz) pz=@sp+@sf(pz) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz*sinh(pz)+a*sinh(a))-c^2 elseif @v==1 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=pz*sinh(pz)-c^2 z2=z2*sinh(z2)-c^2 else pz=pz*sinh(pz)-c^2 z2=z2*sinh(z2)-c^2 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 65" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3""4" endparam param v caption="X Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_BivarX66(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) z2=@sp-@sf(pz) pz=@sp+@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2-sin(pz)^2+pz*sinh(pz)+a^2-sin(a)^2+pz*sinh(a))+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+sin(pz)^2-pz*sinh(pz)+a^2+sin(a)^2-pz*sinh(a))+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 66" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0.05,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_BivarX67(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp if @v==1 pz=@sp-1 z2=@sp-1 endif c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js if @v==1 c=@js+0.6 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=pz^2+(pz^2/(pz-@p1))/@p2+c z2=z2^2+(z2^2/(z2-@p1))/@p2+c a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=pz^2+(pz^2/(pz-@p1))/@p2+c z2=z2^2+(z2^2/(z2-@p1))/@p2+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 67" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-0.9,0) visible=@mj==1 endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(2,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_BivarX68(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js if @v==1 c=@js-0.3835 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=pz^2+((c^2+@p1-pz)/(2*c+@p1-2*pz))^2 z2=z2^2+((c^2+@p1-z2)/(2*c+@p1-2*z2))^2 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+c else pz=pz^2+((c^2+@p1-pz)/(2*c+@p1-2*pz))^2 z2=z2^2+((c^2+@p1-z2)/(2*c+@p1-2*z2))^2 a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 68" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(0.3585,0) visible=@mj==1 endparam param p1 caption="X Parameter" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_BivarX69(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) c=@js if @v==0 c=@js-0.175 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 pz=(pz^2/(pz-@p1))^2+c z2=(z2^2/(z2-@p1))^2+c a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c elseif @v==1 pz=(pz^2/(pz-@p1))^2+c z2=(z2^2/(z2-@p1))^2+c a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2+pz pz=@bp3*(pz+a)+a+c else pz=(pz^2/(pz-@p1))^2+c z2=(z2^2/(z2-@p1))^2+c a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2-pz pz=@bp3*(pz+a)+a+c endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 69" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param v caption="Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-0.4,0) visible=@mj==1 endparam param p1 caption="X Parameter" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX70(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @sv==0 pz=@sp z2=@sp else z2=@sf(pz) pz=@sf(pz) endif c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) if @v==0 c=@js+0.1 elseif @v==1 c=@js+0.4 elseif @v==2 c=@js else c=@js+0.4 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=z2^2+c pz=pz^2+a b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c elseif @v==1 b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c a=z2 z2=z2^2+c pz=pz^2+a elseif @v==2 a=z2 z2=z2^2+c pz=pz^2-a b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c else b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c a=z2 z2=z2^2+c pz=pz^2-a endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 70" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sv caption="Start Type" enum="Parameter""Pixel" visible=@mj==0 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(-1,0) visible=@mj==0 && @sv==0 endparam param js caption="Julia Seed" default=(-1,0) visible=@mj==1 endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanChoAbbasBarnsley(common.ulb:DivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) public: complex func Init(complex pz) pz=@sf(pz) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@p1)*pz+@p1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@p2)*fz+@p2*fu return pz endfunc private: complex fz complex fu default: title="Khan-Cho-Abbas Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(2.88,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(-0.5,0) endparam param p1a caption="Barnsley Parameter 1a" default=(2.19,0.86) endparam param p1b caption="Barnsley Parameter 1b" default=(1.638,0.276) endparam param p2a caption="Barnsley Parameter 2a" default=(0.02,0.48) endparam param p2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param p3a caption="Barnsley Parameter 3a" default=(1,0) endparam param p3b caption="Barnsley Parameter 3b" default=(0,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AmmaGorgShulti(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 c=0.0 d=(0,0) f=0 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=pz+@p1/fn1(pz) if !g b=|d|/|fn2((pz+@p2))| if @V=="1" d=pz elseif @V=="2" d=pz+1/pz elseif @V=="3" d=pz-1/pz elseif @V=="4" d=(pz-1)/(pz+1) elseif @V=="5" d=pz^2/(pz+1) elseif @V=="6" d=log(pz) elseif @V=="7" d=sqr(pz) elseif @V=="8" d=tan(pz) elseif @V=="9" d=acosh(pz) elseif @V=="10" d=cosh(pz) elseif @V=="11" d=pz+flip(pz) elseif @V=="12" d=pz+conj(pz) elseif @V=="13" d=pz+cotan(pz) elseif @V=="14" d=pz+tan(pz) elseif @V=="15" d=pz+cos(pz) elseif @V=="16" d=pz-conj(pz) elseif @V=="17" d=pz-cabs(pz) elseif @V=="18" d=pz-log(pz) elseif @V=="19" d=pz+1/pz+flip(pz) elseif @v=="20" d=pz+log(pz)-conj(pz) elseif @v=="21" d=pz+log(pz)-sqr(pz) elseif @v=="22" d=pz+log(pz)-sin(pz) elseif @v=="23" d=pz+exp(pz)-tan(pz) elseif @v=="24" d=1/cotan(pz) elseif @v=="25" d=sqr(sin(pz)) elseif @v=="26" d=cosh(sin(pz)) elseif @v=="27" d=cosh(sqr(pz)) elseif @v=="28" d=sqr(cosh(pz)) elseif @v=="29" d=pz^2*(pz-1.5)/(1-1.5*pz) elseif @v=="30" d=pz^2+pz/2-1 elseif @v=="31" d=-2*(pz-1i)/(pz+1i)+3 elseif @v=="32" d=(pz+1i)/(pz-1i)+1 elseif @v=="33" d=(pz^2+2.75)/(2*pz+1.75) elseif @v=="34" d=((pz^2+1.5)/(2*pz+0.5))^2 elseif @v=="35" d=(flip(pz)^2+5)/(2*pz+4)+1 elseif @v=="36" d=(pz^2+2.5)/(2*flip(pz)+1.5)+1 elseif @v=="37" d=(flip(pz)^2+1.25)/(2*flip(pz)+0.25)-2.75 elseif @V=="38" d=((flip(pz)^2)/(2*pz-1))^2-1.5 elseif @V=="39" d=((pz^2+2.5)/(2*flip(pz)+1.5))^2-1.5 else d=((flip(pz)^2+2.5)/(2*flip(pz)+1.5))^2-1.5 endif if b<@p3 && f>0 g=true c=(131/@p3)*b+a*131 endif f=f+1 a=f % (-25) endif endfunc float func ResultIndex(complex pz) if @solid if g index=((real(c)+1) % 289)/289 else m_Solid=true endif else index=((real(c)+1) % 289)/289 endif return index endfunc private: float a float b float c complex d int f bool g float index default: title="Amma Gorg Shulti" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40" endparam func fn1 caption="Add Recip Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc param p1 caption="Add Recip Parameter" default=(1,0) endparam param p2 caption="Z Parameter" default=(0,0) endparam param p3 caption="Parameter 3" default=0.5 endparam param solid caption="Solid Color" default=true endparam } class OM_BivarJulia5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@zp1*z2+@z2p2 pz=pz+@as*sqr(pz) z2=z2+@as*sqr(z2) pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) a=pz pz=(1-@p1)*pz+@p1*(z2^@pow1+@js1) z2=(1-@p2)*a+@p2*(a^@pow2+@js2) return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex z2 default: title="Bivar Julia 5" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Bivar Parameter 1" default=(0.9,0) endparam param p2 caption="Bivar Parameter 2" default=(0.5,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param js1 caption="Julia Seed 1" default=(-2.25,0) endparam param js2 caption="Julia Seed 2" default=(-1.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Ampomestion(common.ulb:GradientColoring) { ;A modification of Speed Limits by Mike Williams (mjw.ucl) public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e20 i=0 b=(0,0) c=0.0 d=1e20 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @S==true pz=abs(fn1(pz)) else pz=fn1(pz) endif pz=@zp1*pz+@zp2 float x=real(pz) float y=imag(pz) if @version==100 if @V=="Baker's Map 1" pz=2*x-floor(2*x)+flip((y+floor(2*x))/2) elseif @V=="Baker's Map 2" if 0<=x && x<0.5 pz=2*x+flip(y/2) else pz=2-2*x+flip(1-y/2) endif elseif @V=="Barnsley" if x>=0 pz=(pz-1)*@p1 else pz=(pz+1)*@p1 endif elseif @V=="Cat Map" pz=(2*x+y)%1+flip((x+y)%1) elseif @V=="Cayley" pz=(pz-sqrt(-1))/(pz+sqrt(-1)) elseif @V=="Cornpop" pz=x-@p1*tan(y+sin((@p2-1.5)*y))+flip(y-@p1*tan(x+sin((@p2-1.5)*x))) elseif @V=="Cube" pz=@p1*pz^3 elseif @V=="Cube+" pz=@p1*(pz^3+sqr(pz)+pz) elseif @V=="Frothy Basin" pz=pz^2-(1+@p1*sqrt(-1))*conj(pz) elseif @V=="Hamilton" pz=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="Latoocarfian" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Mackey-Glass 1" pz=(@p1*pz*@p2^@p3)/(@p2^@p3+pz^@p3) elseif @V=="Mackey-Glass 2" pz=@p1*pz/(1+pz^@p3)-@p2*pz elseif @V=="Magnet" pz=sqr((pz^3+3*(@p1-1)*pz+(@p1-1)*(@p1-2))/(3*pz^2+3*(@p1-2)*pz+(@p1-1)*(@p1-2)+1)) elseif @V=="Magus 1" pz=sin(@p1*y)+@p2*cos(@p1*sin(@p2*x))+flip(sin(@p3*x)+@p4*cos(@p3*sin(@p4*y))) elseif @V=="Magus 2" pz=x-@p1*real(sin(y+sin(@p2*(y+sin(@p3*y)))))+flip(y+@p1*real(sin(x+sin(@p2*(x+sin(@p3*x)))))) elseif @V=="Magus 3" pz=@p1*sin(@p2*cos(@p3*x))+flip(@p1*cos(@p2*sin(@p3*y))) elseif @V=="Magus 4" pz=@p1*sin(@p2*tan(@p3*x))+flip(@p1*tan(@p2*sin(@p3*y))) elseif @V=="Magus 5" pz=@p1*sin(@p2*sin(@p3*x))+flip(@p1*cos(@p2*cos(@p3*y))) elseif @V=="Magus 6" pz=@p1*sin(@p2*sin(@p3*x))+@p1*cos(@p2*cos(@p3*y))+flip(@p1*cos(@p2*cos(@p3*x))-@p1*sin(@p2*sin(@p3*y))) elseif @V=="Magus 7" pz=x-(@p1/@p2)*cos(2*pi*(x+@p1*@p2*cos(2*pi*y)))+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="Magus 8" pz=x-@p1*sin(y+sqr(@p2*y+sin(y)))+flip(y-@p3*sin(x+sqr(@p4*x+sin(x)))) elseif @V=="Magus 9" pz=|sin(@p1*y)|+(sin(@p1*x))^2+flip(|sin(@p2*x)|+(sin(@p2*y))^2) elseif @V=="Magus 10" pz=x-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="Magus 11" pz=x*cos(@p1)+(x^2-y)*sin(@p1)-sin(y)*(1-@p1)+flip(sin(x)*(1+@p1)+x*sin(@p1)-(x^2-y)*cos(@p1)) elseif @V=="Magus 12" pz=cos(@p1)*(x+@p2*sin(y))+sin(@p1)*y-sin(y)*(1-@p1)+flip(sin(x)*(1+@p1)-sin(@p1)*(x+@p2*sin(y))+cos(@p1)*y) elseif @V=="Magus 13" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) elseif @v=="Magus 14" pz=@p1/pz-floor(@p2/pz) elseif @V=="Magus 15" pz=pz-@p1*sin(pz) elseif @v=="Magus 16" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(cos(@p3*x)+@p4*cos(@p3*y)) elseif @V=="Magus 17" pz=real(sin(y))+@p1*real(sin(@p2*x))+imag(flip(@p1))*real(sin(@p2*x))+flip(real(sin(x))+@p1*real(sin(@p2*y))+imag(flip(@p1))*real(sin(@p2*y))) elseif @V=="Munster" pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz) elseif @V=="Newton" pz=pz-@p1*(pz^3-@p2)/(3*pz^2) elseif @v=="Pickover" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin(@p3*x)+@p4*cos(@p3*y)) elseif @v=="Quack" if y>0 k=pz else k=conj(pz) endif pz=log(k+@p1) elseif @v=="sqr+" pz=@p1*(sqr(pz)+pz) elseif @V=="Tent Map" if x<0.5 pz=@p1*pz else pz=@p1*(1-pz) endif elseif @V=="Threeply" pz=y-(x/cabs(x))*(abs(sin(x)*cos(@p1)+@p2-x*sin(@p1+@p2+@p3)))+flip(@p3-x) elseif @V=="Volterra" pz=e^y-1+@p2*(e^x-1)*e^y/(@p2+e^(2*x))+flip(@p1*(1-e^x)-@p1*@p2*(e^x-1)*e^x/(@p2+e^(2*x))) elseif @V=="Zaslavskii" pz=(x+real(@p1)*(1+((1-e^(-real(@p3)))/real(@p3))*y)+real(@p2)*real(@p1)*((1-e^(-real(@p3)))/real(@p3))*cos(2*pi*x))%1+flip(e^(-real(@p3))*(y+real(@p2)*cos(2*pi*x))) endif else if @Vb=="Bogdanov" pz=x+y+@p1b*y+(@p2b-0.5)*x*(x-1)+@p3b*x*y+flip(y+@p1b*y+(@p2b-0.5)*x*(x-1)+@p3b*x*y) elseif @Vb=="Brusselator" pz=(1-(@p1b+1)*x+y*x^2)/@p2b+flip((@p1b*x-y*x^2)/@p3b) elseif @Vb=="Buckling Column Model" pz=y+flip(-(@p1b*x^3+@p2b*x+@p3b*y)/@p4b) elseif @Vb=="Burgers" pz=@p1b*x-y^2+flip(@p2b*y+x*y) elseif @Vb=="Cathala" pz=(1-2*@p1b)*x+y+flip(2*@p1b*@p2b*x+@p3b*y-2*@p1b*x^3) elseif @Vb=="Coupled Logistic" pz=(1-@p1b)*@p2b*x*(1-x)+@p1b*@p2b*y*(1-y)+flip((1-@p1b)*@p2b*y*(1-y)+@p1b*@p2b*x*(1-x)) elseif @Vb=="Duffing" pz=y+flip(-@p1b*x+@p1b*y-y^3) elseif @Vb=="Frothy Basin" pz=pz^2-(1+@p1b*1i)*conj(pz) elseif @Vb=="Garrote-Mira" pz=y+@p1b*(1-0.05*y^2)+@p2b*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2b*(y+@p1b*(1-0.05*y^2)+@p2b*x+2*(1-@p2b)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1b*(1-0.05*y^2)+@p2b*x+2*(1-@p2b)*x^2/(1+x^2))\ ^2/(1+(y+@p1b*(1-0.05*y^2)+@p2b*x+2*(1-@p2b)*x^2/(1+x^2))^2)) elseif @Vb=="Gingerbread" pz=1-(@p1b-2.15-0.25i)*y+@p2b*cabs(x)+flip(x) elseif @Vb=="Gumowski-Mira" pz=y-@p1b*(1-0.05*y^2)*y-@p1b*x+2*(1+@p1b)*x^2/(1+x^2)\ +flip(-x-@p1b*(y-@p1b*(1-0.05*y^2)*y-@p1b*x+2*(1+@p1b)*x^2/(1+x^2))\ +2*(1+@p1b)*(y-@p1b*(1-0.05*y^2)*y-@p1b*x+2*(1+@p1b)*x^2/(1+x^2))^2/\ (1+(y-@p1b*(1-0.05*y^2)*y-@p1b*x+2*(1+@p1b)*x^2/(1+x^2))^2)) elseif @Vb=="HCA" pz=1-@p1b*x^2+@p2b*(y^2-x^2)+flip(1-@p1b*y^2+@p2b*(x^2-y^2)) elseif @Vb=="Henon" pz=1-@p1b*x^2+y+flip(@p2b*x) elseif @Vb=="Henon-Heiles" pz=-@p1b*x-@p2b*x*y+flip(-@p3b*y-@p4b*x^2+@p5b*y^2) elseif @Vb=="Ikeda" pz=1+@p2b*(x*cos(@p3b-@p1b/(x^2+y^2+1))-y*sin(@p3b-@p1b/(x^2+y^2+1))) \ +flip(@p2b*(x*sin(@p3b-@p1b/(x^2+y^2+1))+y*cos(@p3b-@p1b/(x^2+y^2+1)))) elseif @Vb=="Ilhem-Amel 1" pz=x^3+(@p1b-4)*x+y+flip(@p2b*x) elseif @Vb=="Ilhem-Amel 2" pz=(@p4b-0.5)*x^3+(@p1b-4.375-2.4i)*x+@p5b*y+flip(@p3b*x+@p2b*y) elseif @Vb=="Jiang" pz=y+flip(x+@p1b*x^2+(@p2b-0.65+4.7i)*y^2-(@p3b-0.065-2.75i)*x*y) elseif @Vb=="Kam Torus" pz=x*cos(@p1b)+(x^2-y)*sin(@p1b)+flip(x*sin(@p1b)-(x^2-y)*cos(@p1b)) elseif @Vb=="Kolmogorov-Volterra" pz=(x*(@p1b-x^2)-@p2b*x*y)/(1+x^2)+flip((@p3b*x^2-1)*y/(1+x^2)) elseif @Vb=="Lozi" pz=1-@p1b*cabs(x)+y+flip(@p2b*x) elseif @Vb=="Lozi Mod" pz=1+@p1b*(cabs(x)-y^2)+y+flip((@p2b-0.5)*x) elseif @Vb=="Magus 1" pz=@p1b*y+@p2b^2*@p1b*x+flip(@p3b*x+@p4b*abs(@p3b*sin(@p4b*y))) elseif @Vb=="Magus 2" pz=x-@p1b*real(sin(y+sin(@p2b*(y+sin(@p3b*y)))))+flip(y+@p1b*real(sin(x+sin(@p2b*(x+sin(@p3b*x)))))) elseif @Vb=="Magus 3" pz=@p1b*@p2b*(y-@p3b*x)+flip(@p1b*abs(@p2b*@p3b*y)) elseif @Vb=="Magus 4" pz=@p1b*(y^2-@p3b*x)+flip(@p2b*(@p3b*y-x^2)) elseif @Vb=="Magus 5" pz=@p1b*abs(@p2b*sqr(@p3b*x))+flip(@p1b*sqr(@p2b-@p3b*y)) elseif @Vb=="Magus 6" pz=@p1b*(@p2b*sin(@p3b*x))+@p1b*(@p2b*abs(@p3b*y))+flip(@p1b*(@p2b*abs(@p3b*x))-@p1b*(@p2b*sin(@p3b*y))) elseif @Vb=="Magus 7" pz=x-(@p1b/@p2b)*abs(x+@p1b*@p2b*y^2)+flip(y-(@p1b/@p2b)*sqr(x+@p1b*@p2b*y)) elseif @Vb=="Magus 8" pz=x-@p1b*sin(y+sqr(@p2b*y+sin(y)))+flip(y-@p3b*sin(x+sqr(@p4b*x+sin(x)))) elseif @Vb=="Magus 9" pz=@p1b*y^2+cos(x)*y+flip(@p2b*x^2-y^2) elseif @Vb=="Magus 10" pz=x-((-@p1b/2)/@p2b)*sqr(x+(-@p1b/2)*@p2b*sqr(y))+flip(y-(-@p1b/2)*@p2b*abs(x+((-@p1b/2)/@p2b)*y)) elseif @Vb=="Magus 11" pz=x*cos(@p1b)+(x^2-y)*sin(@p1b)-sin(y)*(1-@p1b)+flip(sin(x)*(1+@p1b)+x*sin(@p1b)-(x^2-y)*cos(@p1b)) elseif @Vb=="Magus 12" pz=cos(@p1b)*(x+@p2b*sin(y))+sin(@p1b)*y-sin(y)*(1-@p1b)+flip(sin(x)*(1+@p1b)-sin(@p1b)*(x+@p2b*sin(y))+cos(@p1b)*y) elseif @Vb=="Magus 13" pz=@p1b*y+(@p1b*x)^2+(@p1b*y)^3+flip(abs(@p2b*x)+(sin(@p2b*y))^2+(@p2b*x)^3) elseif @Vb=="Magus 14" pz=@p1b*x+x*y-flip(@p2b*abs(y)-x^2) elseif @Vb=="Magus 15" pz=x-@p1b*sqrt(y)+flip(x*y^2-@p1b*x^2) elseif @Vb=="Magus 16" pz=@p1b*y+@p2b*@p1b*x+flip(@p3b*x^2+@p4b*abs(@p3b*y)) elseif @Vb=="Magus 17" pz=y+@p1b*@p2b*x+@p1b*x^2+flip(x+@p1b*y+@p2b*x*y) elseif @Vb=="Magus 18" pz=x-@p1b*(y+sqr(@p2b*y+sin(y)))+flip(y-@p3b*(x+sqr(@p4b*x+sin(x)))) elseif @Vb=="Magus 19" pz=x-@p1b*(y+sqr(@p2b*y+abs(y)))+flip(y-@p3b*(x+abs(@p4b*x+sin(x)))) elseif @Vb=="Magus 20" pz=x-@p1b*(y+sqr(@p2b*y+y^2))+flip(y-@p3b*(x+abs(@p4b*x+x^2))) elseif @Vb=="Magus 21" pz=x-@p1b*tan(y+sin((@p2b-1.5)*y))+flip(y-@p1b*tan(x+sin((@p2b-1.5)*x))) elseif @Vb=="Magus 22" pz=cos(-@p1b)*(x+@p2b*abs(y))+sin(-@p1b)*y+flip(-sqr(-@p1b)*(x+@p2b*y)+cos(-@p1b)*y) elseif @Vb=="Magus 23" pz=-y-@p1b*x*abs(x-y)+flip(x+@p2b*abs(y)*(x-y)) elseif @Vb=="Magus 24" pz=sin(@p1b*y)-abs(@p2b*x)+flip(sin(@p3b*x)-sqr(@p4b*y)) elseif @Vb=="Magus 25" pz=@p1b*x*(1-y)+y+flip(y-@p2b*(y^2+x*y)-x^2) elseif @Vb=="Magus 26" pz=x^3*(x-y^2)/4+@p1b*x+flip(x-@p2b*(y^2+y)+x^2) elseif @Vb=="Magus 27" pz=@p1b*x*(@p2b-y)+flip(@p1b*y*(@p2b-x)) elseif @Vb=="Magus 28" pz=x-y-@p1b*sin(y+sqr(@p2b*y+sin(y)))+flip(y-@p3b*sin(x+y+sqr(@p4b*x+sin(x)))) elseif @Vb=="Magus 29" pz=x+x*(1-x)-@p1b*sin(y+sqr(@p2b*y+sin(y)))+flip(y+y*(1-y)-@p3b*sin(x+sqr(@p4b*x+sin(x)))) elseif @Vb=="Marotto-Lorenz" pz=(1-(@p1b-0.5)*x-@p2b*y)*((@p1b-0.5)*x+@p2b*y)+flip(x) elseif @Vb=="Mira" pz=(1-@p1b/2)*x+y+flip(@p1b*@p2b*x/2+@p3b*y-@p1b*x^3/2) elseif @Vb=="Multifold Henon" pz=1-@p1b*sin(x)+@p2b*y+flip(x) elseif @Vb=="Nowicki-Swirszcz" pz=3*x*((x-y)^2-@p1b)/((3*x-y)^2-@p2b)+flip(y*(y^2+2*x*y-3*x^2-@p3b)/((3*x-y)^2-@p4b)) elseif @Vb=="Strelkova-Anishchenko" pz=1-@p1b*x^2+@p2b*(y-x)+flip(1-@p1b*y^2+@p2b*(x-y)) elseif @Vb=="Tinkerbell" pz=x^2+-y^2+@p1b*x+@p2b*y+flip(2*x*y+@p3b*x+@p4b*y) elseif @Vb=="Ushiki" pz=((@p1b-3.7+0.2i)-x-@p2b*y)*x+flip((@p3b-y-@p4b*x)*y) elseif @Vb=="Van der Pol 1" pz=@p1b*(x-x^3/3-y)+flip(x/@p1b) elseif @Vb=="Van der Pol 2" pz=y+flip(@p1b*(1-x^2)*y-x) elseif @Vb=="Volterra-Lotka" pz=@p1b*x-@p2b*x*y+flip(-@p3b*y+@p4b*x*y) elseif @Vb=="Zaslavsky" pz=cos(@p1b)*(x+@p2b*sin(y))+sin(@p1b)*y+flip(-sin(@p1b)*(x+@p2b*sin(y))+cos(@p1b)*y) elseif @Vb=="Zito" pz=x*y+@p1b*x-y+flip(x+y) endif endif i=i+1 if i==1 b=pz else c=cabs(pz-b) if c<@adj2 && c>@adj1 d=c if c@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Gorsentog" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0.5,0) endparam param p1 caption="Gorsentog Parameter 1" default=(0.25,0) endparam param p2 caption="Gorsentog Parameter 2" default=(2.85,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0.1,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0.1,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_PsychbrothAttraktorValmyst(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1.0 b=(0,0) i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 pz=@zp1*@zf(pz)+@zp2 x=real(pz) y=imag(pz) if i<@vmp1 if @V=="Bogdanov" vm[i]=flip(y-@ap1*y+@ap2*x*(x-1)+@ap3*x*y)+x+y-@ap1*y+@ap2*x*(x-1)+@ap3*x*y elseif @V=="Bogdanov-Takens" vm[i]=y+flip(-@ap1+@ap2*x+x^2-x*y) elseif @v=="Brusselator" vm[i]=(1-(@ap1+2)*x+y*x^2)/@ap2+flip(((@ap1+1)*x-y*x^2)/@ap3) elseif @V=="Buckling Column Model" vm[i]=y+flip(-(-@ap1*x^3+@ap2*x+@ap3*y)/@ap4) elseif @V=="Burgers" vm[i]=@ap1*x-y^2+flip((@ap2-2+1i)*y+x*y) elseif @v=="Cao-Lai" vm[i]=(@ap1+1)*x*(1-x)+flip(@ap2*x*sin(2*pi*y)/(2*pi)) elseif @V=="Cathala" vm[i]=(1-2*@ap1)*x+y+flip(2*@ap1*@ap2*x+@ap3*y-2*@ap1*x^3) elseif @v=="Coupled Logistic" vm[i]=(1-@ap1)*@ap2*x*(1-x)+@ap1*@ap2*y*(1-y)+flip((1-@ap1)*@ap2*y*(1-y)+@ap1*@ap2*x*(1-x)) elseif @V=="Cremona" vm[i]=x*cos(@ap1)-(y-x^2)*sin(@ap1)+flip(x*sin(@ap1)-(y-x^2)*cos(@ap1)) elseif @V=="Damped Pendulum" vm[i]=y+flip(-@ap1*sin(x)-@ap2*y) elseif @v=="de Jong" vm[i]=sin(@ap1*y)-cos(@ap2*x)+flip(sin(@ap3*x)-cos(@ap4*y)) elseif @v=="Duffing" vm[i]=y+flip(-@ap2*x+(@ap1-1.5)*y-y^3) elseif @V=="Garrote-Mira" vm[i]=y+@ap1*(1-0.05*y^2)+@ap2*x+2*(1-@ap2)*x^2/(1+x^2)\ +flip(-x+@ap2*(y+@ap1*(1-0.05*y^2)+@ap2*x+2*(1-@ap2)*x^2/(1+x^2))\ +2*(1-@ap2)*(y+@ap1*(1-0.05*y^2)+@ap2*x+2*(1-@ap2)*x^2/(1+x^2))\ ^2/(1+(y+@ap1*(1-0.05*y^2)+@ap2*x+2*(1-@ap2)*x^2/(1+x^2))^2)) elseif @V=="Gingerbread" vm[i]=1-@ap1*y+@ap2*cabs(x)+flip(x) elseif @V=="Hamilton" if @version==100 pz=x+(@ap1-0.75)*(@ap2-1.25)*sin(2*pi*y)+flip(y-((@ap1-0.75)/(@ap2-1.25))*sin(2*pi*(x+(@ap1-0.75)*(@ap2-1.25)*sin(2*pi*y)))) else vm[i]=x+(@ap1-0.5-0.25i)*(@ap2-1.35)*sin(2*pi*y)+flip(y-((@ap1-0.5-0.25i)/(@ap2-1.35))*sin(2*pi*(x+(@ap1-0.5-0.25i)*(@ap2-1.35)*sin(2*pi*y)))) endif elseif @V=="Hamilton Torus" vm[i]=-sin(y)*(1-(@ap1-0.5-1.75i))+flip(sin(x)*(1+(@ap1-0.5-1.75i))) elseif @v=="Henon" vm[i]=1-@ap1*x^2+y+flip(@ap2*x) elseif @V=="Henon-Heiles 1" vm[i]=@ap1*x-@ap2*x*y+flip(-@ap3*y-@ap4*x^2+@ap5*y^2) elseif @V=="Henon-Heiles 2" vm[i]=y+flip(-@ap1*x-@ap2*x^2+@ap3) elseif @v=="Hopalong" vm[i]=y-(x/cabs(x))*sqrt(cabs(@ap2*x-@ap3))+flip(@ap1-x) elseif @V=="Horsthemke-Lefever" vm[i]=@ap1*x*(1-x/(@ap3-1.8-0.45i))-@ap2*x*y+flip(-@ap2*x*y+(@ap4+1.125+0.65i)*(@ap5-y)) elseif @v=="Ikeda" vm[i]=@ap1+@ap2*(x*cos(@ap3-@ap4/(x^2+y^2+1))-y*sin(@ap3-@ap4/(x^2+y^2+1)))\ +flip(@ap2*(x*sin(@ap3-@ap4/(x^2+y^2+1))+y*cos(@ap3-@ap4/(x^2+y^2+1)))) elseif @V=="Ilhem-Amel 1" vm[i]=x^3+(@ap1-1.45+0.15i)*x+@ap2+y+flip(@ap3*x) elseif @V=="Ilhem-Amel 2" vm[i]=(@ap4-0.5)*x^3+(-@ap1-0.375-2.4i)*x+@ap2/2+@ap5*y+flip(@ap3*x+@ap6*y) elseif @v=="Jiang" vm[i]=y+flip(x+@ap1*x^2+@ap2*y^2-@ap3*x*y-@ap4) elseif @v=="Kam Torus" vm[i]=x*cos(@ap1+1)+(x^2-y)*sin(@ap1+1)+flip(x*sin(@ap1+1)-(x^2-y)*cos(@ap1+1)) elseif @V=="Latoocarfian" vm[i]=sin(@ap1*y)+@ap2*sin(@ap1*x)+flip(sin((@ap3+2)*x)+@ap4*sin((@ap3+2)*y)) elseif @v=="Li" vm[i]=(@ap1+1i)*cos(y)+flip(@ap2*x*sin(y)) elseif @v=="Lozi" vm[i]=1+y-@ap1*cabs(x)+flip(@ap2*x) elseif @V=="Marotto-Lorenz" vm[i]=(1-@ap1*x-@ap2*y)*(@ap1*x+@ap2*y)+flip(x) elseif @v=="Martin" vm[i]=y+sin(x)+flip(@ap1-x) elseif @V=="Mira 1" vm[i]=x^2-y^2+@ap1*x+@ap2+flip(2*x*y-5*@ap1*y/2+@ap3) elseif @V=="Mira 2" vm[i]=(1-(@ap1+0.5))*x+y+flip((@ap1+0.5)*@ap2*x+@ap3*y-(@ap1+0.5)*x^3) elseif @V=="Mira 3" vm[i]=@ap1*x+y+flip(-@ap2+x^2) elseif @V=="Mira 4" vm[i]=@ap2*y+(@ap1-1.25)*x+2*(1-(@ap1-1.25))*x^2/(1+x^2)\ +flip(-x+(@ap1-1.25)*(@ap2*y+(@ap1-1.25)*x+2*(1-@ap1)*x^2/(1+x^2))\ +2*(1-(@ap1-1.25))*(@ap2*y+(@ap1-1.25)*x+2*(1-(@ap1-1.25))*x^2/(1+(@ap2*y\ +(@ap1-1.25)*x+2*(1-(@ap1-1.25))*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V=="Modified Chirikov" vm[i]=x+y+((@ap1-1.5-0.25i)/2*pi)*sin(2*pi*x)+flip(y+((@ap1-1.5-0.25i)/2*pi)*sin(2*pi*x)) elseif @v=="Modified Lozi" vm[i]=1+@ap1*(cabs(x)-y^2)+y+flip(@ap2*x) elseif @v=="Multifold Henon" vm[i]=1-@ap1*sin(x)+@ap2*y+flip(x) elseif @V=="Nowicki-Swirszcz" vm[i]=3*x*((x-y)^2-(@ap1+3.5-1i))/((3*x-y)^2-@ap2)+flip(y*(y^2+2*x*y-3*x^2-@ap3)/((3*x-y)^2-@ap4)) elseif @v=="OM 1" vm[i]=@ap1*y-sin(x)+3*y^2+flip(@ap2*x^2+cos(y)-3*x) elseif @v=="OM 2" vm[i]=y-x^2/3+2*@ap1*x*y+flip(x^3+2*y+@ap2/2) elseif @v=="OM 3" vm[i]=x*sin(2*y)+@ap1*cos(x)+flip(y*cos(2*x)+@ap2*cos(y)) elseif @v=="OM 4" vm[i]=x-y-sin(x)*(@ap1*x^2+@ap2*y^2)+flip(x+y-cotanh(y)*(@ap3*x^2+@ap4*y^2)) elseif @v=="OM 5" vm[i]=x-y-cotanh(x)*(@ap1*x^2+@ap2*y^2)+flip(x+y-cotanh(y)*(@ap3*x^2+@ap4*y^2)) elseif @v=="OM 6" vm[i]=y^3-@ap1*x+@ap2*(y^2-x^2)+flip(x+@ap3*x^2-@ap4*(x+y)^2) elseif @V=="OM 7" if@version==100 vm[i]=x-y-cotan(x)*(@ap1*x^2+@ap2*y^2)+flip(x+y-cotan(y)*(@ap3*x^2+@ap4*y^2)) else vm[i]=x-y-recip(x)*(@ap1*x^2+@ap2*y^2)+flip(x+y-y*(@ap3*x^2+@ap4*y^2)) endif elseif @V=="OM 8" vm[i]=sin(@ap1*y)+(sin(@ap1*x))^2+(sin(@ap1*y))^3+flip(sin(@ap1*x)+(sin(@ap1*y))^2+(sin(@ap1*x))^3) elseif @V=="OM 9" vm[i]=sin(@ap1*x)-tan((@ap2-0.5)*y)+flip(tan((@ap3-3)*x)+sin(@ap4*y)) elseif @V=="OM 10" if @version==100 vm[i]=x*sin(2*y)+@ap1*cos(x)+flip(y*cos(2*x)+@ap2*cos(y)) else vm[i]=x*tan(2*y)+@ap1*sqr(x)+flip(y*sqr(2*x)+@ap2*sqr(y)) endif elseif @V=="OM 11" vm[i]=@ap1*(y-x)+@ap1*@ap2*(x^2-x*y^2)+flip(@ap2*y*x-@ap2*@ap3*(y^2+x^2)) elseif @V=="OM 12" vm[i]=@ap1*(y^2-2*x)+@ap2*(2*x^2-x^2*y^2)+flip(@ap2*y*x-@ap3*(2*x*y^2+x^3)) elseif @V=="OM 13" vm[i]=-@ap1*x^3-y+flip(@ap2*y-@ap3*x^2*y^2) elseif @V=="OM 14" vm[i]=(@ap1-2+2i)*sin(x)-y^2+flip(@ap2*y+@ap3*cos(x)*y^2) elseif @V=="OM 15" vm[i]=@ap1*cosh(x+y)-y^2+flip(@ap2*y+@ap3*abs(x-y)*y^2) elseif @V=="OM 16" vm[i]=-@ap1*x^3-x*y+flip(-@ap2*y+@ap3*(x-y)*y^5) elseif @V=="OM 17" vm[i]=1+2*y+@ap1*cabs(x)+x^3-@ap1*x+flip(-@ap2*x+@ap3*x)-@ap2 elseif @V=="OM 18" vm[i]=(1-(@ap1+2+1i)*x+y*x^2)/(@ap2+1i)+1-(@ap1+1i)*x^2+(@ap2+1i)*(y-x)+flip(((@ap1+1+1i)*x-y*x^2)/(@ap3-1i)+1-(@ap1+1i)*y^2+(@ap2+1i)*(x-y)) elseif @V=="OM 19" vm[i]=1-(@ap1+1.5i)*sin(x)+@ap2*y+x+y-(@ap1+1.5i)*y+@ap2*x*(x-1)+@ap3*x*y+flip(x+y-(@ap1+1.5i)*y+@ap2*x*(x-1)+@ap3*x*y) elseif @V=="OM 20" vm[i]=-x^2+2*@ap1*x-2*@ap2*x*y+flip(-@ap3*y^2) elseif @V=="OM 21" vm[i]=x^2-y^2+@ap1*x-@ap2+(1-2*@ap1)*x+y+flip(2*x*y-5*@ap1*y/2+@ap3-2*@ap1*@ap2*x+@ap3*y-2*@ap1*x^3) elseif @V=="OM 22" vm[i]=(1-@ap1*x+@ap2*y)*(-@ap1*x-@ap2*y)+y+sin(x)+flip(x+@ap3-x*y) elseif @V=="OM 23" vm[i]=-@ap1*x+y+1-@ap3*x^2+@ap2*(y-x)+flip(1+@ap1*y^2+@ap2*(x-y)-@ap3+x^2) elseif @V=="OM 24" vm[i]=2*y+x+@ap1*x^2-@ap2*y^2+@ap3*x*y+@ap4+flip(@ap2*x+@ap1*y-y^3) elseif @V=="OM 25" vm[i]=-@ap1*(x-y)*x-@ap2*(x^2-y^2)+@ap3*x^3+flip(-@ap1*x*y+@ap2*y^2+@ap3*x*y^2) elseif @V=="OM 26" vm[i]=y+sin((@ap1-2-1i)*y)+@ap2*cos((@ap1-2-1i)*x)+flip(-sin(x)+y*((@ap1-2-1i)+@ap2*cos((@ap3-1-1i)*x))*(-@ap4)+sin(@ap3*x)+@ap4*cos((@ap3-1-1i)*y)) elseif @V=="Oscillating Chemical Reaction" vm[i]=((@ap1-4.9-1.75i)-x-4*x*y)/(1+x^2)+flip((@ap2-2.2-3.55i)*x*(1-y)/(1+x^2)) elseif @V=="Pendulum" vm[i]=y+flip(-sin(x)+@ap1) elseif @V=="Pendulum Morozov" vm[i]=y+flip(-sin(x)+y*(@ap1+@ap2*cos(@ap3*x))*(-@ap4)) elseif @V=="Pharaoh" vm[i]=-y+@ap1*cos(x)*sin(1-real(pz)^2-y^2)+(@ap3+1i)+flip(x+@ap2*cos(y)*sin(1-x^2-y^2)+(@ap4+1i)) elseif @V=="Pickover 1" vm[i]=sin(@ap1*y)+@ap2*cos(@ap1*x)+flip(sin((@ap3+2-1i)*x)+@ap4*cos((@ap3+2-1i)*y)) elseif @V=="Pickover 2" vm[i]=sin(@ap1*y)+sqr(sin(@ap1*x))+flip(sin(@ap2*x)+sqr(sin(@ap2*y))) elseif @V=="Pickover 3" vm[i]=sin(@ap1*y)+(sin(@ap1*x))^2+(sin(@ap1*x))^3+flip(sin((@ap2-4.3-0.9i)*x)+(sin((@ap2-4.3-0.9i)*y))^2+(sin(@ap3*y))^3) elseif @V=="Pickover 4" vm[i]=abs(sin(@ap1*y))+(sin(@ap1*x))^2+flip(abs(sin(@ap2*x))+(sin(@ap1*y))^2) elseif @V=="Polyharmonic Pendulum" vm[i]=y+flip(-@ap1*sin(x)-@ap2*sin(3*x)+@ap3*sin(@ap4)) elseif @V=="Popcorn 1" vm[i]=@ap1*sin(y+tan(flip(@ap2)*y))+flip(@ap1*sin(x+tan(flip(@ap2)*x))) elseif @V=="Popcorn 2" vm[i]=x-@ap1*sin(y+tan(flip(@ap2)*y))+flip(y-@ap1*sin(x+tan(flip(@ap2)*x))) elseif @V=="Sine" vm[i]=y+flip((@ap1+3)*sin(x)+(@ap2+1)*y) elseif @V=="Sinus Chain" vm[i]=y^2-abs(sin(x)+@ap1*sin(2*x)) elseif @V=="Sprott" vm[i]=(1+@ap1*(@ap2+1.5))*x-(@ap2+1.5)*x*y+flip((1-(@ap2+1.5))*y+(@ap2+1.5)*x^2) elseif @V=="Sprott-Elhadj" vm[i]=(@ap1-3)*x/(1+y^2)+flip(x+(@ap2-1.5-0.25i)*y) elseif @V=="Strelkova-Anishchenko" vm[i]=1-@ap1*x^2+@ap2*(y-x)+flip(1-@ap1*y^2+@ap2*(x-y)) elseif @v=="Svensson" vm[i]=@ap4*sin((@ap1-3)*x)-sin(@ap2*y)+flip(@ap3*cos((@ap1-3)*x)+cos(@ap2*y)) elseif @v=="Tinkerbell" vm[i]=x^2-y^2+@ap1*x+@ap2*y+flip(2*x*y+@ap3*x+@ap4*y) elseif @v=="Ushiki" vm[i]=(@ap1-x-@ap2*y)*x+flip((@ap3-y-@ap4*x)*y) elseif @V=="Van der Pol 1" vm[i]=(@ap1-3)*(x-x^3/3-y)+flip(x/(@ap1-3)) elseif @V=="Van der Pol 2" vm[i]=y+@ap1*x*(2*x^2-sin(pi*x)^2-2)+flip(-x) elseif @V=="Volterra-Lotka" vm[i]=@ap1*x-@ap2*x*y+flip(-@ap3*y+@ap4*x*y) elseif @V=="Zaslavsky" vm[i]=(x+(@ap1-3i)*sin(y))*cos(2*pi/@ap2)+y*sin(2*pi/@ap2)+flip(-(x+(@ap1-3i)*sin(y))*sin(2*pi/@ap2)+y*cos(2*pi/@ap2)) elseif @V=="Zito" vm[i]=x*y-@ap1*x-y+flip(x+y) endif endif if @v2==0 float c=cabs(pz+@vmf(vm[i])) elseif @v2==1 float c=cabs(pz^2+@vmf(vm[i])) elseif @v2==2 float c=cabs(pz+pz^2+@vmf(vm[i])) elseif @v2==3 float c=cabs(pz+tan(pz)+@vmf(vm[i])) elseif @v2==4 float c=cabs(pz+floor(pz)+@vmf(vm[i])) elseif @v2==5 float c=cabs(pz+1/abs(pz)+@vmf(vm[i])) elseif @v2==6 float c=cabs(pz+1/log(pz)+@vmf(vm[i])) elseif @v2==7 float c=cabs(conj(pz)+@vmf(vm[i])) else float c=cabs(pz+pz^2+pz^3+@vmf(vm[i])) endif if c@p7 index=((real(b)+1)%200)/200 else m_Solid=true endif endif else index=((real(b)+1)%200)/200 endif return index endfunc private: float a complex vm[@vmp1] complex b int i float index default: title="Psychbroth Attraktor Valmyst" int param version caption="Version" default=101 visible=@version<101 endparam param v caption="Attraktor" enum="Bogdanov""Bogdanov-Takens""Brusselator""Buckling Column Model"\ "Burgers""Cao-Lai""Cathala""Coupled Logistic""Cremona""Damped Pendulum"\ "de Jong""Duffing""Garrote-Mira""Gingerbread""Hamilton""Hamilton Torus"\ "Henon""Henon-Heiles 1""Henon-Heiles 2""Hopalong"\ "Horsthemke-Lefever""Ikeda""Ilhem-Amel 1""Ilhem-Amel 2""Jiang""Kam Torus""Latoocarfian""Li"\ "Lozi""Marotto-Lorenz""Martin""Mira 1""Mira 2""Mira 3""Mira 4"\ "Modified Chirikov""Modified Lozi""Multifold Henon""Nowicki-Swirszcz""OM 1""OM 2"\ "OM 3""OM 4""OM 5""OM 6""OM 7""OM 8""OM 9""OM 10""OM 11""OM 12""OM 13""OM 14""OM 15"\ "OM 16""OM 17""OM 18""OM 19""OM 20""OM 21""OM 22""OM 23""OM 24""OM 25""OM 26"\ "Oscillating Chemical Reaction""Pendulum""Pendulum Morozov"\ "Pharaoh""Pickover 1""Pickover 2""Pickover 3""Pickover 4"\ "Polyharmonic Pendulum""Popcorn 1""Popcorn 2""Sine""Sinus Chain"\ "Sprott""Sprott-Elhadj""Strelkova-Anishchenko""Svensson""Tinkerbell"\ "Ushiki""Van der Pol 1""Van der Pol 2""Volterra-Lotka""Zaslavsky""Zito" endparam param ap1 caption="Attraktor Parameter" default=(1,0) endparam param ap2 caption="Attraktor Parameter 2" default=(1,0) visible=@v!="Cremona" && @v!="Kam Torus" && @v!="Martin" && @v!="Modified Chirikov" && @v!="OM 8" \ && @v!="Hamilton Torus" && @v!="Pendulum" && @v!="Sinus Chain"\ && @v!="Van der Pol 1" && @v!="Van der Pol 2" && @v!="Zito" endparam param ap3 caption="Attraktor Parameter 3" default=(1,0) visible=@v!="Bogdanov-Takens" && @v!="Burgers" && @v!="Cao-Lai" \ && @v!="Coupled Logistic" && @v!="Cremona" && @v!="Damped Pendulum" && @v!="Duffing" \ && @v!="Garrote-Mira" && @v!="Gingerbread" && @v!="Hamilton" && @v!="Hamilton Torus" \ && @v!="Henon" && @v!="Kam Torus" && @v!="Li" && @v!="Lozi" \ && @v!="Marotto-Lorenz" && @v!="Martin" && @v!="Mira 3" && @v!="Mira 4" \ && @v!="Modified Chirikov" && @v!="Modified Lozi" && @v!="Multifold Henon" && @v!="OM 1" \ && @v!="OM 2" && @v!="OM 3" && @v!="OM 8" && @v!="OM 10" && @v!="Oscillating Chemical Reaction" \ && @v!="Pendulum" && @v!="Pickover 2" && @v!="Pickover 4" \ && @v!="Popcorn 1" && @v!="Popcorn 2" && @v!="Sine" && @v!="Sinus Chain" \ && @v!="Sprott" && @v!="Sprott-Elhadj" && @v!="Strelkova-Anishchenko" \ && @v!="Van der Pol 1" && @v!="Van der Pol 2" && @v!="Zaslavsky" && @v!="Zito" endparam param ap4 caption="Attraktor Parameter 4" default=(1,0) visible=@v=="Buckling Column Model" || @v=="de Jong" || @v=="Henon-Heiles 1" \ || @v=="Horsthemke-Lefever" || @v=="Ikeda" \ || @v=="Ilhem-Amel 2" || @v=="Jiang" || @v=="Latoocarfian" \ || @v=="Nowicki-Swirszcz" || @v=="OM 4" || @v=="OM 5" \ || @v=="OM 6" || @v=="OM 7" || @v=="OM 9" || @v=="OM 24" || @v=="OM 26" \ || @v=="Pendulum Morozov" || @v=="Pharaoh" || @v=="Pickover 1" \ || @v=="Polyharmonic Pendulum" || @v=="Svensson" || @v=="Tinkerbell" \ || @v=="Ushiki" || @v=="Volterra-Lotka" endparam param ap5 caption="Attraktor Parameter 5" default=(1,0) visible=@v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ilhem-Amel 2" endparam param ap6 caption="Attraktor Parameter 6" default=(1,0) visible=@v=="Ilhem-Amel 2" endparam param v2 caption="Variant" enum="1""2""3""4""5""6""7""8""9" endparam param vmp1 caption="Valmyst Parameter" default=6 endparam func vmf caption="Valmyst Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func zf caption="Z Function" default=ident() endfunc param adj caption="Adjustment" default=0.275 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.07 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Alurula(common.ulb:GradientColoring) { ;This is a modification of Fractional Brownian Motion II by Damien Jones (dmj.ucl) public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @version==100 if @F1=="sqr" pz=sqr(pz) elseif @F1=="log" pz=log(pz) elseif @F1=="conj" pz=conj(pz) elseif @F1=="flip" pz=flip(pz) elseif @F1=="ident" pz=ident(pz) else pz=recip(pz) endif else if @F2=="conj" pz=conj(pz) elseif @F2=="flip" pz=flip(pz) else pz=ident(pz) endif endif if @S==true pz=abs(pz) else pz=pz endif x=real(pz) y=imag(pz) if @version==100 if @V=="I" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V=="II" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V=="III" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V=="IV" pz=sin(x)+@Ap1*sin(@Ap2*sin(y))+flip(sin(y)+@Ap3*sin(@Ap4*sin(x))) elseif @V=="V" pz=cos(x)+@Ap1*cos(@Ap2*cos(y))+flip(cos(y)+@Ap3*cos(@Ap4*cos(x))) elseif @V=="VI" pz=tan(x+(0,1))+@Ap1*tan((@Ap2+(0,1))*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*tan((@Ap4+(0,1))*tan(x))) elseif @V=="VII" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V=="VIII" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V=="IX" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V=="X" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V=="XI" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V=="XII" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V=="XIII" pz=sin(x)+@Ap1*sin(@Ap2*sin(y))+flip(sin(y)+@Ap3*cos(@Ap4*sin(x))) elseif @V=="XIV" pz=sin(x)+@Ap1*cos(@Ap2*sin(y))+flip(sin(y)+@Ap3*sin(@Ap4*sin(x))) elseif @V=="XV" pz=cos(x)+@Ap1*sin(@Ap2*cos(y))+flip(cos(y)+@Ap3*cos(@Ap4*cos(x))) elseif @V=="XVI" pz=cos(x)+@Ap1*cos(@Ap2*cos(y))+flip(cos(y)+@Ap3*sin(@Ap4*cos(x))) elseif @V=="XVII" pz=sin(x)+@Ap1*sin(@Ap2*sin(y))+flip(sin(y)+@Ap3*tan((@Ap4+(0,1))*sin(x))) elseif @V=="XVIII" pz=sin(x)+@Ap1*tan((@Ap2+(0,1))*sin(y))+flip(sin(y)+@Ap3*sin(@Ap4*sin(x))) elseif @V=="XIX" pz=tan(x+(0,1))+@Ap1*sin(@Ap2*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*tan((@Ap4+(0,1))*tan(x+(0,1)))) elseif @V=="XX" pz=tan(x+(0,1))+@Ap1*tan((@Ap2+(0,1))*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*sin(@Ap4*tan(x+(0,1)))) elseif @V=="XXI" pz=cos(x)+@Ap1*cos(@Ap2*cos(y))+flip(cos(y)+@Ap3*tan((@Ap4+(0,1))*cos(x))) elseif @V=="XXII" pz=cos(x)+@Ap1*tan((@Ap2+(0,1))*cos(y))+flip(cos(y)+@Ap3*cos(@Ap4*cos(x))) elseif @V=="XXIII" pz=tan(x+(0,1))+@Ap1*cos(@Ap2*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*tan((@Ap4+(0,1))*tan(x+(0,1)))) elseif @V=="XXIV" pz=tan(x+(0,1))+@Ap1*tan((@Ap2+(0,1))*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*cos(@Ap4*tan(x+(0,1)))) elseif @V=="XXV" pz=tan(x+(0,1))+@Ap1*sin(@Ap2*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*cos(@Ap4*tan(x+(0,1)))) elseif @V=="XXVI" pz=tan(x+(0,1))+@Ap1*cos(@Ap2*tan(y+(0,1)))+flip(tan(y+(0,1))+@Ap3*sin(@Ap4*tan(x+(0,1)))) elseif @V=="XXVII" pz=cos(x)+@Ap1*sin(@Ap2*cos(y))+flip(cos(y)+@Ap3*tan((@Ap4+(0,1))*cos(x))) elseif @V=="XXVIII" pz=cos(x)+@Ap1*tan((@Ap2+(0,1))*cos(y))+flip(cos(y)+@Ap3*sin(@Ap4*cos(x))) elseif @V=="XXIX" pz=sin(x)+@Ap1*cos(@Ap2*sin(y))+flip(sin(y)+@Ap3*tan((@Ap4+(0,1))*sin(x))) elseif @V=="XXX" pz=sin(x)+@Ap1*tan((@Ap2+(0,1))*sin(y))+flip(sin(y)+@Ap3*cos(@Ap4*sin(x))) endif else if @V2=="I" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V2=="II" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V2=="III" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V2=="IV" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V2=="V" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V2=="VI" pz=x+@Ap1*sin(@Ap2*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V2=="VII" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*sin(@Ap4*x)) elseif @V2=="VIII" pz=x+@Ap1*cos(@Ap2*y)+flip(y+@Ap3*tan((@Ap4+(0,1))*x)) elseif @V2=="IX" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*cos(@Ap4*x)) elseif @V2=="X" pz=x+@Ap1*tan((@Ap2+(0,1))*y)+flip(y+@Ap3*sin(@Ap4*x)) endif endif float b=1-cabs(pz^@pow1)/16 if b<0 b=0 else b=sqr(b) endif c=pz*@p2+@p3 float d=1.0 int i=@p4 while i>0 float x1=floor(real(c))%256 float y1=floor(imag(c))%256 if x1<0 x1=x1+256 endif if y1<0 y1=y1+256 endif float x2=(x1+1)%256 float y2=(y1+1)%256 float x3=real(c)-floor(real(c)) float y3=imag(c)-floor(imag(c)) float x4=x3-1 float y4=y3-1 float f1=(x1^@pow2%65536+y1)^@pow2%65536 float f2=(x2^@pow2%65536+y1)^@pow2%65536 float f3=(x1^@pow2%65536+y2)^@pow2%65536 float f4=(x2^@pow2%65536+y2)^@pow2%65536 float g1=(f1)^@pow2*0.25%512-256 float g2=(f2)^@pow2*0.25%512-256 float g3=(f3)^@pow2*0.25%512-256 float g4=(f4)^@pow2*0.25%512-256 float g5=(f1+1)^@pow2*0.25%512-256 float g6=(f2+1)^@pow2*0.25%512-256 float g7=(f3+1)^@pow2*0.25%512-256 float g8=(f4+1)^@pow2*0.25%512-256 float h=0.0; h=1/sqrt(sqr(g1)+sqr(g5)) g1=g1*h g5=g5*h h=1/sqrt(sqr(g2)+sqr(g6)) g2=g2*h g6=g6*h h=1/sqrt(sqr(g3)+sqr(g7)) g3=g3*h g7=g7*h h=1/sqrt(sqr(g4)+sqr(g8)) g4=g4*h g8=g8*h float j1=x3*g1+y3*g5 float j2=x4*g2+y3*g6 float j3=x3*g3+y4*g7 float j4=x4*g4+y4*g8 float k1=sqr(x3)*(3-x3*2) float k2=sqr(y3)*(3-y3*2) float k3=j1+k1*(j2-j1) float k4=j3+k1*(j4-j3) if @version==100 if @fn=="abs" a=a+real(abs(k3+k2*(k4-k3)))*d*b elseif @fn=="acos ceil" a=a+real(acos(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="acos recip" a=a+real(acos(recip(k3+k2*(k4-k3))))*d*b elseif @fn=="asin ceil" a=a+real(asin(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="atanh log" a=a+real(atanh(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cabs sqrt" a=a+real(cabs(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="ceil" a=a+real(ceil(k3+k2*(k4-k3)))*d*b elseif @fn=="ceil log" a=a+real(ceil(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cos log" a=a+real(cos(log(k3+k2*(k4-k3))))*d*b elseif @fn=="cotanh sqrt" a=a+real(cotanh(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="exp" a=a+real(exp(k3+k2*(k4-k3)))*d*b elseif @fn=="exp acos" a=a+real(exp(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="exp ceil" a=a+real(exp(ceil(k3+k2*(k4-k3))))*d*b elseif @fn=="exp exp" a=a+real(exp(exp(k3+k2*(k4-k3))))*d*b elseif @fn=="flip log" a=a+real(flip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="flip sqrt" a=a+real(flip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="floor" a=a+real(floor(k3+k2*(k4-k3)))*d*b elseif @fn=="floor log" a=a+real(floor(log(k3+k2*(k4-k3))))*d*b elseif @fn=="ident" a=a+real(k3+k2*(k4-k3))*d*b elseif @fn=="log" a=a+real(log(k3+k2*(k4-k3)))*d*b elseif @fn=="log acos" a=a+real(log(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="log log" a=a+real(log(log(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqr" a=a+real(log(sqr(k3+k2*(k4-k3))))*d*b elseif @fn=="log sqrt" a=a+real(log(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="recip log" a=a+real(recip(log(k3+k2*(k4-k3))))*d*b elseif @fn=="recip sqrt" a=a+real(recip(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="round log" a=a+real(round(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqr log" a=a+real(sqr(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt" a=a+real(sqrt(k3+k2*(k4-k3)))*d*b elseif @fn=="sqrt acos" a=a+real(sqrt(acos(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt log" a=a+real(sqrt(log(k3+k2*(k4-k3))))*d*b elseif @fn=="sqrt sqrt" a=a+real(sqrt(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn=="trunc log" a=a+real(trunc(log(k3+k2*(k4-k3))))*d*b endif else if @fn2=="abs" a=a+real(abs(k3+k2*(k4-k3)))*d*b elseif @fn2=="atanh log" a=a+real(atanh(log(k3+k2*(k4-k3))))*d*b elseif @fn2=="cabs sqrt" a=a+real(cabs(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn2=="exp" a=a+real(exp(k3+k2*(k4-k3)))*d*b elseif @fn2=="exp exp" a=a+real(exp(exp(k3+k2*(k4-k3))))*d*b elseif @fn2=="exp exp exp" a=a+real(exp(exp(exp(k3+k2*(k4-k3)))))*d*b elseif @fn2=="exp exp sqrt" a=a+real(exp(exp(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn2=="ident" a=a+real(k3+k2*(k4-k3))*d*b elseif @fn2=="log" a=a+real(log(k3+k2*(k4-k3)))*d*b elseif @fn2=="log acos" a=a+real(log(acos(k3+k2*(k4-k3))))*d*b elseif @fn2=="log log" a=a+real(log(log(k3+k2*(k4-k3))))*d*b elseif @fn2=="log log log" a=a+real(log(log(log(k3+k2*(k4-k3)))))*d*b elseif @fn2=="log log sqrt" a=a+real(log(log(sqrt(k3+k2*(k4-k3)))))*d*b elseif @fn2=="log log sqr" a=a+real(log(log(sqr(k3+k2*(k4-k3)))))*d*b elseif @fn2=="log sqr" a=a+real(log(sqr(k3+k2*(k4-k3))))*d*b elseif @fn2=="log sqrt" a=a+real(log(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn2=="recip log" a=a+real(recip(log(k3+k2*(k4-k3))))*d*b elseif @fn2=="sqrt" a=a+real(sqrt(k3+k2*(k4-k3)))*d*b elseif @fn2=="sqrt sqrt" a=a+real(sqrt(sqrt(k3+k2*(k4-k3))))*d*b elseif @fn2=="sqrt exp" a=a+real(sqrt(exp(k3+k2*(k4-k3))))*d*b elseif @fn2=="sqr exp exp" a=a+real(sqr(exp(exp(k3+k2*(k4-k3)))))*d*b else a=a+real(recip(sqr(log(k3+k2*(k4-k3)))))*d*b endif endif d=d*0.5 c=c/0.5 i=i-1 endwhile endfunc float func ResultIndex(complex pz) if @solid if @invert if (log(a)+@p7)*@p8<@p9 index=(log(a)+@p7)*@p8 else m_Solid=true endif else if (log(a)+@p7)*@p8>@p9 index=(log(a)+@p7)*@p8 else m_Solid=true endif endif else index=(log(a)+@p7)*@p8 endif return index endfunc private: float a float index default: title="Alurula" int param version caption="Version" default=101 visible=@version<101 endparam param fn2 caption="Alurula Function" enum="abs"\ "atanh log"\ "cabs sqrt"\ "exp""exp exp""exp exp exp""exp exp sqrt"\ "ident""log""log acos"\ "log log""log log log""log log sqrt""log log sqr"\ "log sqr""log sqrt"\ "recip log"\ "sqrt"\ "sqrt sqrt""sqrt exp""sqr exp exp""recip sqr log" default=8 visible=@version==101 endparam param V2 caption="Z Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X" visible=@version==101 endparam param F2 caption="Z Function" enum="conj""flip""ident" visible=@version==101 endparam param fn caption="Alurula Function" enum="abs"\ "acos ceil"\ "acos recip"\ "asin ceil""atanh log"\ "cabs sqrt""ceil""ceil log""cos log"\ "cotanh sqrt""exp""exp acos""exp ceil""exp exp"\ "flip log""flip sqrt""floor""floor log"\ "ident""log""log acos"\ "log log"\ "log sqr""log sqrt"\ "recip log""recip sqrt"\ "round log"\ "sqr log"\ "sqrt"\ "sqrt acos"\ "sqrt log"\ "sqrt sqrt"\ "trunc log" default=19 visible=@version==100 endparam param p2 caption="Alurula Parameter 1" default=(1,0) endparam param p3 caption="Alurula Parameter 2" default=(0,0) endparam param V caption="Z Variant" enum="I""II""III""IV""V""VI""VII""VIII""IX""X""XI""XII"\ "XIII""XIV""XV""XVI""XVII""XVIII""XIX""XX""XXI""XXII""XXIII""XXIV"\ "XXV""XXVI""XXVII""XXVIII""XXIX""XXX" default=0 visible=@version==100 endparam param Ap1 caption="Z Parameter 1" default=(1,0) endparam param Ap2 caption="Z Parameter 2" default=(1,0) endparam param Ap3 caption="Z Parameter 3" default=(1,0) endparam param Ap4 caption="Z Parameter 4" default=(1,0) endparam param F1 caption="Z Function" enum="sqr""log""conj""flip""ident""recip" default=4 visible=@version==100 endparam param p7 caption="Adjustment 1" default=1.0 endparam param p8 caption="Adjustment 2" default=0.5 endparam param pow1 caption="Exponent 1" default=1.0 endparam param pow2 caption="Exponent 2" default=2.0 endparam param p4 caption="Iterations" default=1 min=1 endparam param S caption="Symmetrize" default=false endparam param solid caption="Solid Color" default=false endparam param p9 caption="Solid Color Adjustment" default=1.3 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_PipodiMacku(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=1e20 b=0.0 c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @version==100 if @F=="half" pz=pz/2 elseif @F=="crd" pz=2*sin(pz/2) elseif @F=="acrd" pz=2*asin(pz/2) elseif @F=="gd" pz=asin(tanh(pz)) elseif @F=="agd" pz=asinh(tan(pz)) elseif @F=="sin" pz=sin(pz) elseif @F=="sinh" pz=sinh(pz) elseif @F=="asin" pz=asin(pz) elseif @F=="asinh" pz=asinh(pz) elseif @F=="tan" pz=tan(pz) elseif @F=="tanh" pz=tanh(pz) elseif @F=="atan" pz=atan(pz) elseif @F=="atanh" pz=atanh(pz) elseif @F=="sqr" pz=sqr(pz) elseif @F=="sqrt" pz=sqrt(pz) elseif @F=="conj" pz=conj(pz) elseif @F=="flip" pz=flip(pz) elseif @F=="ident" pz=ident(pz) endif else if @F2=="ident" pz=pz elseif @F2=="flip" pz=flip(pz) elseif @F2=="flip sqr" pz=flip(sqr(pz)) elseif @F2=="flip+conj" pz=flip(pz)+conj(pz) elseif @F2=="flip-conj" pz=flip(pz)-conj(pz) elseif @F2=="flip*cabs" pz=flip(pz)*cabs(pz) elseif @F2=="flip*abs" pz=flip(pz)*abs(pz) elseif @F2=="flip*sqr" pz=flip(pz)*sqr(pz) elseif @F2=="flip+conj+sqr" pz=flip(pz)+conj(pz)+sqr(pz) elseif @F2=="flip+cabs+sqr" pz=flip(pz)+cabs(pz)+sqr(pz) elseif @F2=="conj-flip" pz=conj(pz)-flip(pz) elseif @F2=="conj*cabs" pz=conj(pz)*cabs(pz) elseif @F2=="conj*abs" pz=conj(pz)*abs(pz) elseif @F2=="conj*sqr" pz=conj(pz)*sqr(pz) elseif @F2=="abs+cabs+sqr" pz=abs(pz)+cabs(pz)+sqr(pz) elseif @F2=="log" pz=log(pz) elseif @F2=="log flip" pz=log(flip(pz)) elseif @F2=="sqr" pz=sqr(pz) elseif @F2=="+sqr" pz=pz+sqr(pz) elseif @F2=="-sqr" pz=pz-sqr(pz) elseif @F2=="sqr+flip" pz=sqr(pz)+flip(pz) elseif @F2=="sqr+conj" pz=sqr(pz)+conj(pz) elseif @F2=="sqr+cabs" pz=sqr(pz)+cabs(pz) elseif @F2=="sqr+abs" pz=sqr(pz)+abs(pz) elseif @F2=="sqr-flip" pz=sqr(pz)-flip(pz) elseif @F2=="sqr-conj" pz=sqr(pz)-conj(pz) elseif @F2=="sqr-cabs" pz=sqr(pz)-cabs(pz) else pz=sqr(pz)-abs(pz) endif endif if @S==true pz=abs(pz) else pz=pz endif float x=real(pz) float y=imag(pz) if @version==100 if @V=="Hamilton Torus" pz=-sin(y)*(1-@p1)+flip(sin(x)*(1+@p1)) elseif @V=="Kam Torus" pz=x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)) elseif @V=="Kaplan-Yorke" pz=real(@p1)*x%1+flip(-@p2*y+cos(2*pi*x)) elseif @V=="Latoocarfian" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="OM1" pz=sin(@p1*x)-tan(@p2*y)+flip(tan(@p3*x)+sin(@p4*y)) elseif @V=="OM2" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) elseif @V=="OM3" pz=x+y+(@p1/2*pi)*sin(2*pi*x)+flip(x+y+(@p1/2*pi)*sin(2*pi*x)-x) elseif @V=="OM4" pz=flip(y)+flip(atanh(x)+y*(@p1-y^2)) elseif @V=="OM5" pz=x+@p1*@p2*cos(2*pi*y)+flip(y-(@p1/@p2)*cos(2*pi*(x+@p1*@p2*asinh(2*pi*y)))) elseif @V=="OM6" pz=x+@p1*@p2*cotan(2*pi*y)+flip(y-(@p1/@p2)*cotan(2*pi*(x+@p1*@p2*cotanh(2*pi*y)))) elseif @V=="OM7" pz=@p1*x*cotan(x)-y*log(x)+flip(@p2*y*sqr(x)) elseif @V=="OM8" pz=x-y-cotan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)) elseif @V=="OM9" pz=tan(@p1*y)+(tan(@p1*x))^2+flip(tan(@p2*x)+(tan(@p2*y))^2) elseif @V=="OM10" pz=cabs(flip(@p1*y))+(flip(@p1*x))^2+flip(cabs(flip(@p2*x))+(flip(@p2*y))^2) elseif @V=="OM11" pz=flip(@p1*y)+@p2*sin(@p1*x)+flip(flip(@p3*x)+@p4*sin(@p3*y)) elseif @V=="OM12" pz=sin(@p1*y)+@p2*flip(@p1*x)+flip(sin(@p3*x)+@p4*flip(@p3*y)) elseif @V=="OM13" pz=tan(@p1*y)+@p2*tan(@p1*x)+flip(tan(@p3*x)+@p4*tan(@p3*y)) elseif @V=="OM14" pz=sin(@p1*y)+@p2*tan(@p1*x)+flip(sin(@p3*x)+@p4*tan(@p3*y)) elseif @V=="OM15" pz=abs(@p1*y)+@p2*sin(@p1*x)+flip(abs(@p3*x)+@p4*sin(@p3*y)) elseif @V=="OM16" pz=sin(@p1*y)+@p2*tan(@p1*x)+flip(tan(@p3*x)+@p4*flip(@p3*y)) elseif @V=="OM17" pz=real(@p1)*x%1+flip(-@p2*y+tan(2*pi*x)) elseif @V=="OM18" pz=x+y+(@p1/2*pi)*conj(2*pi*x)+flip(x+y+(@p1/2*pi)*sin(2*pi*x)-x) elseif @V=="OM19" pz=x+y+(@p1/2*pi)*sin(2*pi*x)+flip(x+y+(@p1/2*pi)*tan(2*pi*x)-x) elseif @V=="OM20" pz=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*cosh(2*pi*(x+@p1*@p2*sin(2*pi*y)))) elseif @V=="OM21" pz=x+@p1*@p2*tan(2*pi*y)+flip(y-(@p1/@p2)*tan(2*pi*(x+@p1*@p2*tan(2*pi*y)))) elseif @V=="OM22" pz=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*cos(2*pi*(x+@p1*@p2*tan(2*pi*y)))) elseif @V=="OM23" pz=@p1*sin(@p2*x)-sin(@p3*y)+flip(@p4*sin(@p2*x)-sin(@p3*y)) elseif @V=="OM24" pz=@p1*sin(@p2*x)-sin(@p3*y)+flip(@p4*tan(@p2*x)-tan(@p3*y)) elseif @V=="OM25" pz=@p1*sin(@p2*x)-sqr(@p3*y)+flip(@p4*sin(@p2*x)-sqr(@p3*y)) elseif @V=="OM26" pz=@p1*sin(@p2*x)-sqr(@p3*y)+flip(@p4*sin(@p2*x)- flip(@p3*y)) elseif @V=="OM27" pz=@p1*sin(@p2*x)-sin(@p3*y)+flip(@p4*sqr(@p2*x)-sin(@p3*y)) elseif @V=="Pendulum" pz=y+flip(-sin(x)+@p1) elseif @V=="Pendulum Damped" pz=y+flip(-@p1*sin(x)-@p2*y) elseif @V=="Pendulum Morozov" pz=y+flip(-sin(x)+y*(@p1+@p2*cos(@p3*x))*(-@p4)) elseif @V=="Pendulum Polyharmonic" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Pickover" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*x))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p3*y))^3) elseif @V=="Pickover 2" pz=sin(@p1*y)+(sin(@p1*x))^2+flip(sin(@p2*x)+(sin(@p2*y))^2) elseif @V=="Pickover 3" pz=cabs(sin(@p1*y))+(sin(@p1*x))^2+flip(cabs(sin(@p2*x))+(sin(@p2*y))^2) elseif @V=="Popcorn" pz=x-@p1*sin(y+tan(flip(@p2)*y))+flip(y-@p1*sin(x+tan(flip(@p2)*x))) elseif @V=="Svensson" pz=@p1*sin(@p2*x)-sin(@p3*y)+flip(@p4*cos(@p2*x)-cos(@p3*y)) endif else if @V2=="1" pz=(@p1b-2)*x+x*y+(@p2b-2)*y^2+flip((@p3b+1)*(x-y)+(@p4b-3)*x*y) elseif @V2=="2" pz=x-@p1b*x*y-x^2-@p2b*y+flip(-@p3b-@p4b*(x+y)) elseif @V2=="3" pz=x-@p1b*x*y-x^2+flip(-@p2b*y+@p3b-@p4b*(x+y^3)) elseif @V2=="4" pz=(x^2+y^3+@p3b*x-@p2b)^2*(y^2+x-(@p1b+1i))+flip(4*@p4b*(x*(x-(@p1b+1i))+y^2)^2) elseif @V2=="5" pz=y-@p1b*x^3+flip(-@p2b*x^2*y-@p3b*x*y^2-@p4b*y^3) elseif @V2=="6" pz=@p1b*x+flip(@p2b+@p3b*(x^2-y^2)+@p4b*(x-y)) elseif @V2=="7" pz=x+y+(@p1b-2.5)*sin(@p3b*x)+flip(x+y+@p2b*sin(@p4b*x)-x) elseif @V2=="8" pz=abs(x)-@p1b*y-y^2+@p2b*x*y+flip(@p3b*x^2-@p4b*y) elseif @V2=="9" pz=x+@p1b*@p2b*y+flip(y-(@p1b/@p3b)*cos(x+@p2b*@p4b*y)) elseif @V2=="10" pz=-@p1b*sqr(1-x)+@p2b*(1+y^2)+flip(@p3b*(@p4b*y+x^2)) elseif @V2=="11" pz=(x*(-@p1b-x^2)-@p2b*x*y)/(1+x^2)+flip(sqr(-@p3b*x^2-1)*y/(@p4b+x^2)) elseif @V2=="12" pz=@p4b*y+flip(-(x+@p2b*y^3-@p1b*y)/@p3b) elseif @V2=="13" pz=1-@p1b*x^2-@p2b*(y-x)+flip(1-@p3b*y^2+@p4b*(x-y)) elseif @V2=="14" pz=-@p1b*x-@p2b*(x*y)+flip(-@p3b*y+@p4b*(x*y)) elseif @V2=="15" pz=flip(@p1b*y)-@p2b*sin(@p1b*x)+flip(flip(-@p3b*x)+@p4b*sin(-@p3b*y)) elseif @V2=="16" pz=sin(@p1b*y)-@p2b*flip(@p1b*x)+flip(sin((@p3b+1i)*x)+@p4b*flip((@p3b+1i)*y)) elseif @V2=="17" pz=@p1b*x*(1-x+@p2b*y)+flip(@p3b*y*(1-y-@p4b*x)) elseif @V2=="18" pz=@p1b*x*cosh(1-x+@p2b*y)+flip(@p3b*y*sin(1-y-@p4b*x)) elseif @V2=="19" pz=x*y+@p1b*x-y+(x+@p2b*sin(y))*cos(@p3b)+y*sin(@p4b)+flip(-(2*x+@p1b*sin(y)+y)*sin(@p2b)+y*cos(@p3b)) elseif @V2=="20" pz=x*y+@p1b*x-y+sqr(x+@p2b*sqr(y))*cos(@p3b)+y*sin(@p4b)+flip(-(2*x+@p1b*sin(y)+y)*sin(@p2b)+y*cos(@p3b)) elseif @V2=="21" pz=(@p1b+1i)*x*(1-x)-@p3b*x^3+y+flip(@p2b*x*sqr(2*pi*y)/(2*pi)-(@p1b+1i)*x+@p4b) elseif @V2=="22" pz=1-@p1b*x^2-@p2b*(y^2-x^2)+y-@p1b*cabs(x)+flip(1-@p4b*y^2-@p2b*sin(x^2-y^2)+@p3b*x) elseif @V2=="23" pz=-@p1b*y+flip(-@p2b*x^4-@p3b*y+@p4b) elseif @V2=="24" pz=x+@p1b*sin(y)+@p3b*sin(x)-sin(2*y)+flip(y+2*@p4b*x-@p2b*sin(y)) elseif @V2=="25" pz=@p1b*x-@p2b*sqr(x*y)+flip(-@p3b*sin(x^2*y)-@p4b*sqr(x^2-y^2)) elseif @V2=="26" pz=2*y+@p3b*x+flip(-@p1b*sin(x)+@p2b*y+@p4b/2+x^2) elseif @V2=="27" pz=-@p1b*x+y+(-@p1b-x-@p2b*y)*x+flip(@p2b+x^2+(@p3b-y-@p4b*x)*y) elseif @V2=="28" pz=1-@p1b*x^2-@p2b*(y^2-x^2)+y-@p1b*cabs(x)+flip(y+2*@p4b*x-@p3b*sin(y)) elseif @V2=="29" pz=-@p1b*x+x*y-@p2b*y^2+flip(-@p3b-@p4b*(x+y)) elseif @V2=="30" pz=((@p1b-1.15-2i)-x-4*x*y)+@p3b*x^2+flip(@p2b*(@p4b-y)+x^3) elseif @V2=="31" pz=x-@p1b*sin(y+tan(flip(@p2b)*y))+flip(y-@p3b*sin(x+tan(flip(@p4b)*x))) elseif @V2=="32" pz=x-@p1b*sqr(y+abs(flip(@p2b)*y))+flip(y-@p3b*sqr(x+flip(flip(@p4b)*x))) elseif @V2=="33" pz=@p1b*x*(0.5-2*x+@p2b*y)+flip(@p3b*y*(1.5-3*y+@p4b*x)) elseif @V2=="34" pz=abs((@p1b+1i)*y)+(@p2b+1i)*abs((@p1b+1i)*x)+flip(sin(-@p3b*x)+@p4b*(-@p3b*y)) elseif @V2=="35" pz=cos(@p1b*y)+@p2b*(@p1b*x)+flip(sqr(@p3b*x)+@p4b*flip(@p3b*y)) elseif @V2=="36" pz=(@p1b*y)+@p2b*sqr(@p1b*x)+flip(flip(@p3b*x)+@p4b*sqr(@p3b*y)) elseif @V2=="37" pz=@p2b*y+@p1b*x+2*(0.5-@p3b)*x^2/(1+x^2)\ +flip(-x-@p4b*(@p2b*y+@p1b*x+2*(0.5-@p3b)*x^2/(1+x^2))\ +2*(0.5+@p4b)*(@p2b*y+@p1b*x+2*(0.5-@p3b)*x^2/(1+(-@p4b*y\ +@p1b*x+2*(0.5-@p2b)*x^2/(1+x^2))^2))^2/(1+x^2)) elseif @V2=="38" pz=@p1b*(x-x^3/3-y)+@p4b*x*y+flip(@p2b*(1-x^2)*y-x+x/@p3b) elseif @V2=="39" pz=@p3b*(y+sqr(@p1b*y))+flip(@p4b*(x+(@p2b*x))) elseif @V2=="40" pz=@p3b*(y+sqr(@p1b*y^2))+flip(-(@p4b+1i)*sqr(x+((@p2b+1i)*x^2))) endif endif pz=real(pz)+1i*imag(pz) pz=-pz*1i c=atan2(pz) c=-(2*pi)*round(3*c/(2*pi))/3 pz=pz*exp(1i*c) b=abs(real(pz)) if b@p7 m_Solid=true endif endif index=a else index=a endif return index endfunc private: float a float b float c float index default: title="Pipodi Macku" int param version caption="Version" default=101 visible=@version<101 endparam param V2 caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12"\ "13""14""15""16""17""18""19""20""21""22""23""24""25""26""27""28""29""30""31""32"\ "33""34""35""36""37""38""39""40" default=0 visible=@version==101 endparam param p1b caption="Variant Parameter 1" default=(1,0) visible=@version==101 endparam param p2b caption="Variant Parameter 2" default=(1,0) visible=@version==101 endparam param p3b caption="Variant Parameter 3" default=(1,0) visible=@version==101 endparam param p4b caption="Variant Parameter 4" default=(1,0) visible=@version==101 endparam param F2 caption="Function" enum="ident""flip""flip sqr""flip+conj""flip-conj""flip*cabs""flip*abs"\ "flip*sqr""flip+conj+sqr""flip+cabs+sqr""conj-flip""conj*cabs""conj*abs"\ "conj*sqr""abs+cabs+sqr""log""log flip""sqr""+sqr""-sqr"\ "sqr+flip""sqr+conj""sqr+cabs""sqr+abs""sqr-flip""sqr-conj""sqr-cabs""sqr-abs" visible=@version==101 endparam param V caption="Variant" enum="Hamilton Torus""Kam Torus""Kaplan-Yorke""Latoocarfian""OM1""OM2""OM3""OM4""OM5""OM6""OM7""OM8"\ "OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22""OM23""OM24""OM25""OM26""OM27""Pendulum"\ "Pendulum Damped""Pendulum Morozov""Pendulum Polyharmonic""Pickover""Pickover 2""Pickover 3""Popcorn""Svensson" default=0 visible=@version==100 endparam param F caption="Function" enum="half""crd""acrd""gd""agd""sin""sinh""asin""asinh""tan""tanh""atan""atanh""sqr""sqrt""conj""flip""ident" default=17 visible=@version==100 endparam param p1 caption="Variant Parameter" default=(-0.1,0) visible=@version==100 endparam param p2 caption="Variant Parameter 2" default=(1.4,0) visible=@V=="Kaplan-Yorke" || @V=="Latoocarfian" || @V=="OM1" || @V=="OM2" || @V=="OM5" || @V=="OM6" || @V=="OM7" || @V=="OM8" \ || @V=="OM9" || @V=="OM10" || @V=="OM11" || @V=="OM12" || @V=="OM13" || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" || @V=="OM20" \ || @V=="OM21" || @V=="OM22" || @V=="OM23" || @V=="OM24"|| @V=="OM25" || @V=="OM26" || @V=="OM27" || @V=="Pendulum Damped" || @V=="Pendulum Morozov" \ || @V=="Pendulum Polyharmonic" || @V=="Pickover" || @V=="Pickover 2" || @V=="Pickover 3" || @V=="Popcorn" || @V=="Svensson" visible=@version==100 endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Latoocarfian" || @V=="OM1" || @V=="OM8" || @V=="OM11" || @V=="OM12" || @V=="OM13" || @V=="OM14" || @V=="OM15" || @V=="OM16" \ || @V=="OM23" || @V=="OM24"|| @V=="OM25" || @V=="OM26" || @V=="OM27" || @V=="Pendulum Morozov" || @V=="Pendulum Polyharmonic" \ || @V=="Pickover" || @V=="Svensson" visible=@version==100 endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Latoocarfian" || @V=="OM1" || @V=="OM8" || @V=="OM11" || @V=="OM12" || @V=="OM13" || @V=="OM14" || @V=="OM15" || @V=="OM16" \ || @V=="OM23" || @V=="OM24"|| @V=="OM25" || @V=="OM26" || @V=="OM27" || @V=="Pendulum Morozov" || @V=="Pendulum Polyharmonic" || @V=="Svensson" visible=@version==100 endparam param S caption="Symmetrize" default=false endparam param solid caption="Solid Color" default=true endparam param p7 caption="Solid Color Adjustment" default=1.0 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_BivarX71(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp z2=@sp c=@sf(fpixel) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) pz=(pz^3*c)/(pz*c-1)+@p1 z2=(z2^3*c)/(z2*c-1)+@p1 a=z2 z2=z2^2+@bp1*pz pz=pz^2+@bp2*a return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 71" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="X Parameter" default=(0.5,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Abriskura(common.ulb:GradientColoring) { ;A modification of Squiggles Coloring by Paul Carson (pwc.ucl) public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=real(@adj3) b=imag(@adj3) c=(b-1)/@adj1 d=0.0 i=0 f=254 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=fn1(pz) float x=real(pz) float y=imag(pz) if @version==100 if @V=="Bogdanov" pz=x+y+@p1*y+@p2*x*(x-1)+@p3*x*y+flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y) elseif @V=="Cayley" pz=@p1*(pz-sqrt(-1))/(pz+sqrt(-1))+@p2 elseif @V=="Circle Map" pz=pz+@p1-(@p2/(2*pi))*sin(2*pi*pz) elseif @V=="Clifford" pz=sin(@p1*y)+@p2*cos(@p1*x)+flip(sin(@p3*x)+@p4*cos(@p3*y)) elseif @V=="de Jong" pz=sin(@p1*y)-cos(@p2*x)+flip(sin(@p3*x)-cos(@p4*y)) elseif @V=="Gauss Map" pz=exp(-@p1*pz^2)+@p2 elseif @V=="Hamilton Torus" pz=-sin(y)*(1-(@p1-0.5))+flip(sin(x)*(1+(@p1-0.5))) elseif @V=="Hopalong" pz=y-sqrt(cabs(@p2*x-@p3))*x/cabs(x)+flip(@p1-x) elseif @V=="Inkle" pz=@p1*conj(@p1/(pz+@p2))+@p2 elseif @V=="Latoocarfian" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Logistic Map" pz=@p1*pz*(1-pz) elseif @V=="Magus 1" pz=@p1*x^2-y*x+flip(@p2*y*x) elseif @V=="Magus 2" pz=(x*(1-x)+y*atanh(@p1-x)/(@p1+x))/@p2+flip(x-y) elseif @V=="Magus 3" pz=(x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))+flip((x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))-(x%(2*pi))) elseif @V=="Magus 4" pz=x-y-cos(x)*(@p1*x^2+@p2*y^2)+flip(x+y-y*(@p3*x^2+@p4*y^2)) elseif @V=="Magus 5" pz=-@p3*(@p1*(y-flip(x)^2)-y+@p2*(x+flip(y))) elseif @V=="Magus 6" pz=x-y-sin(x)*(@p1*x^2+@p2*y^2)+flip(x+y-sin(y)*(@p3*x^2+@p4*y^2)) elseif @V=="Magus 7" pz=(1/3)*(-(pi+1)*x+@p1-@p2+(x+flip(y))*y+((1-@p1)*(x^2-y)^2)+(2*(@p1+@p2-(x+flip(y))))*x*y)*(1/(3*sqrt(x^2+y^2))) \ +flip((1/3)*((@p2-@p1-(x+flip(y)))*x-(@p1+1)*y)+((2*(@p1-1))*x*y+(@p1+@p2-(x+flip(y)))*(x^2-y^2))*(1/(3*sqrt(x^2+y^2)))) elseif @V=="Magus 8" pz=@p1*x*cotan(x)-y*log(x)+flip(@p2*y*sqr(x)) elseif @V=="Magus 9" pz=x+@p1*@p2*sin(2*pi*y)+flip(y-(@p1/@p2)*sin(2*pi*(x+@p1*@p2*2*pi*y))) elseif @V=="Magus 10" pz=x+@p1*@p2*cotan(2*pi*y)+flip(y-(@p1/@p2)*cotan(2*pi*(x+@p1*@p2*cotanh(2*pi*y)))) elseif @V=="Magus 11" pz=x-y-cotan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)) elseif @V=="Magus 12" pz=sin(y)+flip(sin(x)+y*(@p1-y^2)) elseif @V=="Magus 13" pz=flip(y)+flip(atanh(x)+y*(@p1-y^2)) elseif @V=="Magus 14" pz=x+@p1*y^2+flip(x)^3+flip(y-@p2*x^2+flip(y)^3) elseif @V=="Magus 15" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) elseif @V=="Magus 16" pz=sin(@p1*x)-tan(@p2*y)+flip(tan(@p3*x)+sin(@p4*y)) elseif @V=="Magus 17" pz=@p1*sin(x)-tan(y)-sin(x+flip(y))+flip(-@p2*tan(x)+sin(y)+sin(x+flip(y))) elseif @V=="Magus 18" pz=(@p1*tan(y)-@p2)/(@p1*tan(x)+@p2)+flip((@p1*tan(x)-@p2)/(@p1*tan(y)+@p2)) elseif @V=="Magus 19" pz=(@p1*cos(y)-@p2)/(@p1*tan(x)+@p2)+flip((@p1*cos(x)-@p2)/(@p1*tan(y)+@p2)) elseif @V=="Magus 20" pz=(@p1*exp(y)-@p2)/(@p1*x+@p2)+flip((@p1*exp(x)-@p2)/(@p1*y+@p2)) elseif @V=="Magus 21" pz=x-sin(y+@p1*sin(@p2*y+@p3*sin(@p4*y)))+flip(y-sin(x+@p1*sin(@p2*x+@p3*sin(@p4*x)))) elseif @V=="Magus 22" pz=x-(@p1/2)*real(sin(y+sin(@p2*(y+sin(@p3*y)))))+flip(y+(@p1/2)*real(sin(x+sin(@p2*(x+sin(@p3*x)))))) elseif @V=="Magus 23" pz=@p1*(pz^3+2*pz^2+3*pz)+@p2 elseif @V=="Magus 24" pz=@p1*sin(y)-@p2*sin(x*y)+flip(@p1*sin(x)+@p2*sin(x*y)) elseif @V=="Martin" pz=y+sin(x)+flip(@p1-x) elseif @V=="Munster" pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz) elseif @V=="Polyharmonic Pendulum" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Popcorn" pz=x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))) elseif @V=="Sprott-Elhadj" pz=@p1*x/(1+y^2)+flip(x+@p2*y) elseif @V=="Standard Map" pz=x+@p1*y-@p2+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y-@p2+(@p3/(2*pi))*sin(2*pi*x)) elseif @V=="Svensson" pz=@p1*sin(@p2*x)-sin(@p3*y)+flip(@p4*cos(@p2*x)-cos(@p3*y)) elseif @V=="Tinkerbell" pz=x^2-y^2+@p1*x+@p2*y+flip(2*x*y-@p3*x+@p4*y) elseif @V=="z" pz=@p1*pz+@p2 elseif @V=="z^2" pz=@p1*pz^2+@p2 elseif @V=="z^3" pz=@p1*pz^3+@p2 else pz=@p1*(pz-1)/(pz+1)+@p2 endif float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) else if @Vb=="Bogdanov" pz=x+y+@p1b*y+@p2b*x*(x-1)+@p3b*x*y+flip(y+@p1b*y+@p2b*x*(x-1)+@p3b*x*y) elseif @Vb=="Cayley" pz=@p1b*(pz-sqrt(-1))/(pz+sqrt(-1))+@p2b elseif @Vb=="Circle Map" pz=pz+@p1b-(@p2b/(2*pi))*sin(2*pi*pz) elseif @Vb=="Duffing" pz=y+flip(x-x^3-@p1b*y+@p2b) elseif @Vb=="Gingerbread" pz=1-@p1b*y+@p2b*cabs(x)+flip(x) elseif @Vb=="Hopalong" pz=y-sqrt(cabs(@p2b*x-@p3b))*x/cabs(x)+flip(@p1b-x) elseif @Vb=="Logistic Map" pz=@p1b*pz*(1-pz) elseif @Vb=="Lozi" pz=1+y-@p1b*cabs(x)+flip(@p2b*x) elseif @Vb=="Magnet" pz=((pz^2+@p1b-1)/(2*pz+@p1b-2))^2 elseif @Vb=="Magus 1" pz=@p1b*x^2-y*x+flip(@p2b*y*x) elseif @Vb=="Magus 2" pz=(x*(1-x)+y*atanh(@p1b-x)/(@p1b+x))/@p2b+flip(x-y) elseif @Vb=="Magus 3" pz=x+y+(@p1b-2i)*sin(x)+flip(y+(@p1b-2i)*sin(x)) elseif @Vb=="Magus 4" pz=x-y-cos(x)*(@p1b*x^2+@p2b*y^2)+flip(x+y-y*(@p3b*x^2+@p4b*y^2)) elseif @Vb=="Magus 5" pz=-@p3b*(@p1b*(y-flip(x)^2)-y+@p2b*(x+flip(y))) elseif @Vb=="Magus 6" pz=x-y-sin(x)*(@p1b*x^2+@p2b*y^2)+flip(x+y-sin(y)*(@p3b*x^2+@p4b*y^2)) elseif @Vb=="Magus 7" pz=(1/3)*(-(pi+1)*x+@p1b-@p2b+(x+flip(y))*y+((1-@p1b)*(x^2-y)^2)+(2*(@p1b+@p2b-(x+flip(y))))*x*y)*(1/(3*sqrt(x^2+y^2))) \ +flip((1/3)*((@p2b-@p1b-(x+flip(y)))*x-(@p1b+1)*y)+((2*(@p1b-1))*x*y+(@p1b+@p2b-(x+flip(y)))*(x^2-y^2))*(1/(3*sqrt(x^2+y^2)))) elseif @Vb=="Magus 8" pz=@p1b*x*cotan(x)-y*log(x)+flip(@p2b*y*sqr(x)) elseif @Vb=="Magus 9" pz=x+@p1b*abs(y)+flip(y-@p2b*(x+y^2)) elseif @Vb=="Magus 10" pz=-x+@p1b*y+flip(y-@p2b*(x-y^2)) elseif @Vb=="Magus 11" pz=x-y-x*(@p1b*x^2+@p2b*y^2)+flip(x+y-y*(@p3b*x^2+@p4b*y^2)) elseif @Vb=="Magus 12" pz=recip(y)*x+flip(abs(x)+y*(@p1b*x-y^2)) elseif @Vb=="Magus 13" pz=y*(x+y)+flip(abs(x-y)+y*(@p1b-x)) elseif @Vb=="Magus 14" pz=x+@p1b*y^2+flip(x)^3+flip(y-@p2b*x^2+flip(y)^3) elseif @Vb=="Magus 15" pz=sin(@p1b*y)+((@p1b*x))^2+((@p1b*y))^3+flip((@p2b*x)+((@p2b*y))^2+((@p2b*x))^3) elseif @Vb=="Magus 16" pz=-x+@p1b*flip(y)+flip(y-@p2b*(x-y^2)) elseif @Vb=="Magus 17" pz=@p1b*sqr(x)-y-sqr(x+flip(y))+flip(-@p2b*x+sqr(y)+sqr(x+flip(y))) elseif @Vb=="Magus 18" pz=(@p1b*y-@p2b)/(@p1b*abs(x)+@p2b)+flip((@p1b*x-@p2b)/(@p1b*abs(y)+@p2b)) elseif @Vb=="Magus 19" pz=(@p1b*(y-x)-flip(@p2b))/(@p1b*(x-y)+flip(@p2b))+flip((@p1b*x-flip(@p2b))/(@p1b*y+flip(@p2b))) elseif @Vb=="Magus 20" pz=(@p1b*abs(y)-@p2b)*(@p1b*x+@p2b)+flip((@p1b*x-@p2b)*(@p1b*y+@p2b)) elseif @Vb=="Magus 21" pz=x-sin(y+@p1b*sin(@p2b*y+@p3b*sin(@p4b*y)))+flip(y-sin(x+@p1b*sin(@p2b*x+@p3b*sin(@p4b*x)))) elseif @Vb=="Magus 22" pz=x-(@p1b/2)*real(sin(y+sin(@p2b*(y+sin(@p3b*y)))))+flip(y+(@p1b/2)*real(sin(x+sin(@p2b*(x+sin(@p3b*x)))))) elseif @Vb=="Magus 23" pz=@p1b*(pz^3+2*pz^2+3*pz)+@p2b elseif @Vb=="Magus 24" pz=@p1b*y-@p2b*x*y+flip(@p1b*abs(x)+@p2b*abs(x+y)) elseif @Vb=="Martin" pz=y+sin(x)+flip(@p1b-x) elseif @Vb=="Munster" pz=@p1b*pz^2*(pz-@p2b)/(1-@p2b*pz) elseif @Vb=="Newton" pz=pz-@p1b*(pz^3-@p2b)/(3*pz^2) elseif @Vb=="Popcorn" pz=x-@p1b*sin(y+tan(flip(@p2b)*y))+flip(y-@p1b*sin(x+tan(flip(@p2b)*x))) elseif @Vb=="Sprott-Elhadj" pz=@p1b*x/(1+y^2)+flip(x+flip(@p2b)*y) elseif @Vb=="Standard Map" pz=x+@p1b*y-@p2b+(@p3b/(2*pi))*sin(2*pi*x)+flip(@p1b*y-@p2b+(@p3b/(2*pi))*sin(2*pi*x)) elseif @Vb=="Tinkerbell" pz=x^2-y^2+@p1b*x+@p2b*y+flip(2*x*y-@p3b*x+@p4b*y) elseif @Vb=="Ushiki" pz=(@p1b-x-@p2b*y)*x+flip((@p3b-y-@p4b*x)*y) elseif @Vb=="Zito" pz=x*y+@p1b*x-y+flip(x+y) elseif @Vb=="z" pz=@p1b*pz+@p2b elseif @Vb=="(z-1)/(z+1)" pz=@p1b*(pz-1)/(pz+1)+@p2b elseif @Vb=="+sqr" pz=pz+@p1b*pz^2 elseif @Vb=="+recip" pz=pz+@p1b/pz elseif @Vb=="+pixel" pz=pz+@p1b*pixel elseif @Vb=="(z-pixel)/(z+pixel)" pz=@p1b*(pz-pixel)/(pz+pixel)+@p2b else pz=@p1b*(pz-pixel)/(pz+1i)+@p2b endif if @v2==0 float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @v2==1 float h=(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==2 float h=abs(atan(recip(imag(pz)/real(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @v2==3 float h=(atan(recip(imag(pz)/real(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==4 float h=abs(atan(imag(flip(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==5 float h=(atan(imag(flip(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==6 float h=abs(atan(imag(sqr(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==7 float h=(atan(imag(sqr(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==8 float h=abs(atan(imag(pz)/real(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==9 float h=(atan(imag(pz)/real(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==10 float h=abs(atan(imag(sqr(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==11 float h=(atan(imag(sqr(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==12 float h=abs(atan(imag(sqrt(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==13 float h=(atan(imag(sqrt(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==14 float h=abs(atan(imag(log(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==15 float h=(atan(imag(log(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==16 float h=abs(atan(imag(log(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==17 float h=(atan(imag(log(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==18 float h=abs(atan(imag(cabs(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) else float h=abs(atan(imag(exp(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) endif endif if !g && (k<@adj1) && (i>=@adj2) g=true d=i%a f=c*k+d*b endif i=i+1 endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if 256/((real(f)+1)%256)<@p8 index=((real(f)+1)%256)/256 else m_Solid=true endif else if 256/((real(f)+1)%256)>@p8 index=((real(f)+1)%256)/256 else m_Solid=true endif endif else index=((real(f)+1)%256)/256 endif return index endfunc private: float a float b float c float d float f int i bool g float index default: title="Abriskur" int param version caption="Version" default=101 visible=@version<101 endparam param Vb caption="Variant 1" enum="Bogdanov""Cayley""Circle Map""Duffing""Gingerbread""Hopalong"\ "Logistic Map""Lozi""Magnet""Magus 1""Magus 2""Magus 3"\ "Magus 4""Magus 5""Magus 6""Magus 7""Magus 8""Magus 9""Magus 10""Magus 11"\ "Magus 12""Magus 13""Magus 14""Magus 15""Magus 16""Magus 17""Magus 18"\ "Magus 19""Magus 20""Magus 21""Magus 22""Magus 23""Magus 24""Martin""Munster""Newton"\ "Popcorn""Sprott-Elhadj""Standard Map""Tinkerbell""Ushiki""Zito""z""(z-1)/(z+1)"\ "+sqr""+recip""+pixel""(z-pixel)/(z+pixel)""(z-pixel)/(z+i)" default=6 visible=@version==101 endparam param v2 caption="Variant 2" enum="1a""1b""2a""2b""3a""3b""4a""4b""5a""5b""6a""6b""7a""7b""8a""8b""9a""9b""10""11" visible=@version==101 endparam param p1b caption="Variant Parameter" default=(1,0) visible=@version==101 endparam param p2b caption="Variant Parameter 2" default=(1,0) visible=@version==101 && (@Vb=="Bogdanov" || @Vb=="Cayley" || @Vb=="Circle Map" || @Vb=="Duffing" \ || @Vb=="Gingerbread" || @Vb=="Hopalong" || @Vb=="Lozi" \ || @Vb=="Magus 1" || @Vb=="Magus 2" || @Vb=="Magus 4" || @Vb=="Magus 5" || @Vb=="Magus 6" \ || @Vb=="Magus 7" || @Vb=="Magus 8" || @Vb=="Magus 9" || @Vb=="Magus 10" || @Vb=="Magus 11" \ || @Vb=="Magus 14" || @Vb=="Magus 15" || @Vb=="Magus 16" || @Vb=="Magus 17" \ || @Vb=="Magus 18" || @Vb=="Magus 19" || @Vb=="Magus 20" || @Vb=="Magus 21" \ || @Vb=="Magus 22" || @Vb=="Magus 23" || @Vb=="Magus 24" || @Vb=="Munster" || @Vb=="Newton" || @Vb=="Popcorn" || @Vb=="Sprott-Elhadj" \ || @Vb=="Standard Map" || @Vb=="Tinkerbell" || @Vb=="Ushiki" || @Vb=="z" || @Vb=="(z-1)/(z+1)" || @Vb=="(z-pixel)/(z+pixel)" || @Vb=="(z-pixel)/(z+i)") endparam param p3b caption="Variant Parameter 3" default=(1,0) visible=@version==101 && (@Vb=="Bogdanov" || @Vb=="Hopalong" \ || @Vb=="Magus 4" || @Vb=="Magus 5" || @Vb=="Magus 6" || @Vb=="Magus 11" \ || @Vb=="Magus 21" || @Vb=="Magus 22" || @Vb=="Standard Map" \ || @Vb=="Tinkerbell" || @Vb=="Ushiki") endparam param p4b caption="Variant Parameter 4" default=(1,0) visible=@version==101 && (@Vb=="Magus 4" \ || @Vb=="Magus 6" || @Vb=="Magus 11" || @Vb=="Magus 21" \ || @Vb=="Tinkerbell" || @Vb=="Ushiki") endparam func fn1 caption="Function" default=ident() endfunc param V caption="Variant" enum="Bogdanov""Cayley""Circle Map""Clifford""de Jong""Gauss Map""Hamilton Torus""Hopalong"\ "Inkle""Latoocarfian""Logistic Map""Magus 1""Magus 2""Magus 3"\ "Magus 4""Magus 5""Magus 6""Magus 7""Magus 8""Magus 9""Magus 10""Magus 11"\ "Magus 12""Magus 13""Magus 14""Magus 15""Magus 16""Magus 17""Magus 18"\ "Magus 19""Magus 20""Magus 21""Magus 22""Magus 23""Magus 24""Martin""Munster"\ "Polyharmonic Pendulum""Popcorn""Sprott-Elhadj""Standard Map""Svensson""Tinkerbell""z""z^2""z^3""(z-1)/(z+1)" default=6 visible=@version==100 endparam param p1 default=(1,0) visible=@version==100 endparam param p2 default=(1,0) visible=@version==100 && (@V=="Bogdanov" || @V=="Cayley" || @V=="Circle Map" || @V=="Clifford" \ || @V=="de Jong" || @V=="Gauss Map" || @V=="Hopalong" || @v=="Inkle" || @V=="Latoocarfian" \ || @V=="Magus 1" || @V=="Magus 2" || @V=="Magus 4" || @V=="Magus 5" || @V=="Magus 6" \ || @V=="Magus 7" || @V=="Magus 8" || @V=="Magus 9" || @V=="Magus 10" || @V=="Magus 11" \ || @V=="Magus 14" || @V=="Magus 15" || @V=="Magus 16" || @V=="Magus 17" \ || @V=="Magus 18" || @V=="Magus 19" || @V=="Magus 20" || @V=="Magus 21" \ || @V=="Magus 22" || @V=="Magus 23" || @V=="Magus 24" || @V=="Munster" || @V=="Polyharmonic Pendulum" || @V=="Popcorn" || @V=="Sprott-Elhadj" \ || @V=="Standard Map" || @V=="Svensson" || @V=="Tinkerbell" || @V=="z" || @V=="z^2" || @V=="z^3" || @V=="(z-1)/(z+1)") endparam param p3 default=(1,0) visible=@version==100 && (@V=="Bogdanov" || @V=="Clifford" || @V=="de Jong" || @V=="Hopalong" || @V=="Latoocarfian" \ || @V=="Magus 4" || @V=="Magus 5" || @V=="Magus 6" || @V=="Magus 11" || @V=="Magus 16" \ || @V=="Magus 21" || @V=="Magus 22" || @V=="Polyharmonic Pendulum" || @V=="Standard Map" || @V=="Svensson" \ || @V=="Tinkerbell") endparam param p4 default=(1,0) visible=@version==100 && (@V=="Clifford" || @V=="de Jong" || @V=="Latoocarfian" || @V=="Magus 4" \ || @V=="Magus 6" || @V=="Magus 11" || @V=="Magus 16" || @V=="Magus 21" \ || @V=="Polyharmonic Pendulum" || @V=="Svensson" || @V=="Tinkerbell") endparam param adj1 caption="Adjustment 1" default=1.0 endparam param adj2 caption="Adjustment 2" default=5 endparam param adj3 caption="Adjustment 3" default=(2,125) endparam param @solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=1.02685 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Abriskur2a(common.ulb:GradientColoring) { ;A modification of Squiggles Coloring by Paul Carson (pwc.ucl) public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=real(@adj3) b=imag(@adj3) c=(b-1)/@adj1 d=0.0 i=0 f=254 g=false endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) pz=fn1(pz) if @version==100 if @V=="1" pz=@p2*(pz+@p1*fn2(pz))+@p3 elseif @V=="2" pz=@p2*(pz+@p1/fn2(pz))+@p3 elseif @V=="3" pz=@p2*((fn2(pz)-@p1)/(fn2(pz)+@p1))+@p3 elseif @V=="4" pz=@p2*(pz^2/(fn2(pz)+@p1))+@p3 elseif @V=="5" pz=@p2*((fn2(pz)+@p1)/pz)+@p3 elseif @V=="6" pz=@p2*(pz*fn2(@p1-pz))+@p3 elseif @V=="7" pz=@p2*fn2((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p3 elseif @V=="8" pz=@p2*fn2((pz-(@p1-1))/(1-(@p1-1)*pz))+@p3 elseif @V=="9" pz=@p2*(pz*fn2(flip(pz))-(@p1-1))+@p3 elseif @V=="10" pz=@p2*(pz*fn2(conj(pz))-@p1)+@p3 elseif @V=="11" pz=@p2*(pz*fn2(abs(pz))-@p1)+@p3 elseif @V=="12" pz=@p2*(pz*fn2(exp(pz))-@p1)+@p3 elseif @V=="13" pz=@p2*(pz*fn2(log(pz))-@p1)+@p3 elseif @V=="14" pz=@p2*(pz*fn2(cotanh(pz))-@p1)+@p3 elseif @V=="15" pz=@p2*(pz*fn2(atanh(pz))-@p1)+@p3 elseif @V=="16" pz=@p2*(pz*fn2(tanh(pz))-@p1)+@p3 elseif @V=="17" pz=@p2*(pz*fn2(cos(pz))-@p1)+@p3 elseif @V=="18" pz=@p2*(pz*fn2(pz)-@p1)+@p3 endif float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) else if @V=="1" pz=@p2*(pz+@p1*fn2(pz))+@p3 elseif @V=="2" pz=@p2*(pz-@p1/fn2(pz))+@p3 elseif @V=="3" pz=@p2*((fn2(pz)-@p1)/(fn2(pz)+@p1))+@p3+1 elseif @V=="4" pz=@p2*(pz^2/(fn2(pz)+@p1))+@p3 elseif @V=="5" pz=@p2*(pz^3/(fn2(pz)+@p1))+@p3 elseif @V=="6" pz=@p2*(pz*fn2(@p1-pz))+@p3 elseif @V=="7" pz=@p2*fn2((pz^2+@p1-1)/(2*pz+@p1-2))^2+@p3 elseif @V=="8" pz=@p2*fn2((pz-(@p1-1))/(1-(@p1-1)*pz))+@p3 elseif @V=="9" pz=@p2*(pz^2/(fn2(pz))+pz^3/(fn2(pz))-@p1)+@p3 elseif @V=="10" pz=@p2*(pz+@p1*(fn2(pz)+flip(pz)))+@p3 elseif @V=="11" pz=@p2*(pz*fn2(abs(pz))-@p1)+@p3 elseif @V=="12" pz=@p2*(pz+@p1*(fn2(pz)+abs(pz)))+@p3 elseif @V=="13" pz=@p2*(pz*fn2(log(pz))-@p1)+@p3+1 elseif @V=="14" pz=@p2*(pz*fn2(cotanh(pz))-@p1)+@p3 elseif @V=="15" pz=@p2*(pz*fn2(atanh(pz))-@p1)+@p3 elseif @V=="16" pz=@p2*(pz*fn2(tanh(pz))-@p1)+@p3 elseif @V=="17" pz=@p2*(pz*fn2(cos(pz))-@p1)+@p3 elseif @V=="18" pz=@p2*(pz*fn2(pz)-@p1)+@p3 elseif @V=="19" pz=@p2*(pz*fn2(pz)+flip(pz)-@p1)+@p3 elseif @V=="20" pz=@p2*(pz*fn2(pz)+abs(pz)-@p1)+@p3 elseif @V=="21" pz=@p2*(pz*fn2(pz)+atanh(pz)-@p1)+@p3 elseif @V=="22" pz=@p2*(pz+@p1*fn2(pz)*flip(pz))+@p3 elseif @V=="23" pz=@p2*(pz+@p1*fn2(pz)*atan(pz))+@p3 elseif @V=="24" pz=@p2*(pz+@p1*fn2(pz)*cosh(pz))+@p3 elseif @V=="25" pz=@p2*(flip(pz)+@p1*fn2(pz)*conj(pz))+@p3 elseif @V=="26" pz=@p2*(flip(pz)+@p1*fn2(pz)*recip(pz))+@p3 elseif @V=="27" pz=@p2*(abs(pz)+@p1*fn2(pz)*abs(pz))+@p3 elseif @V=="28" pz=@p2*(abs(pz)+@p1*fn2(pz)*exp(pz))+@p3 elseif @V=="29" pz=@p2*(exp(pz)+@p1*fn2(pz)*log(pz))+@p3 elseif @V=="30" pz=@p2*(exp(pz)+@p1*fn2(pz)*cosh(pz))+@p3 elseif @V=="31" pz=@p2*(log(pz)+@p1*fn2(pz)*cotan(pz))+@p3 elseif @V=="32" pz=@p2*(log(pz)+@p1*fn2(pz)*atanh(pz))+@p3 elseif @V=="33" pz=@p2*(log(pz)+@p1*fn2(pz)*recip(pz))+@p3 elseif @V=="34" pz=@p2*(sqrt(pz)+@p1*fn2(pz)*atanh(pz))+@p3 elseif @V=="35" pz=@p2*(atanh(pz)+@p1*fn2(pz)*recip(pz))+@p3 elseif @V=="36" pz=@p2*(atanh(pz)+@p1*fn2(pz)*pz)+@p3 elseif @V=="37" pz=@p2*(cos(pz)+@p1*fn2(pz)*cos(pz))+@p3 elseif @V=="38" pz=@p2*(recip(pz)+@p1*fn2(pz)*atan(pz))+@p3 else pz=@p2*(cos(pz)+@p1*fn2(pz)*flip(pz))+@p3 endif if @v2==0 float h=abs(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @v2==1 float h=(atan(imag(pz)/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==2 float h=abs(atan(recip(imag(pz)/real(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @v2==3 float h=(atan(recip(imag(pz)/real(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==4 float h=abs(atan(imag(flip(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==5 float h=(atan(imag(flip(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==6 float h=abs(atan(imag(sqr(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==7 float h=(atan(imag(sqr(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==8 float h=abs(atan(imag(pz)/real(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==9 float h=(atan(imag(pz)/real(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==10 float h=abs(atan(imag(sqr(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==11 float h=(atan(imag(sqr(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==12 float h=abs(atan(imag(sqrt(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==13 float h=(atan(imag(sqrt(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==14 float h=abs(atan(imag(log(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==15 float h=(atan(imag(log(pz))/real(sqrt(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==16 float h=abs(atan(imag(log(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==17 float h=(atan(imag(log(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @v2==18 float h=abs(atan(imag(cabs(pz))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==19 float h=abs(atan(imag(exp(pz))/real(exp(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==20 float h=abs(atan(real(sqr(pz))/imag(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==21 float h=(atan(real(sqr(pz))/imag(sqr(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==22 float h=abs(atan(imag(sqr(sqr(pz)))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==23 float h=(atan(imag(sqr(sqr(pz)))/real(pz))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==24 float h=abs(atan(imag(sqr(sqr(pz)))/real(flip(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==25 float h=(atan(imag(sqr(sqr(pz)))/real(flip(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==26 float h=abs(atan(imag(sqr(sqr(pz)))/real(cabs(pz)))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==27 float h=abs(atan(imag(cos(cos(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==28 float h=abs(atan(imag(pz)/real(sqrt(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==29 float h=(atan(imag(pz)/real(sqrt(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==30 float h=abs(atan(imag(flip(pz))/real(sqr(log(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==31 float h=(atan(imag(flip(pz))/real(sqr(log(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==32 float h=abs(atan(imag(sqr(pz))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==33 float h=(atan(imag(sqr(pz))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==34 float h=abs(atan(imag(sqr(sqr(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==35 float h=(atan(imag(sqr(sqr(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==36 float h=abs(atan(imag(cotan(cotan(pz)))/real(sqrt(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==37 float h=(atan(imag(cotan(cotan(pz)))/real(sqrt(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) elseif @V2==38 float h=abs(atan(imag(cosh(cosh(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) elseif @V2==39 float h=(atan(imag(cosh(cosh(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=(|pz|-|j|) else float h=abs(atan(imag(cos(cos(pz)))/real(exp(flip(pz))))) float rh=real(h) float ih=imag(h) j=rh+flip(ih) float k=abs(|pz|-|j|) endif endif if !g && (k<@adj1) && (i>=@adj2) g=true d=i%a f=c*k+d*b endif i=i+1 endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if 256/((real(f)+1)%256)<@p8 index=((real(f)+1)%256)/256 else m_Solid=true endif else if 256/((real(f)+1)%256)>@p8 index=((real(f)+1)%256)/256 else m_Solid=true endif endif else index=((real(f)+1)%256)/256 endif return index endfunc private: float a float b float c float d float f int i bool g float index default: title="Abriskur 2" int param version caption="Version" default=101 visible=@version<101 endparam param V caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param v2 caption="Variant 2" enum="1a""1b""2a""2b""3a""3b""4a""4b""5a""5b""6a"\ "6b""7a""7b""8a""8b""9a""9b""10""11""12a""12b"\ "13a""13b""14a""14b""15""16""17a""17b""18a""18b"\ "19a""19b""20a""20b""21a""21b""22a""22b""23" visible=@version==101 endparam param p1 caption="Variant Parameter 1" default=(1,0) endparam param p2 caption="Variant Parameter 2" default=(1,0) endparam param p3 caption="Variant Parameter 3" default=(0,0) endparam func fn1 caption="Z Function" default=ident() endfunc func fn2 caption="Variant Function" default=ident() endfunc param adj1 caption="Adjustment 1" default =1.0 endparam param adj2 caption="Adjustment 2" default=2 endparam param adj3 caption="Adjustment 3" default=(2,125) endparam param @solid caption="Solid Colour" default=false endparam param p8 caption="Solid Colour Adjustment" default=1.02685 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_BivarMunster5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 if @sv==0 pz=@sp z2=@sp else z2=@sf(pz) pz=@sf(pz) endif c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) if @v==0 c=@js+0.15 elseif @v==1 c=@js+0.3 elseif @v==2 c=@js+1.3 else c=@js+1.05 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=@mp2*z2^2*(z2-@mp1)/(1-@mp1*z2)+c pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*pz)+a b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c elseif @v==1 b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c a=z2 z2=@mp2*z2^2*(z2-@mp1)/(1-@mp1*z2)+c pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*pz)+a elseif @v==2 a=z2 z2=@mp2*z2^2*(z2-@mp1)/(1-@mp1*z2)+c pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*pz)-a b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c else b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c a=z2 z2=@mp2*z2^2*(z2-@mp1)/(1-@mp1*z2)+c pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*pz)-a endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Munster 5" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sv caption="Start Type" enum="Parameter""Pixel" visible=@mj==0 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(-1,0) visible=@mj==0 && @sv==0 endparam param js caption="Julia Seed" default=(-0.65,0) visible=@mj==1 endparam param mp1 caption="Munster Parameter 1" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanChoAbbasMagnetM(common.ulb:ConvergentDivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2))) pz=(1-@p2)*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p2*(sqr((u^2+@mp2*c-1)/(2*u+@mp2*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Khan-Cho-Abbas Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(-0.5,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_KhanChoAbbasMagnetJ(common.ulb:ConvergentDivergentFormula) { ;Khan-Cho-Abbas iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(23) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) u=(1-@p1)*pz+@p1*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2))) pz=(1-@p2)*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p2*(sqr((u^2+@mp2-1)/(2*u+@mp2-2))) return pz endfunc default: title="Khan-Cho-Abbas Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Khan-Cho-Abbas Parameter 1" default=(-0.5,0) endparam param p2 caption="Khan-Cho-Abbas Parameter 2" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(1.45,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.15,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000001 endparam complex param p_power visible=false endparam } class OM_ChebyshevHalley2M(common.ulb:ConvergentFormula) { ;https://www.researchgate.net/publication/276304313_A_Novel_Iteration_Class_for_Solution_of_Nonlinear_Equation public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if @v==0 f=pz^3+@p2*c*pz^2+@p3*c f1=3*pz^2+2*@p2*c*pz f2=6*pz+2*@p2*c elseif @v==1 f=pz^4+@p2*c*pz+@p3*c f1=4*pz^3+@p2*c f2=12*pz^2 elseif @v==2 f=pz^5+@p2*c*pz^3+@p3*c f1=5*pz^4+3*@p2*c*pz^2 f2=20*pz^3+6*@p2*c*pz elseif @v==3 f=pz^5-pz^4+@p2*c*pz^2+@p3*c f1=5*pz^4-4*pz^3+2*@p2*c*pz f2=20*pz^3-12*pz^2+2*@p2*c elseif @v==4 f=pz^5-pz^4-pz^3+@p2*c*pz^2-pz+@p3*c f1=5*pz^4-4*pz^3-3*pz^2+2*@p2*c*pz-1 f2=20*pz^3-12*pz^2-6*pz+2*@p2*c elseif @v==5 f=pz^3+@p2*c*pz^(-2)+@p3*c f1=3*pz^2-2*c*pz^(-3) f2=6*pz+6*c*pz^(-4) elseif @v==6 f=pz^4+@p2*c*pz^(-1)+@p3*c f1=4*pz^3-@p2*c*pz^(-2) f2=12*pz^2+2*@p2*pz^(-3) elseif @v==7 f=@p2*c*(pz^7-pz^5)/(pz^4+1)+((pz^3-1)/(3*pz^2))^3+pz^2+@p3*c f1=@p2*c*pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=@p2*c*2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3+2*(pz^9+6*pz^3-7)/(9*pz^8)+2 elseif @v==8 f=pz^3+(pz-@p2*c)/(1-@p2*c*pz)+@p3*c f1=3*pz^2+(1-@p2^2*c^2)/(1-@p2*c*pz)^2 f2=6*pz-(2*@p2*c*(@p2^2*c^2-1))/((1-@p2*c*pz)^3) elseif @v==9 f=pz^4-(pz-@p2*c)/(1-@p2*c*pz)-@p3*c f1=4*pz^3-(1-@p2^2*c^2)/(1-@p2*c*pz)^2 f2=12*pz^2+(2*@p2*c*(@p2^2*c^2-1))/((1-@p2*c*pz)^3) elseif @v==10 f=((pz-1)/(pz+1))^3+@p2*c*pz^2+@p3*c f1=6*(pz-1)^2/(pz+1)^4+2*@p2*c*pz f2=-12*(pz-3)*(pz-1)/(pz+1)^5+2*@p2*c elseif @v==11 f=((pz-1i)/(pz+1i))^3+@p2*c*pz^2+@p3*c f1=6i*(pz-1i)^2/(pz+1i)^4+2*@p2*c*pz f2=-12i*(pz-3i)*(pz-1i)/(pz+1i)^5+2*@p2*c elseif @v==12 f=pz^2*(pz-2)/(1-2*pz)+@p2*c*pz^2+@p3*c f1=-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p2*c*pz f2=2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*@p2*c elseif @v==13 f=pz^5-pz^2*(pz-2)/(1-2*pz)+@p2*c*pz^2+@p3*c f1=5*pz^4+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p2*c*pz f2=20*pz^3-2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*@p2*c elseif @v==14 f=pz^3-pz^2*(pz-2)/(1-2*pz)+@p2*c*pz^2+@p3*c f1=3*pz^2+pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p2*c*pz f2=6*pz-2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*@p2*c elseif @v==15 f=pz^3+pz^2*(pz-2)/(1-2*pz)+@p2*c*pz^2+@p3*c f1=3*pz^2-pz*(4*pz^2-7*pz+4)/(1-2*pz)^2+2*@p2*c*pz f2=6*pz+2*(4*pz^3-6*pz^2+3*pz-2)/(1-2*pz)^3+2*@p2*c elseif @v==16 f=pz^3+(pz^2/(2*pz-1))^2+@p2*c*pz^2+@p3*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+2*@p2*c*pz f2=6*pz+4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p2*c elseif @v==17 f=pz^3-(pz^2/(2*pz-1))^2+@p2*c*pz^2+@p3*c f1=3*pz^2-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p2*c*pz f2=6*pz-4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p2*c elseif @v==18 f=(pz^2/(2*pz-1))^2+@p2*c*pz^2+@p3*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+2*@p2*c*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p2*c elseif @v==19 f=pz^5-(pz^2/(2*pz-1))^2+@p2*c*pz^2+@p3*c f1=5*pz^4-4*(pz-1)*pz^3/(2*pz-1)^3+2*@p2*c*pz f2=20*pz^3-4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*@p2*c elseif @v==20 f=pz^3+@p2*c*(pz^2/(2*pz-1))^2+@p3*c f1=3*pz^2+@p2*c*4*(pz-1)*pz^3/(2*pz-1)^3 f2=6*pz+@p2*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==21 f=pz^4+@p2*c*(pz^2/(2*pz-1))^2+@p3*c f1=4*pz^3+@p2*c*4*(pz-1)*pz^3/(2*pz-1)^3 f2=12*pz^2+@p2*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==22 f=pz^4+@p2*c*(pz^5-pz^3)/(pz^2+1)+@p3*c f1=4*pz^3+@p2*c*pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 f2=12*pz^2+@p2*c*2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3 elseif @v==23 f=pz^3-@p2*c*(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p3*c f1=3*pz^2-@p2*c*4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2 f2=6*pz-@p2*c*4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3 elseif @v==24 f=(pz^5-pz^3)/(pz^2+1)+@p2*c*pz^2+@p3*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p2*c*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p2*c elseif @v==25 f=(pz^5-pz^3)/(pz^2+1)+@p2*(1-c)*pz^2+@p3*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p2*(1-c)*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p2*(1-c) elseif @v==26 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*(1-c)*pz^2+@p3*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p2*(1-c)*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p2*(1-c) elseif @v==27 f=(pz^2/(2*pz-1))^2+(pz^5-pz^3)/(pz^2+1)+@p2*c*pz^2+@p3*c f1=4*(pz-1)*pz^3/(2*pz-1)^3+pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+2*@p2*c*pz f2=4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4+2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+2*@p2*c elseif @v==28 f=pz^3+(pz^2/(2*pz-1))^2+@p2*(c-1)*pz-@p3*c f1=3*pz^2+4*(pz-1)*pz^3/(2*pz-1)^3+@p2*(c-1) f2=6*pz+4*pz^2*(2*pz^2-4*pz+3)/(2*pz-1)^4 elseif @v==29 f=pz^3+@p2*(c-1)*pz+@p3*c f1=3*pz^2+@p2*(c-1) f2=6*pz elseif @v==30 f=pz^3+pz^(-1)+@p2*(c+1)*pz+@p3*c f1=3*pz^2-pz^(-2)+@p2*(c+1) f2=6*pz+2*pz^(-3) elseif @v==31 f=((pz^2+1)/(2*pz))^3+@p2*c*pz^2+@p3*c f1=3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)+2*@p2*c*pz f2=3*(pz^6+pz^2+2)/(4*pz^5)+2*@p2*c elseif @v==32 f=pz^3-((pz^2+1)/(2*pz))^3-@p2*(1-c)*pz^2+@p3*c f1=3*pz^2-3*(pz^2-1)*(pz^2+1)^2/(8*pz^4)-2*@p2*(1-c)*pz f2=6*pz-3*(pz^6+pz^2+2)/(4*pz^5)-2*@p2*(1-c) elseif @v==33 f=((pz^3-1)/(3*pz^2))^3+(@p2+2)*c*pz^2+@p3*c f1=(pz^9-3*pz^3+2)/(9*pz^7)+2*(@p2+2)*c*pz f2=2*(pz^9+6*pz^3-7)/(9*pz^8)+2*(@p2+2)*c elseif @v==34 f=pz^3+@p2*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p3*c f1=3*pz^2+@p2*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=6*pz+2*@p2*c*(pz^9+6*pz^3-7)/(9*pz^8)+2 elseif @v==35 f=pz^3+pz-(pz^4-1)/(4*pz^3)+@p2*c*pz^2+@p3*c f1=3*pz^2+0.75-3/(4*pz^4)+2*@p2*c*pz f2=6*pz+3/pz^5+2*@p2*c elseif @v==36 f=(pz^5-pz^3)/(pz^2+1)+pz-(pz^4-1)/(4*pz^3)+@p2*c*pz^2+@p3*c f1=pz^2*(3*pz^4+4*pz^2-3)/(pz^2+1)^2+0.75-3/(4*pz^4)+2*@p2*c*pz f2=2*pz*(3*pz^6+9*pz^4+11*pz^2-3)/(1+pz^2)^3+3/pz^5+2*@p2*c elseif @v==37 f=(pz^7-pz^5)/(pz^4+1)+@p2*c*pz^2+@p3*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2+2*@p2*c*pz f2=2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3+2*@p2*c else f=(pz^7-pz^5)/(pz^4+1)-@p2*c*((pz^3-1)/(3*pz^2))^3+pz^2+@p3*c f1=pz^4*(3*pz^6-pz^4+7*pz^2-5)/(pz^4+1)^2-@p2*c*(pz^9-3*pz^3+2)/(9*pz^7)+2*pz f2=2*pz^3*(3*pz^10+8*pz^6+6*pz^4+21*pz^2-10)/(pz^4+1)^3-@p2*c*2*(pz^9+6*pz^3-7)/(9*pz^8)+2 endif pz=pz-@p4*(@p1*f*f1/(f1^2-f*f2/2)+(1-@p1)*f*(1+(f*f2/f1^2)/2)/f1)+@p5 return pz endfunc private: complex c default: title="Chebyshev-Halley 2 M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39" endparam param sp caption="Start Parameter" default=(1,0) endparam param p2 caption="CH Parameter 1" default=(1,0) endparam param p3 caption="CH Parameter 2" default=(1,0) endparam param p4 caption="CH Parameter 3" default=(1,0) endparam param p1 caption="CH Parameter 4" default=(-0.75,0) endparam param p5 caption="CH Parameter 5" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1e-8 exponential=true endparam } class OM_BivarKhanMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 u=@p1*(pz^2+@pp1*c)+@p2*pz v=@p3*(u^2+@pp2*c)+@p4*pz pz=@p3*pz+(1-@p3)*v u2=@p1*(z2^2+@pp1*c)+@p2*z2 v=@p3*(u2^2+@pp2*c)+@p4*z2 z2=@p3*z2+(1-@p3)*v a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@bp4*c else a=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@bp4*c u=@p1*(pz^2+@pp1*c)+@p2*pz v=@p3*(u^2+@pp2*c)+@p4*pz pz=@p3*pz+(1-@p3)*v u2=@p1*(z2^2+@pp1*c)+@p2*z2 v=@p3*(u2^2+@pp2*c)+@p4*z2 z2=@p3*z2+(1-@p3)*v endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex c complex z2 default: title="Bivar Khan Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp default=(0.25,0) endparam param p1 caption="Khan Parameter 1" default=(1,0) endparam param p2 caption="Khan Parameter 2" default=(0.5,0) endparam param p3 caption="Khan Parameter 3" default=(0.5,0) endparam param p4 caption="Khan Parameter 4" default=(0.2,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param bp4 caption="Bivar Parameter 4" default=(-1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarKhanJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 u=@p1*(pz^2+@js1)+@p2*pz v=@p3*(u^2+@js2)+@p4*pz pz=@p3*pz+(1-@p3)*v u2=@p1*(z2^2+@js1)+@p2*z2 v=@p3*(u2^2+@js2)+@p4*z2 z2=@p3*z2+(1-@p3)*v a=z2 z2=@bp1*@js3*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@js3 else a=z2 z2=@bp1*@js3*@bf(z2/pz)+@bp2 pz=@bp3*(pz^2+a^2)+@js3 u=@p1*(pz^2+@js1)+@p2*pz v=@p3*(u^2+@js2)+@p4*pz pz=@p3*pz+(1-@p3)*v u2=@p1*(z2^2+@js1)+@p2*z2 v=@p3*(u2^2+@js2)+@p4*z2 z2=@p3*z2+(1-@p3)*v endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 default: title="Bivar Khan Julia" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param p1 caption="Khan Parameter 1" default=(1,0) endparam param p2 caption="Khan Parameter 2" default=(0.95,0) endparam param p3 caption="Khan Parameter 3" default=(0.5,0) endparam param p4 caption="Khan Parameter 4" default=(-1.7,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(1.125,0) endparam param bp3 caption="Bivar Parameter 3" default=(0.9,0) endparam param js1 caption="Julia Seed 1" default=(-1.35,0) endparam param js2 caption="Julia Seed 2" default=(0.35,0) endparam param js3 caption="Julia Seed 3" default=(-0.67,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX72(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @mj==0 pz=@sp z2=@sp c=@sf(fpixel) else z2=@sf(pz) pz=@sf(pz) if @v==0 c=@js else c=@js+0.95 endif endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 pz=pz+@ac*(pz-1i)/(pz+1i) z2=z2+@ac*(z2-1i)/(z2+1i) if @v==0 a=z2 z2=z2^3+@xp1*c*z2^2+@xp2*c+c pz=pz^3+@xp1*c*pz^2+@xp2*c-a b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c else b=z2 z2=@bp1*c*@bf(z2/pz)+@bp2 pz=@bp3*(pz+b)+c a=z2 z2=z2^3+@xp1*c*z2^2+@xp2*c+c pz=pz^3+@xp1*c*pz^2+@xp2*c-a endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar X 72" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(1,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@mj==1 endparam param xp1 caption="X Parameter 1" default=(-2,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BarnsleyValmyst(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 pz=@sf(pz) return pz endfunc private: complex a[@vmp1] int i complex func Iterate(complex pz) i=i+1 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if i<@vmp1 if real(pz)<0 a[i]=(pz-@vmp2)*@vmp3 else a[i]=(pz+@vmp2)*@vmp3 endif endif if real(@bf(pz))<0 pz=(pz-@bp1)*@bp2*fn2(a[i]) else pz=(pz+@bp1)*@bp2*fn2(a[i]) endif return pz endfunc default: title="Barnsley Valmyst" int param version caption="Version" default=100 visible=@version<100 endparam param vmp1 caption="Valmyst Parameter 1" default=20 endparam param vmp2 caption="Valmyst Parameter 2" default=(1,0) endparam param vmp3 caption="Valmyst Parameter 3" default=(0.44,0.24) endparam param bp1 caption="Barnsley Parameter 1" default=(1,0) endparam param bp2 caption="Barnsley Parameter 2" default=(-0.2,0.6) endparam func sf caption="Start Function" default=ident() endfunc func fn2 caption="Valmyst Function" default=ident() endfunc func bf caption="Barnsley Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_DasDebataMagnet2M(common.ulb:ConvergentDivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ac*(pz-1i)/(pz+1i) u=(1-@p1)*pz+@p1*(sqr((pz^3+3*(@mp1*c-1)*pz+(@mp1*c-1)*(@mp1*c-2))/(3*pz^2+3*(@mp1*c-2)*pz+(@mp1*c-1)*(@mp1*c-2)+1))) pz=(1-@p2)*pz+@p2*(sqr((u^3+3*(@mp2*c-1)*u+(@mp2*c-1)*(@mp2*c-2))/(3*u^2+3*(@mp2*c-2)*u+(@mp2*c-1)*(@mp2*c-2)+1))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Das-Debata Magnet 2 M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Das-debata Parameter 1" default=(0.35,0) endparam param p2 caption="Das-debata Parameter 2" default=(1.8,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.65,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_GeneralisedAgarwalMagnetM(common.ulb:ConvergentDivergentFormula) { ;generalised Agarwal iteration from ;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7517277/ ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2))) pz=(1-@p2)*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p2*(sqr((u^2+@mp3*c-1)/(2*u+@mp3*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Generalised Agarwal Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="GA Parameter 1" default=(-1.7,0) endparam param p2 caption="GA Parameter 2" default=(-1.385,0) endparam param mp1 caption="Magnet Parameter 1" default=(-2.6,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_RajputTenguriaPandeyBarnsley(common.ulb:DivergentFormula) { ;Rajput-Tenguria-Pandey iteration from ;https://www.arpapress.com/Volumes/Vol24Issue1/IJRRAS_24_1_01.pdf ;(8) public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) if real(@f1a(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a(pz))>=0 fza=(pz-@bp2a)*@bp1a else fza=(pz+@bp2a)*@bp1a endif if real(@f1b(pz))*imag(@bp3b)+real(@bp3b)*imag(@f1b(pz))>=0 fzb=(pz-@bp2b)*@bp1b else fzb=(pz+@bp2b)*@bp1b endif if real(@f1c(pz))*imag(@bp3c)+real(@bp3c)*imag(@f1c(pz))>=0 fzc=(pz-@bp2c)*@bp1c else fzc=(pz+@bp2c)*@bp1c endif u=@p1*pz+@p2*fza+@p3*fzb+@p4*fzc if real(@f1a(u))*imag(@bp3a)+real(@bp3a)*imag(@f1a(u))>=0 fua=(u-@bp2a)*@bp1a else fua=(u+@bp2a)*@bp1a endif pz=@p1*pz+@p2*fzb+@p3*fzc+@p4*fua return pz endfunc default: title="Rajput-Tenguria-Pandey Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="RTP Parameter 1" default=(1,0) endparam param p2 caption="RTP Parameter 2" default=(1,0) endparam param p3 caption="RTP Parameter 3" default=(1,0) endparam param p4 caption="RTP Parameter 4" default=(0.96,0.1) endparam param bp1a caption="Barnsley Parameter 1a" default=(-0.58,-1.8) endparam param bp1b caption="Barnsley Parameter 1b" default=(-0.44,0.18) endparam param bp1c caption="Barnsley Parameter 1c" default=(0.65,0.38) endparam param bp2a caption="Barnsley Parameter 2a" default=(-0.95,-0.11) endparam param bp2b caption="Barnsley Parameter 2b" default=(-1.3,4.3) endparam param bp2c caption="Barnsley Parameter 2c" default=(1.22,-0.89) endparam param bp3a caption="Barnsley Parameter 3a" default=(1,0) endparam param bp3b caption="Barnsley Parameter 3b" default=(1,0) endparam param bp3c caption="Barnsley Parameter 3c" default=(1,0) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc func f1c caption="Barnsley Function c" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_GeneralisedAgarwalMagnet2J(common.ulb:ConvergentDivergentFormula) { ;Das-Debata iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(21) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ac*(pz-1i)/(pz+1i) pz=pz+@ar/pz u=(1-@p1)*pz+@p1*(sqr((pz^3+3*(@mp1-1)*pz+(@mp1-1)*(@mp1-2))/(3*pz^2+3*(@mp1-2)*pz+(@mp1-1)*(@mp1-2)+1))) pz=(1-@p2)*(sqr((pz^3+3*(@mp2-1)*pz+(@mp2-1)*(@mp2-2))/(3*pz^2+3*(@mp2-2)*pz+(@mp2-1)*(@mp2-2)+1)))\ +@p2*(sqr((u^3+3*(@mp3-1)*u+(@mp3-1)*(@mp3-2))/(3*u^2+3*(@mp3-2)*u+(@mp3-1)*(@mp3-2)+1))) return pz endfunc default: title="Generalised Agarwal Magnet 2 J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="GA Parameter 1" default=(-1.7,0) endparam param p2 caption="GA Parameter 2" default=(-1.385,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.75,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.5,0) endparam param mp3 caption="Magnet Parameter 3" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.0001 endparam complex param p_power visible=false endparam } class OM_LemaPoplod(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz^2+c+1/c+@p1 c=@p2/c+pz return pz endfunc private: complex c default: title="Lema Poplod" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0.45,0) endparam param p1 caption="LP Parameter 1" default=(0,0) endparam param p2 caption="LP Parameter 2" default=(1.85,0) endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarGeneralisedAgarwalJulia2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) z2=@sf(pz) pz=@sf(pz) return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 a=pz b=z2 u=(1-@p1)*pz+@p1*(pz^@pow1+@js1) pz=(1-@p2)*(pz^@pow2+@js2)+@p2*(u^@pow3+@js3) u2=(1-@p1)*z2+@p1*(z2^@pow1+@js1) z2=(1-@p2)*(z2^@pow2+@js2)+@p2*(u2^@pow3+@js3) d=z2 z2=@bp1*@bf(b/a)+@bp2 pz=pz+@bp3*d return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+z2)/2|>@p_bailout) return bail endfunc private: complex z2 default: title="Bivar Generalised Agarwal Julia 2" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="GA Parameter 1" default=(0.45,0) endparam param p2 caption="GA Parameter 2" default=(0.38,0) endparam param bp1 caption="Bivar Parameter 1" default=(0.9,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(-1.55,0) endparam param js1 caption="Julia Seed 1" default=(-1.2,0) endparam param js2 caption="Julia Seed 2" default=(3.5,0) endparam param js3 caption="Julia Seed 3" default=(1.25,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param pow3 caption="Exponent 3" default=3 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanMunster(common.ulb:DivergentFormula) { ;Khan iteration from ;https://www.utgjiu.ro/math/sma/v06/p08.pdf ;(1.5) public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) else if @jm==1 pz=@sp else pz=@sp+1 endif endif c=@sf(fpixel) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ac*(pz-1i)/(pz+1i) if @jm==0 u=@p1*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+@mp3a)+@p2*pz v=@p3*(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)+@mp3b)+@p4*pz pz=@p3*pz+(1-@p3)*v elseif @jm==1 u=@p1*(@mp2a*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+(@mp3a+1)*c)+@p2*pz v=@p3*(@mp2b*u^2*(u-@mp1b)/(1-@mp1b*u)+(@mp3b+1)*c)+@p4*pz pz=@p3*pz+(1-@p3)*v elseif @jm==2 u=@p1*(@mp2a*c*pz^2*(pz-@mp1a)/(1-@mp1a*pz)+@mp3a)+@p2*pz v=@p3*(@mp2b*c*u^2*(u-@mp1b)/(1-@mp1b*u)+@mp3b)+@p4*pz pz=@p3*pz+(1-@p3)*v else u=@p1*(@mp2a*pz^2*(pz-@mp1a*c)/(1-@mp1a*c*pz)+@mp3a)+@p2*pz v=@p3*(@mp2b*u^2*(u-@mp1b*c)/(1-@mp1b*c*u)+@mp3b)+@p4*pz pz=@p3*pz+(1-@p3)*v endif return pz endfunc private: complex c default: title="Khan Munster" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm!=0 endparam param p1 caption="Khan Parameter 1" default=(1.2,0) endparam param p2 caption="Khan Parameter 2" default=(-2.85,0) endparam param p3 caption="Khan Parameter 3" default=(0.475,0) endparam param p4 caption="Khan Parameter 4" default=(-1.95,0) endparam param mp1a caption="Munster Parameter 1a" default=(1.5,0) endparam param mp1b caption="Munster Parameter 1b" default=(2,0) endparam param mp2a caption="Munster Parameter 2a" default=(1,0) endparam param mp2b caption="Munster Parameter 2b" default=(1,0) endparam param mp3a caption="Munster Parameter 3a" default=(0,0) endparam param mp3b caption="Munster Parameter 3b" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz if @jm==0 u=@p1*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a)+@p2*pz v=@p3*(u^@pow1b+u^@pow2b*@pp2b+@pp1b*a)+@p4*pz b=@p3*pz+(1-@p3)*v else u=@p1*(pz^@pow1a+pz^@pow2a*c+@pp1a*a)+@p2*pz v=@p3*(u^@pow1b+u^@pow2b*c+@pp1b*a)+@p4*pz b=@p3*pz+(1-@p3)*v endif a=pz pz=b return pz endfunc private: complex c complex a complex b default: title="Khan Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(-0.2,0) visible=@jm==1 endparam param p1 caption="Khan Parameter 1" default=(-0.9,0) endparam param p2 caption="Khan Parameter 2" default=(2.2,0) endparam param p3 caption="Khan Parameter 3" default=(1.35,0) endparam param p4 caption="Khan Parameter 4" default=(4.35,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(0.56667,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.76667,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=(3,0) endparam param pow1b caption="Exponent 1b" default=(2,0) endparam param pow2a caption="Exponent 2a" default=(2,0) endparam param pow2b caption="Exponent 2b" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarYadavTripathiJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) if @sv==0 z2=@sf(pz) pz=@sf(pz) elseif @sv==1 z2=@sf(pz) pz=@sp else pz=@sf(pz) z2=@sp endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@js3*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js3 u=@p1a*pz+@p2a*(pz^@pow1+@js1)+@p3a*(pz^@pow2+@js2) pz=@p1b*pz+@p2b*(pz^@pow2+@js2)+@p3b*(u^@pow1+@js1) u2=@p1a*z2+@p2a*(z2^@pow1+@js1)+@p3a*(z2^@pow2+@js2) z2=@p1b*z2+@p2b*(z2^@pow2+@js2)+@p3b*(u2^@pow1+@js1) else u=@p1a*pz+@p2a*(pz^@pow1+@js1)+@p3a*(pz^@pow2+@js2) pz=@p1b*pz+@p2b*(pz^@pow2+@js2)+@p3b*(u^@pow1+@js1) u2=@p1a*z2+@p2a*(z2^@pow1+@js1)+@p3a*(z2^@pow2+@js2) z2=@p1b*z2+@p2b*(z2^@pow2+@js2)+@p3b*(u2^@pow1+@js1) a=z2 z2=@bp1*@js3*@bf(z2/pz)+@bp2 pz=pz^2+@bp3*a^2+@js3 endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=|pz|>@p_bailout || |z2|>@p_bailout return bail endfunc private: complex z2 default: title="Bivar Yadav-Tripathi Julia" int param version caption="Version" default=100 visible=@version<100 endparam param sv caption="Start Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@sv!=0 endparam param v caption="Loop Variant" enum="1""2" endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-0.7,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-1.25,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(1,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(1,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(1,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(-0.8,0) endparam param js1 caption="Julia Seed 1" default=(-0.285,0) endparam param js2 caption="Julia Seed 2" default=(0.15,0) endparam param js3 caption="Julia Seed 3" default=(0.39,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarMunster3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) if @jm==0 u=@sf(pz) v=@sf(pz) pz=@sf(pz) else pz=@sp u=@sp v=@sp endif return pz return u return v endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 u=@up1*u+@up2 v=@vp1*v+@vp2 pz=pz+@as*sqr(pz) u=u+@as*sqr(u) v=v+@as*sqr(v) pz=pz+@ar/pz u=u+@ar/u v=v+@ar/v a=pz if @jm==0 pz=(1-@p1)*pz+@p1*(@mp2*u^2*(u-@mp1)/(1-@mp1*u)) u=(1-@p2)*a+@p2*(@mp2*v^2*(v-@mp1)/(1-@mp1*v)) v=(1-@p3)*a+@p3*(@mp2*a^2*(a-@mp1)/(1-@mp1*a)) elseif @jm==1 pz=(1-@p1)*pz+@p1*(c*u^2*(u-@mp1)/(1-@mp1*u)) u=(1-@p2)*a+@p2*(c*v^2*(v-@mp1)/(1-@mp1*v)) v=(1-@p3)*a+@p3*(c*a^2*(a-@mp1)/(1-@mp1*a)) elseif @jm==2 pz=(1-@p1)*pz+@p1*(@mp2*u^2*(u-@mp1)/(1-@mp1*u)+c) u=(1-@p2)*a+@p2*(@mp2*v^2*(v-@mp1)/(1-@mp1*v)+c) v=(1-(@p3+0.4))*a+(@p3+0.4)*(@mp2*a^2*(a-@mp1)/(1-@mp1*a)+c) elseif @jm==3 pz=(1-@p1)*pz+@p1*(@mp2*c*u^2*(u-@mp1)/(1-@mp1*u)+c) u=(1-@p2)*a+@p2*(@mp2*c*v^2*(v-@mp1)/(1-@mp1*v)+c) v=(1-(@p3+0.4))*a+(@p3+0.4)*(@mp2*c*a^2*(a-@mp1)/(1-@mp1*a)+c) elseif @jm==4 pz=(1-@p1)*pz+@p1*(@mp2*c*u^2*(u-@mp1*c)/(1-@mp1*c*u)+c) u=(1-@p2)*a+@p2*(@mp2*c*v^2*(v-@mp1*c)/(1-@mp1*c*v)+c) v=(1-(@p3+0.4))*a+(@p3+0.4)*(@mp2*c*a^2*(a-@mp1*c)/(1-@mp1*c*a)+c) elseif @jm==5 pz=(1-@p1)*pz+@p1*(@mp2*c*u^2*(u-@mp1*c)/(1-@mp1*c*u)) u=(1-@p2)*a+@p2*(@mp2*c*v^2*(v-@mp1*c)/(1-@mp1*c*v)) v=(1-(@p3+0.4))*a+(@p3+0.4)*(@mp2*c*a^2*(a-@mp1*c)/(1-@mp1*c*a)) else pz=(1-@p1)*pz+@p1*(@mp2*u^2*(u-@mp1*c)/(1-@mp1*c*u)+c) u=(1-@p2)*a+@p2*(@mp2*v^2*(v-@mp1*c)/(1-@mp1*c*v)+c) v=(1-(@p3+0.4))*a+(@p3+0.4)*(@mp2*a^2*(a-@mp1*c)/(1-@mp1*c*a)+c) endif return pz return u return v endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |u|>@p_bailout || |v|>@p_bailout) return bail endfunc private: complex c complex u complex v default: title="Trivar Munster 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3""M4""M5""M6" endparam param sp caption="Start Parameter" default=(-0.8,0) visible=@jm!=0 endparam param p1 caption="Trivar Parameter 1" default=(-0.4,0) endparam param p2 caption="Trivar Parameter 2" default=(-0.5,0) endparam param p3 caption="Trivar Parameter 3" default=(-0.6,0) endparam param mp1 caption="Munster Parameter" default=(0.5,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) visible=@jm!=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param up1 caption="U Parameter 1" default=(1,0) endparam param up2 caption="U Parameter 2" default=(0,0) endparam param vp1 caption="V Parameter 1" default=(1,0) endparam param vp2 caption="V Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_KhanMagnetJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz u=@p1*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p2*pz v=@p3*(sqr((u^2+@mp2-1)/(2*u+@mp2-2)))+@p4*pz pz=@p3*pz+(1-@p3)*v return pz endfunc default: title="Khan Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Khan Parameter 1" default=(-5,0) endparam param p2 caption="Khan Parameter 2" default=(-3,0) endparam param p3 caption="Khan Parameter 3" default=(1.1,0) endparam param p4 caption="Khan Parameter 4" default=(0.7,0) endparam param mp1 caption="Magnet Parameter 1" default=(1.75,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=1000.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00000001 endparam complex param p_power visible=false endparam } class OM_KhanMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) u=@p1*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p2*pz v=@p3*(sqr((u^2+@mp2*c-1)/(2*u+@mp2*c-2)))+@p4*pz pz=@p3*pz+(1-@p3)*v return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Khan Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Khan Parameter 1" default=(1.5,0) endparam param p2 caption="Khan Parameter 2" default=(2.3,0) endparam param p3 caption="Khan Parameter 3" default=(0.5,0) endparam param p4 caption="Khan Parameter 4" default=(-1.25,0) endparam param mp1 caption="Magnet Parameter 1" default=(1.75,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_BivarYadavTripathiMagnet2M(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp z2=@sp return pz return z2 endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 pz=pz+@ar/pz z2=z2+@ar/z2 if @v==0 a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^3+3*(@mp1*c-1)*pz+(@mp1*c-1)*(@mp1*c-2))/(3*pz^2+3*(@mp1*c-2)*pz+(@mp1*c-1)*(@mp1*c-2)+1))\ +@bp3*sqr((a^3+3*(@mp1*c-1)*a+(@mp1*c-1)*(@mp1*c-2))/(3*a^2+3*(@mp1*c-2)*a+(@mp1*c-1)*(@mp1*c-2)+1)) u=@p1a*pz+@p2a*(sqr((pz^3+3*(@mp1*c-1)*pz+(@mp1*c-1)*(@mp1*c-2))/(3*pz^2+3*(@mp1*c-2)*pz+(@mp1*c-1)*(@mp1*c-2)+1)))\ +@p3a*(sqr((pz^3+3*(@mp2*c-1)*pz+(@mp2*c-1)*(@mp2*c-2))/(3*pz^2+3*(@mp2*c-2)*pz+(@mp2*c-1)*(@mp2*c-2)+1))) pz=@p1b*pz+@p2b*(sqr((pz^3+3*(@mp2*c-1)*pz+(@mp2*c-1)*(@mp2*c-2))/(3*pz^2+3*(@mp2*c-2)*pz+(@mp2*c-1)*(@mp2*c-2)+1)))\ +@p3b*(sqr((u^3+3*(@mp1*c-1)*u+(@mp1*c-1)*(@mp1*c-2))/(3*u^2+3*(@mp1*c-2)*u+(@mp1*c-1)*(@mp1*c-2)+1))) u2=@p1a*z2+@p2a*(sqr((z2^3+3*(@mp1*c-1)*z2+(@mp1*c-1)*(@mp1*c-2))/(3*z2^2+3*(@mp1*c-2)*z2+(@mp1*c-1)*(@mp1*c-2)+1)))\ +@p3a*(sqr((z2^3+3*(@mp2*c-1)*z2+(@mp2*c-1)*(@mp2*c-2))/(3*z2^2+3*(@mp2*c-2)*z2+(@mp2*c-1)*(@mp2*c-2)+1))) z2=@p1b*z2+@p2b*(sqr((z2^3+3*(@mp2*c-1)*z2+(@mp2*c-1)*(@mp2*c-2))/(3*z2^2+3*(@mp2*c-2)*z2+(@mp2*c-1)*(@mp2*c-2)+1)))\ +@p3b*(sqr((u2^3+3*(@mp1*c-1)*u2+(@mp1*c-1)*(@mp1*c-2))/(3*u2^2+3*(@mp1*c-2)*u2+(@mp1*c-1)*(@mp1*c-2)+1))) else u=@p1a*pz+@p2a*(sqr((pz^3+3*(@mp1*c-1)*pz+(@mp1*c-1)*(@mp1*c-2))/(3*pz^2+3*(@mp1*c-2)*pz+(@mp1*c-1)*(@mp1*c-2)+1)))\ +@p3a*(sqr((pz^3+3*(@mp2*c-1)*pz+(@mp2*c-1)*(@mp2*c-2))/(3*pz^2+3*(@mp2*c-2)*pz+(@mp2*c-1)*(@mp2*c-2)+1))) pz=@p1b*pz+@p2b*(sqr((pz^3+3*(@mp2*c-1)*pz+(@mp2*c-1)*(@mp2*c-2))/(3*pz^2+3*(@mp2*c-2)*pz+(@mp2*c-1)*(@mp2*c-2)+1)))\ +@p3b*(sqr((u^3+3*(@mp1*c-1)*u+(@mp1*c-1)*(@mp1*c-2))/(3*u^2+3*(@mp1*c-2)*u+(@mp1*c-1)*(@mp1*c-2)+1))) u2=@p1a*z2+@p2a*(sqr((z2^3+3*(@mp1*c-1)*z2+(@mp1*c-1)*(@mp1*c-2))/(3*z2^2+3*(@mp1*c-2)*z2+(@mp1*c-1)*(@mp1*c-2)+1)))\ +@p3a*(sqr((z2^3+3*(@mp2*c-1)*z2+(@mp2*c-1)*(@mp2*c-2))/(3*z2^2+3*(@mp2*c-2)*z2+(@mp2*c-1)*(@mp2*c-2)+1))) z2=@p1b*z2+@p2b*(sqr((z2^3+3*(@mp2*c-1)*z2+(@mp2*c-1)*(@mp2*c-2))/(3*z2^2+3*(@mp2*c-2)*z2+(@mp2*c-1)*(@mp2*c-2)+1)))\ +@p3b*(sqr((u2^3+3*(@mp1*c-1)*u2+(@mp1*c-1)*(@mp1*c-2))/(3*u2^2+3*(@mp1*c-2)*u2+(@mp1*c-1)*(@mp1*c-2)+1))) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=sqr((pz^3+3*(@mp1*c-1)*pz+(@mp1*c-1)*(@mp1*c-2))/(3*pz^2+3*(@mp1*c-2)*pz+(@mp1*c-1)*(@mp1*c-2)+1))\ +@bp3*sqr((a^3+3*(@mp1*c-1)*a+(@mp1*c-1)*(@mp1*c-2))/(3*a^2+3*(@mp1*c-2)*a+(@mp1*c-1)*(@mp1*c-2)+1)) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) return |(pz+z2)/2|>=@p_upperbailout || |(pz+z2-2)/2|<=@p_lowerbailout endfunc private: complex c complex z2 default: title="Bivar Yadav-Tripathi Magnet 2 M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1a caption="Yadav-Tripathi Parameter 1a" default=(-0.5,0) endparam param p1b caption="Yadav-Tripathi Parameter 1b" default=(-1.5,0) endparam param p2a caption="Yadav-Tripathi Parameter 2a" default=(0.5,0) endparam param p2b caption="Yadav-Tripathi Parameter 2b" default=(1.5,0) endparam param p3a caption="Yadav-Tripathi Parameter 3a" default=(0.5,0) endparam param p3b caption="Yadav-Tripathi Parameter 3b" default=(1.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(0.5,0) endparam param mp2 caption="Magnet Parameter 2" default=(-2,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 exponential=true endparam complex param p_power visible=false endparam } class RajputTenguriaPandeyMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) u=@p1*pz+@p2*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p3*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p4*(sqr((pz^2+@mp3*c-1)/(2*pz+@mp3*c-2))) pz=@p1*pz+@p2*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2)))+@p3*(sqr((pz^2+@mp3*c-1)/(2*pz+@mp3*c-2)))+@p4*(sqr((u^2+@mp1*c-1)/(2*u+@mp1*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Rajput-Tenguria-Pandey Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="RTP Parameter 1" default=(0.6,0) endparam param p2 caption="RTP Parameter 2" default=(-0.5,0) endparam param p3 caption="RTP Parameter 3" default=(1,0) endparam param p4 caption="RTP Parameter 4" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(-0.3,0) endparam param mp2 caption="Magnet Parameter 2" default=(-0.67,0) endparam param mp3 caption="Magnet Parameter 3" default=(-2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 exponential=true endparam complex param p_power visible=false endparam } class OM_RajputTenguriaPandeyMagnetJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz pz=pz+@ac*(pz-1i)/(pz+1i) u=@p1*pz+@p2*(sqr((pz^2+@mp1-1)/(2*pz+@mp1-2)))+@p3*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2)))+@p4*(sqr((pz^2+@mp3-1)/(2*pz+@mp3-2))) pz=@p1*pz+@p2*(sqr((pz^2+@mp2-1)/(2*pz+@mp2-2)))+@p3*(sqr((pz^2+@mp3-1)/(2*pz+@mp3-2)))+@p4*(sqr((u^2+@mp1-1)/(2*u+@mp1-2))) return pz endfunc default: title="Rajput-Tenguria-Pandey Magnet J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="RTP Parameter 1" default=(0.6,0) endparam param p2 caption="RTP Parameter 2" default=(-0.5,0) endparam param p3 caption="RTP Parameter 3" default=(1,0) endparam param p4 caption="RTP Parameter 4" default=(0.5,0) endparam param mp1 caption="Magnet Parameter 1" default=(2.2,0) endparam param mp2 caption="Magnet Parameter 2" default=(3.75,0) endparam param mp3 caption="Magnet Parameter 3" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=1000.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00000001 endparam complex param p_power visible=false endparam } class OM_YadavBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) fz1=(0,0) fz2=(0,0) fu2=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ac*(pz-1i)/(pz+1i) pz=pz+@ar/pz if real(@f1a(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a(pz))>=0 fz1=(pz-@bp2a)*@bp1a else fz1=(pz+@bp2a)*@bp1a endif if real(@f1b(pz))*imag(@bp3b)+real(@bp3b)*imag(@f1b(pz))>=0 fz2=(pz-@bp2b)*@bp1b else fz2=(pz+@bp2b)*@bp1b endif u=(1-@p1)*fz1+@p1*fz2 if real(@f1b(u))*imag(@bp3b)+real(@bp3b)*imag(@f1b(u))>=0 fu2=(u-@bp2b)*@bp1b else fu2=(u+@bp2b)*@bp1b endif pz=fu2 return pz endfunc private: complex fz1 complex fz2 complex fu2 default: title="Yadav Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Yadav Parameter" default=(0.45,0) endparam param bp1a caption="Barnsley Parameter 1a" default=(0.81,-0.53) endparam param bp1b caption="Barnsley Parameter 1b" default=(-0.42,-1.69) endparam param bp2a caption="Barnsley Parameter 2a" default=(2.49,2.07) endparam param bp2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param bp3a caption="Barnsley Parameter 3a" default=(1,1) endparam param bp3b caption="Barnsley Parameter 3b" default=(1,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_YadavMagnetM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ac*(pz-1i)/(pz+1i) pz=pz+@ar/pz u=(1-@p1)*(sqr((pz^2+@mp1*c-1)/(2*pz+@mp1*c-2)))+@p1*(sqr((pz^2+@mp2*c-1)/(2*pz+@mp2*c-2))) pz=(sqr((u^2+@mp2*c-1)/(2*u+@mp2*c-2))) return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex c default: title="Yadav Magnet M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0.1,0) endparam param p1 caption="Yadav Parameter" default=(-1.25,0) endparam param mp1 caption="MagnetParameter 1" default=(-2,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00005 endparam complex param p_power visible=false endparam } class OM_YadavMagnet2J(common.ulb:ConvergentDivergentFormula) { ;Yadav iteration from ;https://link.springer.com/article/10.1007/s11071-017-3813-6 ;(25) public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@ac*(pz-1i)/(pz+1i) pz=pz+@ar/pz u=(1-@p1)*(sqr((pz^3+3*(@mp1-1)*pz+(@mp1-1)*(@mp1-2))/(3*pz^2+3*(@mp1-2)*pz+(@mp1-1)*(@mp1-2)+1)))\ +@p1*(sqr((pz^3+3*(@mp2-1)*pz+(@mp2-1)*(@mp2-2))/(3*pz^2+3*(@mp2-2)*pz+(@mp2-1)*(@mp2-2)+1))) pz=sqr((u^3+3*(@mp2-1)*u+(@mp2-1)*(@mp2-2))/(3*u^2+3*(@mp2-2)*u+(@mp2-1)*(@mp2-2)+1)) return pz endfunc default: title="Yadav Magnet 2 J" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Yadav Parameter" default=(-1.75,0) endparam param mp1 caption="Magnet Parameter 1" default=(-0.2,0) endparam param mp2 caption="Magnet Parameter 2" default=(0.7,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ac caption="Add Cayley Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=1000.0 exponential=true endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000008 exponential=true endparam complex param p_power visible=false endparam } class OM_Ptodopelp(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 pz=@sp c=@sf(fpixel) else pz=@sf(pz) c=@js endif return pz return c endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @v==0 pz=pz^3+@p1*c*pz+@p2*c c=@p3*c+pz elseif @v==1 pz=pz^3+(@p1-1)*pz+@p2*c c=@p3*c+pz elseif @v==2 pz=pz^3+@p1*pz+@p2*c c=c/2+@p3*pz else pz=pz^3-@p1*c*pz+@p2 c=3*@p3*c/2+pz endif return pz return c endfunc private: complex c default: title="Ptodopelp" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0.1,0) visible=@mj==0 endparam param js caption="Julia Seed" default=(0,0) visible=@mj==1 endparam param p1 caption="Ptodopelp Parameter 1" default=(0.925,0) endparam param p2 caption="Ptodopelp Parameter 2" default=(1,0) endparam param p3 caption="Ptodopelp Parameter 3" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_BivarMunster6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 z2=@sf(pz) pz=@sf(pz) c=@js else if @st==0 z2=@sf(pz) pz=@sf(pz) else pz=@sp z2=@sp endif c=@sf(fpixel) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 if @v==0 pz=@mp3*(pz^2+@mp1*pz+c)*(pz-@mp2)/(1-@mp2*pz) z2=@mp3*(z2^2+@mp1*z2+c)*(z2-@mp2)/(1-@mp2*z2) a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c else a=z2 z2=@bp1*@bf(z2/pz)+@bp2 pz=@bp3*(pz+a)+c pz=@mp3*(pz^2+@mp1*pz+c)*(pz-@mp2)/(1-@mp2*pz) z2=@mp3*(z2^2+@mp1*z2+c)*(z2-@mp2)/(1-@mp2*z2) endif return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 default: title="Bivar Munster 6" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 && @st==1 endparam param v caption="Variant" enum="1""2" endparam param mp1 caption="Munster Parameter 1" default=(1.5,0) endparam param mp2 caption="Munster Parameter 2" default=(4,0) endparam param mp3 caption="Munster Parameter 3" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param bp3 caption="Bivar Parameter 3" default=(1,0) endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam func sf caption="Pixel Function" default=ident() endfunc func bf caption="Bivar Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(1,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Pyrakona(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==1 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @mj==0 if i==0 pz=(pz^2+@pp1*@sf(fpixel))*(@p1-6*@p2*pz^2+pz^4)*(pz-@p3)/(1-@p3*pz) i=i+1 else pz=(pz^2+@pp2*@sf(fpixel))*(pz-@p3)/(1-@p3*pz) endif else if i==0 pz=(pz^2+@js1)*(@p1-6*@p2*pz^2+pz^4)*(pz-@p3)/(1-@p3*pz) i=i+1 else pz=(pz^2+@js2)*(pz-@p3)/(1-@p3*pz) endif endif return pz endfunc private: complex fpixel int i default: title="Pyrakona" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 && @st==1 endparam param p1 caption="Pyrakona Parameter 1" default=(1,0) endparam param p2 caption="Pyrakona Parameter 2" default=(1,0) endparam param p3 caption="Pyrakona Parameter 3" default=(2,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@mj==0 endparam param pp2 caption="Pixel Parameter 2" default=(1,0) visible=@mj==0 endparam param js1 caption="Julia Seed 1" default=(-0.75,0) visible=@mj==1 endparam param js2 caption="Julia Seed 2" default=(0.25,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Pyrakona2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==1 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @mj==0 if i==0 pz=(@p1-6*@p2*pz^2+pz^4)+@pp1*@sf(fpixel) i=i+1 else pz=(pz^2+@pp2*@sf(fpixel))*(pz-@p3)/(1-@p3*pz) endif else if i==0 pz=(@p1-6*@p2*pz^2+pz^4)+@js1 i=i+1 else pz=(pz^2+@js2)*(pz-@p3)/(1-@p3*pz) endif endif return pz endfunc private: complex fpixel int i default: title="Pyrakona 2" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 && @st==1 endparam param p1 caption="Pyrakona Parameter 1" default=(1,0) endparam param p2 caption="Pyrakona Parameter 2" default=(0.4,0) endparam param p3 caption="Pyrakona Parameter 3" default=(2,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@mj==0 endparam param pp2 caption="Pixel Parameter 2" default=(1,0) visible=@mj==0 endparam param js1 caption="Julia Seed 1" default=(-0.75,0) visible=@mj==1 endparam param js2 caption="Julia Seed 2" default=(-0.7,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Gnoyzic(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @mj==0 if @st==1 pz=@sp else pz=@sf(pz) endif else pz=@sf(pz) endif i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if @mj==0 if i==0 pz=@p2*pz^4*(pz+@p1)/(1+@p1*pz)+@pp1*@sf(fpixel) i=i+1 elseif i==1 pz=@p2*pz^3*(pz+@p1)/(1+@p1*pz)+@pp2*@sf(fpixel) i=i+1 else pz=@p2*pz^2*(pz+@p1)/(1+@p1*pz)+@pp3*@sf(fpixel) endif else if i==0 pz=@p2*pz^4*(pz-@p1)/(1-@p1*pz)+@js1 i=i+1 elseif i==1 pz=@p2*pz^3*(pz-@p1)/(1-@p1*pz)+@js2 i=i+1 else pz=@p2*pz^2*(pz-@p1)/(1-@p1*pz)+@js3 endif endif return pz endfunc private: complex fpixel int i default: title="Gnoyzic" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@mj==0 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 && @st==1 endparam param p1 caption="Gnoyzic Parameter 1" default=(1.5,0) endparam param p2 caption="Gnoyzic Parameter 2" default=(-1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@mj==0 endparam param pp2 caption="Pixel Parameter 2" default=(1,0) visible=@mj==0 endparam param pp3 caption="Pixel Parameter 3" default=(1,0) visible=@mj==0 endparam param js1 caption="Julia Seed 1" default=(-0.75,0) visible=@mj==1 endparam param js2 caption="Julia Seed 2" default=(-0.7,0) visible=@mj==1 endparam param js3 caption="Julia Seed 3" default=(0.525,0) visible=@mj==1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorMagnezium(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @st==0 pz=@sp else pz=@sf(pz) endif i2=0 return pz endfunc complex func Iterate(complex pz) pz=pz^2 pz=(pz+@sf(fpixel)+@ap*@af(values[i2]))/(pz-1) i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex fpixel default: title="Aleator Magnezium" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Parameter""Pixel" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==0 endparam param ap caption="Aleator Parameter" default=(1,0) endparam param seed caption="Random Seed" default=12345678 endparam func af caption="Aleator Function" default=ident() endfunc func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AleatorMagnetJBivar(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile k=@cf1(pz) pz=@cf1(pz) c=@p1 i2=0 return pz return k endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 k=@kp1*k+@kp2 a=k if @v==0 k=@bp1*k/pz+@bp2 pz=sqr((pz^2+c-1)/(2*pz+c-2))+sqr((a^2+c-1)/(2*a+c-2))+@p2+@ap*@af(values[i2]) elseif @v==1 k=@bp1*k/pz+@bp2 pz=sqr(((pz+@ap*@af(values[i2]))^2+c-1)/(2*(pz+@ap*@af(values[i2]))+c-2))+sqr(((a+@ap*@af(values[i2]))^2+c-1)/(2*(a+@ap*@af(values[i2]))+c-2))+@p2 elseif @v==2 k=@bp1*k/pz+@bp2+@ap*@af(values[i2]) pz=sqr((pz^2+c-1)/(2*pz+c-2))+sqr((a^2+c-1)/(2*a+c-2))+@p2 elseif @v==3 k=@bp1*k/pz+@bp2+@ap*@af(values[i2]) pz=sqr((pz^2+c-1)/(2*pz+c-2))+sqr((a^2+c-1)/(2*a+c-2))+@p2+@ap*@af(values[i2]) elseif @v==4 k=@bp1*k/pz+@bp2 pz=sqr(((pz+@ap*@af(values[i2]))^2+c-1)/(2*(pz+@ap*@af(values[i2]))+c-2))+sqr(((a+@ap*@af(values[i2]))^2+c-1)/(2*(a+@ap*@af(values[i2]))+c-2))+@p2-@ap*@af(values[i2]) elseif @v==5 k=@bp1*k/pz+@bp2+@ap*@af(values[i2]) pz=sqr(((pz+@ap*@af(values[i2]))^2+c-1)/(2*(pz+@ap*@af(values[i2]))+c-2))-sqr(((a-@ap*@af(values[i2]))^2+c-1)/(2*(a-@ap*@af(values[i2]))+c-2))+@p2 elseif @v==6 k=@bp1*k/pz+@bp2 pz=sqr(((pz-@ap*@af(values[i2]))^2+c-1)/(2*(pz-@ap*@af(values[i2]))+c-2))+sqr(((a-@ap*@af(values[i2]))^2+c-1)/(2*(a-@ap*@af(values[i2]))+c-2))+@p2+@ap*@af(values[i2]) elseif @v==7 k=@bp1*k/pz+@bp2+@ap*@af(values[i2]) pz=sqr(((pz-@ap*@af(values[i2]))^2+c-1)/(2*(pz-@ap*@af(values[i2]))+c-2))+sqr(((a-@ap*@af(values[i2]))^2+c-1)/(2*(a-@ap*@af(values[i2]))+c-2))+@p2 elseif @v==8 k=@bp1*k/pz+@bp2-@ap*@af(values[i2]) pz=sqr((pz^2+c-1)/(2*pz+c-2))+sqr((a^2+c-1)/(2*a+c-2))+@p2+@ap*@af(values[i2]) elseif @v==9 k=@bp1*k/pz+@bp2-@ap*@af(values[i2]) pz=sqr(((pz+@ap*@af(values[i2]))^2+c-1)/(2*(pz+@ap*@af(values[i2]))+c-2))-sqr(((a-@ap*@af(values[i2]))^2+c-1)/(2*(a-@ap*@af(values[i2]))+c-2))+@p2+0.2 elseif @v==10 k=@bp1*k/pz+@bp2-@ap*@af(values[i2]) pz=sqr(((pz+@ap*@af(values[i2]))^2+c-1)/(2*(pz+@ap*@af(values[i2]))+c-2))-sqr(((a-@ap*@af(values[i2]))^2+c-1)/(2*(a-@ap*@af(values[i2]))+c-2))+@p2-@ap*@af(values[i2]) elseif @v==11 k=@bp1*k/pz+@bp2+@ap*@af(values[i2]) pz=sqr((pz^2+c-@ap*@af(values[i2]))/(2*pz+c-2*@ap*@af(values[i2])))+sqr((a^2+c-1)/(2*a+c-2))+@p2 elseif @v==12 k=@bp1*k/pz+@bp2-@ap*@af(values[i2]) pz=sqr((pz^2+c-@ap*@af(values[i2]))/(2*pz+c-2*@ap*@af(values[i2])))+sqr((a^2+c-1)/(2*a+c-2))+@p2-0.1 elseif @v==13 k=@bp1*k/pz+@bp2-@ap*@af(values[i2]) pz=sqr((pz^2+c-1)/(2*pz+c-2))+sqr((a^2+c-1)/(2*a+c-2))+@p2+0.3 endif i2=i2+1 return pz return k endfunc private: float values[#maxiter] int i int seed complex k int i2 complex c default: title="Aleator Magnet J Bivar" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param p1 caption="Magnet Parameter" default=(1,0) endparam param bp1 caption="Bivar Parameter 1" default=(-0.5,0) endparam param bp2 caption="Bivar Parameter 2" default=(-0.5,0) endparam param p2 caption="C Parameter" default=(0,0) endparam param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param kp1 caption="K Parameter 1" default=(1,0) endparam param kp2 caption="K Parameter 2" default=(0,0) endparam func cf1 caption="Pixel Function" default=ident() endfunc param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.0000000001 endparam complex param p_power visible=false endparam } class OM_AleatorNewton(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sf(pz) pz=pz+@sp*@sf2(pz) i2=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2 pz=pz-@np1*f/f1+@np2-0.5 elseif @v==1 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2 elseif @v==2 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==3 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-1.045 elseif @v==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2-0.6 elseif @v==5 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==6 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==7 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==8 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2-0.75 elseif @v==9 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-1.75 elseif @v==10 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==11 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-0.5 elseif @v==12 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz)+@ap*@af(values[i2]) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-0.9 elseif @v==13 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1 f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2-0.3 elseif @v==14 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-1+@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==15 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2 elseif @v==16 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2 elseif @v==17 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-@ap*@af(values[i2]) f1=3*pz^2+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==18 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3-@ap*@af(values[i2]) f1=3*pz^2 pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) endif pz=pz+@app*@apf(fpixel) i2=i2+1 return pz endfunc private: complex fpixel float values[#maxiter] int i int seed int i2 default: title="Aleator Newton J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19" endparam param np1 caption="Newton Parameter 1" default=(1,0) endparam param np2 caption="Newton Parameter 2" default=(0,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param sp caption="Start Parameter" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc func sf2 caption="Start Function 2" default=sin() visible=@sp!=0 endfunc param app caption="Add Pixel Parameter" default=(0,0) endparam func apf caption="Add Pixel Function" default=ident() visible=@app!=0 endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AleatorNewtonM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz c=@sf(fpixel) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @st==0 pz=@sf(pz) else if @v==1 || @v==3 || @v==14 || @v==15 || @v==18 pz=@sp+1 else pz=@sp endif endif i2=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2-0.5 elseif @v==1 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2 elseif @v==2 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==3 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-1.045 elseif @v==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2-0.6 elseif @v==5 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==6 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==7 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==8 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2-0.75 elseif @v==9 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-1.75 elseif @v==10 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==11 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-0.5 elseif @v==12 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz)+@ap*@af(values[i2]) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2])-0.9 elseif @v==13 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2-0.3 elseif @v==14 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c-@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==15 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz-@p2*c+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==16 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2 elseif @v==17 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 elseif @v==18 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c+@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2+@ap*@af(values[i2]) elseif @v==19 pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c-@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz+@ap*@af(values[i2]) pz=pz-@np1*f/f1+@np2 else pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz+@arp/pz pz=pz+@asp*sqr(pz) f=pz^3+@p1*c*pz^2+@p2*c-@ap*@af(values[i2]) f1=3*pz^2+2*@p1*c*pz pz=pz-@np1*f/f1+@np2 endif i2=i2+1 return pz endfunc private: complex c float values[#maxiter] int i int seed int i2 default: title="Aleator Newton M" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0,0) visible=@st==1 endparam param p1 caption="Newton Parameter 1" default=(1,0) endparam param p2 caption="Newton Parameter 2" default=(1,0) endparam param np1 caption="Newton Parameter 3" default=(1,0) endparam param np2 caption="Newton Parameter 4" default=(0,0) endparam param v caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19"\ "20""21" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0.5,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_AleatorMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp c=@sf(fpixel) i2=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 pz=pz^@pow+c+@ap*@af(values[i2])/10 elseif @v==1 pz=(pz+@ap*@af(values[i2])/10)^@pow+c elseif @v==2 pz=(pz+@ap*@af(values[i2])/10)^@pow+c+@ap*@af(values[i2])/10 else pz=(pz+@ap*@af(values[i2])/10)^@pow+c-@ap*@af(values[i2])/10 endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param sp caption="Start Parameter" default=(0,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorMunsterM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp c=@sf(fpixel) i2=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @sp!=0 || @zp2!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3+c elseif @v==1 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3+@ap*@af(values[i2])+c elseif @v==2 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])))+@mp3+c elseif @v==3 pz=@mp2*(pz+@ap*@af(values[i2]))^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3+c elseif @v==4 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])))+@ap*@af(values[i2])+@mp3+c elseif @v==5 pz=@mp2*(pz+@ap*@af(values[i2]))^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])))+@mp3+c elseif @v==6 pz=@mp2*(pz+@ap*@af(values[i2])/4)^2*(pz+@ap*@af(values[i2])/4-@mp1)/(1-@mp1*pz)+@ap*@af(values[i2])/4+@mp3+c elseif @v==7 pz=@mp2*(pz+@ap*@af(values[i2])/4)^2*(pz+@ap*@af(values[i2])/4-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])/4))+@ap*@af(values[i2])/4+@mp3+c elseif @v==8 pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*pz)+@ap*@af(values[i2])+@mp3+c elseif @v==9 pz=@mp2*(pz+@ap*@af(values[i2])/4)^2*(pz-@mp1)/(1-@mp1*pz)+@mp3+c elseif @v==10 pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])))+@mp3+c elseif @v==11 pz=@mp2*pz^2*(pz-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])/4))+@ap*@af(values[i2])/4+@mp3+c elseif @v==12 pz=@mp2*(pz+@ap*@af(values[i2])/4)^2*(pz-@mp1)/(1-@mp1*pz)+@ap*@af(values[i2])/4+@mp3+c elseif @v==13 pz=@mp2*(pz+@ap*@af(values[i2])/4)^2*(pz-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])/4))+@ap*@af(values[i2])/4+@mp3+c endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator Munster M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14" endparam param sp caption="Start Parameter 1" default=(0,0) endparam param mp1 caption="Munster Parameter 1" default=(2,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param mp3 caption="Munster Parameter 3" default=(0,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @zp2!=0 endparam param asp caption="Add Sqr Parameter" default=(1,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorPlug(common.ulb:Formula) { ;This applies random values to plug-in formulas public: import "Common.ulb" import "om.ulb" complex func Init(complex pz) f=new @formulaClass(0) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=f.Init(pz) i2=0 return pz endfunc complex func Iterate(complex pz) if @v==0 pz=f.Iterate(pz)+@ap*@af(values[i2]) elseif @v==1 pz=f.Iterate(pz+@ap*@af(values[i2])) elseif @v==2 pz=f.Iterate(pz+@ap*@af(values[i2]))+@ap*@af(values[i2]) else pz=f.Iterate(pz+@ap*@af(values[i2]))-@ap*@af(values[i2]) endif i2=i2+1 return pz endfunc bool func IsBailedOut(complex pz) return f.IsBailedOut(pz) endfunc private: Formula f float values[#maxiter] int i int seed int i2 default: title="Aleator Plug" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam Formula param formulaClass caption="Fractal Formula 2" default=OM_MunsterJ endparam param p_power visible=false endparam } class OM_AltAleatorMunsterM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp c=@sf(fpixel) i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @sp!=0 || @zp2!=0 pz=pz+@arp/pz endif if @alv==0 if @av==0 if i3==0 pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c i3=i3-1 endif else if i3==0 pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c i3=i3+1 else pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3-1 endif endif elseif @alv==1 if @av==0 if i3==0 pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c+@ap*@af(values[i2]) i3=i3-1 endif else if i3==0 pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3-1 endif endif else if @av==0 if i3==0 pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c-@ap*@af(values[i2]) i3=i3-1 endif else if i3==0 pz=@p4*pz^2*(pz-@p2)/(1-@p2*pz)+c-@ap*@af(values[i2]) i3=i3+1 else pz=@p3*pz^2*(pz-@p1)/(1-@p1*pz)+c+@ap*@af(values[i2]) i3=i3-1 endif endif endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="Alt Aleator Munster M" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param alv caption="Aleator Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0,0) endparam param p1 caption="Munster Parameter 1" default=(-2,0) endparam param p2 caption="Munster Parameter 2" default=(-1.5,0) endparam param p3 caption="Munster Parameter 3" default=(1,0) endparam param p4 caption="Munster Parameter 4" default=(1,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @zp2!=0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorMunsterJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sf(pz) i2=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@acp*(pz-1i)/(pz+1i) if @v==0 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3 elseif @v==1 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3+@ap*@af(values[i2]) elseif @v==2 pz=@mp2*pz^2*(pz+@ap*@af(values[i2])-@mp1)/(1-@mp1*(pz+@ap*@af(values[i2])))+@mp3 else pz=@mp2*(pz+(@ap-0.5)*@af(values[i2]))^2*(pz+(@ap-0.5)*@af(values[i2])-@mp1)/(1-@mp1*pz)+@mp3 endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 default: title="Aleator Munster J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Aleator Variant" enum="1""2""3""4" endparam param mp1 caption="Munster Parameter 1" default=(-1.75,0) endparam param mp2 caption="Munster Parameter 2" default=(1,0) endparam param mp3 caption="Munster Parameter 3" default=(0,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Start Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param acp caption="Add Cayley Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorBarnsley2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@fn1(pz) i2=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 pz=@fn3(pz-@p8*real(pz)/cabs(real(pz)))*@p7 if @v==0 if real(@fn4(pz))*imag(@p1)+real(@p1)*imag(@fn4(pz))>=0 pz=(pz-@p2)*@p1+@ap*@af(values[i2]) else pz=(pz+@p2)*@p1-@ap*@af(values[i2]) endif elseif @v==1 if real(@fn4(pz))*imag(@p1)+real(@p1)*imag(@fn4(pz))>=0 pz=(pz-(@p2-0.22)+@ap*@af(values[i2]))*@p1 else pz=(pz+(@p2-0.22)-@ap*@af(values[i2]))*@p1 endif elseif @v==2 if real(@fn4(pz))*imag(@p1)+real(@p1)*imag(@fn4(pz))>=0 pz=(pz-@p2)*@p1-@ap*@af(values[i2]) else pz=(pz+@p2)*@p1+@ap*@af(values[i2]) endif elseif @v==3 if real(@fn4(pz))*imag(@p1)+real(@p1)*imag(@fn4(pz))>=0 pz=(pz-(@p2+0.23)-@ap*@af(values[i2]))*@p1 else pz=(pz+(@p2+0.23)+@ap*@af(values[i2]))*@p1 endif elseif @v==4 if real(@fn4(pz))*imag(@p1)+real(@p1)*imag(@fn4(pz))>=0 pz=(pz-(@p2+0.12)-@ap*@af(values[i2]))*@p1-@ap*@af(values[i2]) else pz=(pz+(@p2+0.12)+@ap*@af(values[i2]))*@p1+@ap*@af(values[i2]) endif endif i2=13 return pz endfunc private: float values[#maxiter] int i int seed int i2 default: title="Aleator Barnsley 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5" endparam param seed caption="Random Seed" default=12345678 endparam param ap caption="Aleator Parameter" default=(1,0) endparam param p1 caption="Barnsley Parameter 1" default=(0.356,-0.972) endparam param p2 caption="Barnsley Parameter 2" default=(1,0) endparam param p7 caption="Barnsley Parameter 3" default=(1,0) endparam param p8 caption="Barnsley Parameter 4" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Start Function" default=ident() endfunc func fn4 caption="Barnsley Function 1" default=ident() endfunc func fn3 caption="Barnsley Function 2" default=ident() endfunc func af caption="Aleator Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltAleatorMunsterM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @v==1 && @av==2 pz=@sp+0.75 elseif @v==2 && @av==2 pz=@sp+0.65 else pz=@sp endif c=@sf(fpixel) i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @av==0 if @v==0 if i3==0 pz=pz^2*(pz-@mp1)/(1-@mp1*pz)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2*(pz-@mp2)/(1-@mp2*pz)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2*(pz-@mp3)/(1-@mp3*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==1 if i3==0 pz=c*pz^2*(pz-@mp1)/(1-@mp1*pz)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=c*pz^2*(pz-@mp2)/(1-@mp2*pz)+@ap*@af(values[i2]) i3=2 else pz=c*pz^2*(pz-@mp3)/(1-@mp3*pz)+@ap*@af(values[i2]) i3=0 endif else if i3==0 pz=pz^2*(pz-c*@mp1)/(1-c*@mp1*pz)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2*(pz-c*@mp2)/(1-c*@mp2*pz)+@ap*@af(values[i2]) i3=2 else pz=pz^2*(pz-c*@mp3)/(1-c*@mp3*pz)+@ap*@af(values[i2]) i3=0 endif endif elseif @av==1 if @v==0 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@mp1)/(1-@mp1*pz)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2*(pz-@mp2)/(1-@mp2*pz)+c+@ap*@af(values[i2]) i3=2 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@mp3)/(1-@mp3*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==1 if i3==0 pz=c*(pz+@ap*@af(values[i2]))^2*(pz-@mp1)/(1-@mp1*pz)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=c*(pz+@ap*@af(values[i2]))^2*(pz-@mp2)/(1-@mp2*pz)+@ap*@af(values[i2]) i3=2 else pz=c*(pz+@ap*@af(values[i2]))^2*(pz-@mp3)/(1-@mp3*pz)+@ap*@af(values[i2]) i3=0 endif else if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-c*@mp1)/(1-c*@mp1*pz)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2*(pz-c*@mp2)/(1-c*@mp2*pz)+@ap*@af(values[i2]) i3=2 else pz=(pz+@ap*@af(values[i2]))^2*(pz-c*@mp3)/(1-c*@mp3*pz)+@ap*@af(values[i2]) i3=0 endif endif else if @v==0 if i3==0 pz=pz^2*(pz-@mp1+@ap*@af(values[i2]))/(1-@mp1*(pz+@ap*@af(values[i2])))+c i3=1 elseif i3==1 pz=pz^2*(pz-@mp2+@ap*@af(values[i2]))/(1-@mp2*(pz+@ap*@af(values[i2])))+c i3=2 else pz=pz^2*(pz-@mp3+@ap*@af(values[i2]))/(1-@mp3*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @v==1 if i3==0 pz=c*pz^2*(pz-@mp1+@ap*@af(values[i2]))/(1-@mp1*(pz+@ap*@af(values[i2]))) i3=1 elseif i3==1 pz=c*pz^2*(pz-@mp2+@ap*@af(values[i2]))/(1-@mp2*(pz+@ap*@af(values[i2]))) i3=2 else pz=c*pz^2*(pz-@mp3+@ap*@af(values[i2]))/(1-@mp3*(pz+@ap*@af(values[i2]))) i3=0 endif else if i3==0 pz=pz^2*(pz-c*@mp1+@ap*@af(values[i2]))/(1-c*@mp1*(pz+@ap*@af(values[i2]))) i3=1 elseif i3==1 pz=pz^2*(pz-c*@mp2+@ap*@af(values[i2]))/(1-c*@mp2*(pz+@ap*@af(values[i2]))) i3=2 else pz=pz^2*(pz-c*@mp3+@ap*@af(values[i2]))/(1-c*@mp3*(pz+@ap*@af(values[i2]))) i3=0 endif endif endif i2=12+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="3Alt Aleator Munster M" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Munster Variant" enum="1""2""3" endparam param mp1 caption="Munster Parameter 1" default=(2,0) endparam param mp2 caption="Munster Parameter 2" default=(1.5,0) endparam param mp3 caption="Munster Parameter 3" default=(0.5,0) endparam param av caption="Aleator Variant" enum="1""2""3" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltAleatorX(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @v==1 && @av==2 pz=@sp+0.75 elseif @v==2 && @av==2 pz=@sp+0.65 else pz=@sp endif c=@sf(fpixel) i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @av==0 if @v==0 if i3==0 pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=0 endif elseif @v==1 if i3==0 pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=2 else pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=0 endif elseif @v==2 if i3==0 pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=2 else pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=0 endif elseif @v==3 if i3==0 pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=0 endif elseif @v==4 if i3==0 pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=0 endif else if i3==0 pz=c*pz^3+@xp1*c*pz^2+@xp2+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=@xp1*c*pz^3+pz^2+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=pz^3+@xp1*c*pz^2+@xp2*c+@ap*@af(values[i2]) i3=0 endif endif elseif @av==1 if @v==0 if i3==0 pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=1 elseif i3==1 pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=2 else pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=0 endif elseif @v==1 if i3==0 pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=1 elseif i3==1 pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=2 else pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=0 endif elseif @v==2 if i3==0 pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=1 elseif i3==1 pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=2 else pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=0 endif elseif @v==3 if i3==0 pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=1 elseif i3==1 pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=2 else pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=0 endif elseif @v==4 if i3==0 pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=1 elseif i3==1 pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=2 else pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=0 endif else if i3==0 pz=c*pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2 i3=1 elseif i3==1 pz=@xp1*c*pz^3+(pz+@ap*@af(values[i2]))^2+@xp2*c i3=2 else pz=pz^3+@xp1*c*(pz+@ap*@af(values[i2]))^2+@xp2*c i3=0 endif endif else if @v==0 if i3==0 pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=1 elseif i3==1 pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=2 else pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=0 endif elseif @v==1 if i3==0 pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=1 elseif i3==1 pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=2 else pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=0 endif elseif @v==2 if i3==0 pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=1 elseif i3==1 pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=2 else pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=0 endif elseif @v==3 if i3==0 pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=2 else pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=0 endif elseif @v==4 if i3==0 pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=2 else pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=0 endif else if i3==0 pz=c*(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2 i3=1 elseif i3==1 pz=@xp1*c*(pz+@ap*@af(values[i2]))^3+pz^2+@xp2*c i3=2 else pz=(pz+@ap*@af(values[i2]))^3+@xp1*c*pz^2+@xp2*c i3=0 endif endif endif i2=12+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="3Alt Aleator X" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param av caption="Aleator Variant" enum="1""2""3" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltAleatorX2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if (@v==1 && @av==1) || (@v==3 && @av==2) || (@v==2 && @av==2) || (@v==0 && @av==1) pz=@sp+1 else pz=@sp endif c=@sf(fpixel) i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @av==0 if @v==0 if i3==0 pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=2 else pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==1 if i3==0 pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=0 endif elseif @v==2 if i3==0 pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==3 if i3==0 pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=0 endif elseif @v==4 if i3==0 pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=2 else pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=0 endif else if i3==0 pz=(pz^4-@xp1)/(pz^2+@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=(pz^3-@xp2)/(pz+@Xp2)+@xp1*c+@ap*@af(values[i2]) i3=2 else pz=pz^2*(pz-@xp1)/(pz+@xp1)+@xp2*c+@ap*@af(values[i2]) i3=0 endif endif elseif @av==1 if @v==0 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=1 elseif i3==1 pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=2 else pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2) i3=0 endif elseif @v==1 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=1 elseif i3==1 pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2)+c i3=2 else pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=0 endif elseif @v==2 if i3==0 pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=2 else pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2)+c i3=0 endif elseif @v==3 if i3==0 pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=1 elseif i3==1 pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2)+c i3=2 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=0 endif elseif @v==4 if i3==0 pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2)+c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=2 else pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=0 endif else if i3==0 pz=((pz+@ap*@af(values[i2]))^4-@xp1)/(pz^2+@xp2)+c i3=1 elseif i3==1 pz=((pz+@ap*@af(values[i2]))^3-@xp2)/(pz+@Xp2)+@xp1*c i3=2 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(pz+@xp1)+@xp2*c i3=0 endif endif else if @v==0 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=1 elseif i3==1 pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=2 else pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=0 endif elseif @v==1 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=1 elseif i3==1 pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=2 else pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=0 endif elseif @v==2 if i3==0 pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=1 elseif i3==1 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=2 else pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=0 endif elseif @v==3 if i3==0 pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=1 elseif i3==1 pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=2 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=0 endif elseif @v==4 if i3==0 pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=1 elseif i3==1 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=2 else pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=0 endif else if i3==0 pz=(pz^4-@xp1)/((pz+@ap*@af(values[i2]))^2+@xp2)+c i3=1 elseif i3==1 pz=(pz^3-@xp2)/((pz+@ap*@af(values[i2]))+@Xp2)+@xp1*c i3=2 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/((pz+@ap*@af(values[i2]))+@xp1)+@xp2*c i3=0 endif endif endif i2=12+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="3Alt Aleator X 2" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param av caption="Aleator Variant" enum="1""2""3" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltAleatorX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @av==1 pz=@sp+1 else pz=@sp endif c=@sf(fpixel) i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @av==0 if @v==0 if i3==0 pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==1 if i3==0 pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=0 endif elseif @v==2 if i3==0 pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==3 if i3==0 pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=0 endif else if i3==0 pz=pz^2+@xp1*c/(pz-@xp2)+c+@ap*@af(values[i2]) i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz-@xp2)+@ap*@af(values[i2]) i3=2 else pz=pz^2+@xp1/(pz-@xp2)+c+@ap*@af(values[i2]) i3=0 endif endif elseif @av==1 if @v==0 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=0 endif elseif @v==1 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=0 endif elseif @v==2 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=0 endif elseif @v==3 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=0 endif elseif @v==4 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=0 endif else if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2)+c i3=1 elseif i3==1 pz=(pz+@ap*@af(values[i2]))^2+@xp1*c/(pz-@xp2) i3=2 else pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp2)+c i3=0 endif endif else if @v==0 if i3==0 pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=2 else pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=0 endif elseif @v==1 if i3==0 pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=2 else pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=0 endif elseif @v==2 if i3==0 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=1 elseif i3==1 pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=2 else pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=0 endif elseif @v==3 if i3==0 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=2 else pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=1 elseif i3==1 pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=2 else pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=0 endif else if i3==0 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2)+c i3=1 elseif i3==1 pz=pz^2+@xp1*c/(pz+@ap*@af(values[i2])-@xp2) i3=2 else pz=pz^2+@xp1/(pz+@ap*@af(values[i2])-@xp2)+c i3=0 endif endif endif i2=12+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="3Alt Aleator X 3" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(-1,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param av caption="Aleator Variant" enum="1""2""3" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltFlipMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) If @v==0 if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=flip(pz^2)+@pp2*c i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif elseif @v==1 if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=flip(pz^2+@pp3*c) i3=2 else pz=flip(pz^2)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=flip(pz^2)+@pp2*c i3=1 elseif i3==1 pz=flip(pz)^2+@pp1*c i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif elseif @v==3 if i3==0 pz=flip(pz^2)+@pp2*c i3=1 elseif i3==1 pz=flip(pz^2+@pp3*c) i3=2 else pz=flip(pz)^2+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=flip(pz^2+@pp3*c) i3=1 elseif i3==1 pz=flip(pz)^2+@pp1*c i3=2 else pz=flip(pz^2)+@pp2*c i3=0 endif else if i3==0 pz=flip(pz^2+@pp3*c) i3=1 elseif i3==1 pz=flip(pz^2)+@pp2*c i3=2 else pz=flip(pz)^2+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt Flip Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @xv==0 if @v==0 if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz)^2+@pp2*c i3=2 else pz=flip(pz)^2+@pp3*c i3=0 endif else if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz)^2+@pp2*c i3=2 else pz=conj(pz)^2+@pp3*c i3=0 endif endif elseif @xv==1 if @v==0 if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=flip(pz^2)+@pp3*c i3=0 endif else if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=conj(pz^2)+@pp3*c i3=0 endif endif elseif @xv==2 if @v==0 if i3==0 pz=flip(pz^2+@pp1*c) i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif else if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=conj(pz^2+@pp3*c) i3=0 endif endif elseif @xv==3 if @v==0 if i3==0 pz=flip(pz^2+@pp1*c) i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif else if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=conj(pz^2+@pp3*c) i3=0 endif endif elseif @xv==4 if @v==0 if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif else if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=conj(pz^2)+@pp3*c i3=0 endif endif elseif @xv==5 if @v==0 if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=flip(pz)^2+@pp3*c i3=0 endif else if i3==0 pz=flip(pz^2+@pp1*c) i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=conj(pz^2+@pp3*c) i3=0 endif endif elseif @xv==6 if @v==0 if i3==0 pz=flip(pz^2+@pp1*c) i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=flip(pz^2)+@pp3*c i3=0 endif else if i3==0 pz=flip(pz^2+@pp1*c) i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=conj(pz)^2+@pp3*c i3=0 endif endif elseif @xv==7 if @v==0 if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=flip(pz^2+@pp3*c) i3=0 endif else if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2+@pp2*c) i3=2 else pz=conj(pz^2+@pp3*c) i3=0 endif endif else if @v==0 if i3==0 pz=flip(pz^2)+@pp1*c i3=1 elseif i3==1 pz=conj(pz^2)+@pp2*c i3=2 else pz=flip(pz)^2+@pp3*c i3=0 endif else if i3==0 pz=flip(pz)^2+@pp1*c i3=1 elseif i3==1 pz=conj(pz)^2+@pp2*c i3=2 else pz=conj(pz^2+@pp3*c) i3=0 endif endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 7" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2" endparam param xv caption="X Variant" enum="1""2""3""4""5""6""7""8""9" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltTangentMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2+tan(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2-tan(pz)+@pp2*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==1 if i3==0 pz=pz^2+tan(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2-tan(pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2-tan(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+tan(pz)+@pp1*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==3 if i3==0 pz=pz^2-tan(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2+tan(pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2+tan(pz)+@pp1*c i3=2 else pz=pz^2-tan(pz)+@pp2*c i3=0 endif else if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2-tan(pz)+@pp2*c i3=2 else pz=pz^2+tan(pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt Tangent Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltExpMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2+exp(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2-exp(pz)+@pp2*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==1 if i3==0 pz=pz^2+exp(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2-exp(pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2-exp(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+exp(pz)+@pp1*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==3 if i3==0 pz=pz^2-exp(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2+exp(pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2+exp(pz)+@pp1*c i3=2 else pz=pz^2-exp(pz)+@pp2*c i3=0 endif else if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2-exp(pz)+@pp2*c i3=2 else pz=pz^2+exp(pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt Exp Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(-0.3,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltSinhMandelbrot(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2+sinh(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2-sinh(pz)+@pp2*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==1 if i3==0 pz=pz^2+sinh(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2-sinh(pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2-sinh(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+sinh(pz)+@pp1*c i3=2 else pz=pz^2+@pp3*c i3=0 endif elseif @v==3 if i3==0 pz=pz^2-sinh(pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+@pp3*c i3=2 else pz=pz^2+sinh(pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2+sinh(pz)+@pp1*c i3=2 else pz=pz^2-sinh(pz)+@pp2*c i3=0 endif else if i3==0 pz=pz^2+@pp3*c i3=1 elseif i3==1 pz=pz^2-sinh(pz)+@pp2*c i3=2 else pz=pz^2+sinh(pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt Sinh Mandelbrot" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX8(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2+sinh(pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+exp(pz)+@pp2*c i3=2 else pz=pz*sinh(pz)-@pp3*c^2 i3=0 endif elseif @v==1 if i3==0 pz=pz*sinh(pz)-@pp3*c^2 i3=1 elseif i3==1 pz=pz^2+sinh(pz)+@pp1*c i3=2 else pz=pz^2+exp(pz)+@pp2*c i3=0 endif else if i3==0 pz=pz*sinh(pz)-@pp3*c^2 i3=1 elseif i3==1 pz=pz^2-exp(pz)+@pp2*c i3=2 else pz=pz^2+sinh(pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 8" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @v==2 || @v==3 pz=@sp+1 else pz=@sp endif c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if (@v!=2 && @v!=3 && (@sp!=0 || @p4!=0)) || (@v==2 || @v==3 && (@sp!=-1 || @p4!=0)) pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp2*c/pz+@xp2 i3=2 else pz=@xp3*pz*(1-pz)+@pp3*c i3=0 endif elseif @v==1 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=1 elseif i3==1 pz=@xp3*pz*(1-pz)+@pp3*c i3=2 else pz=pz^2+@pp2*c/pz+@xp2 i3=0 endif elseif @v==2 if i3==0 pz=pz^2+@pp2*c/pz+@xp2 i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=2 else pz=@xp3*pz*(1-pz)+@pp3*c i3=0 endif elseif @v==3 if i3==0 pz=pz^2+@pp2*c/pz+@xp2 i3=1 elseif i3==1 pz=@xp3*pz*(1-pz)+@pp3*c i3=2 else pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=@xp3*pz*(1-pz)+@pp3*c i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=2 else pz=pz^2+@pp2*c/pz+@xp2 i3=0 endif else if i3==0 pz=@xp3*pz*(1-pz)+@pp3*c i3=1 elseif i3==1 pz=pz^2+@pp2*c/pz+@xp2 i3=2 else pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 9" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(2,0) endparam param xp2 caption="X Parameter 2" default=(0,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=(@v!=2 && @v!=3 && (@sp!=0 || @p4!=0)) || (@v==2 || @v==3 && (@sp!=-1 || @p4!=0)) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX10(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp2*c/pz+@xp2 i3=2 else pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=0 endif elseif @v==1 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=1 elseif i3==1 pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=2 else pz=pz^2+@pp2*c/pz+@xp2 i3=0 endif elseif @v==2 if i3==0 pz=pz^2+@pp2*c/pz+@xp2 i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=2 else pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=0 endif elseif @v==3 if i3==0 pz=pz^2+@pp2*c/pz+@xp2 i3=1 elseif i3==1 pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=2 else pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=1 elseif i3==1 pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=2 else pz=pz^2+@pp2*c/pz+@xp2 i3=0 endif else if i3==0 pz=pz^2+@xp3*sinh(pz)/(@pp3*c) i3=1 elseif i3==1 pz=pz^2+@pp2*c/pz+@xp2 i3=2 else pz=pz^2*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 10" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(2,0) endparam param xp2 caption="X Parameter 2" default=(0,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(0.65,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Blexafomide(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/@arf(pz) pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*c return pz endfunc default: title="Blexafomide" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param xp1 caption="Blexafomide Parameter 1" default=(1,0) endparam param xp2 caption="Blexafomide Parameter 2" default=(1,0) endparam param js caption="Julia Seed" default=(0.9,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam func arf caption="Add Recip Function" default=ident() visible=@arp!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_3AltX11(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=2 else pz=pz^2+@xp4*c/pz i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz^2+@xp4*c/pz i3=2 else pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz^2+@xp4*c/pz i3=0 endif elseif @v==3 if i3==0 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=1 elseif i3==1 pz=pz^2+@xp4*c/pz i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@xp4*c/pz i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=0 endif else if i3==0 pz=pz^2+@xp4*c/pz i3=1 elseif i3==1 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 11" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1.25,0) endparam param xp4 caption="X Parameter 4" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000001 endparam complex param p_power visible=false endparam } class OM_3AltX12(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=2 else pz=pz^2+@xp4*c/pz^2 i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz^2+@xp4*c/pz^2 i3=2 else pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=0 endif elseif @v==2 if i3==0 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz^2+@xp4*c/pz^2 i3=0 endif elseif @v==3 if i3==0 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=1 elseif i3==1 pz=pz^2+@xp4*c/pz^2 i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz^2+@xp4*c/pz^2 i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=0 endif else if i3==0 pz=pz^2+@xp4*c/pz^2 i3=1 elseif i3==1 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 12" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1.25,0) endparam param xp4 caption="X Parameter 4" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000001 endparam complex param p_power visible=false endparam } class OM_3AltX13(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz if @v!=4 && @v!=5 pz=@sp else pz=@sp-0.5 endif c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=2 else pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=2 else pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=0 endif elseif @v==2 if i3==0 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=0 endif elseif @v==3 if i3==0 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=1 elseif i3==1 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=0 endif else if i3==0 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=1 elseif i3==1 pz=(pz^2+@pp2*c)*(pz-@xp3)/(1-@xp3*pz) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 13" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(2,0) endparam param xp4 caption="X Parameter 4" default=(1,0) endparam param xp5 caption="X Parameter 5" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000001 endparam complex param p_power visible=false endparam } class OM_3AltX14(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz if @v!=4 && @v!=5 pz=@sp else pz=@sp-0.5 endif c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=2 else pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=2 else pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=0 endif elseif @v==3 if i3==0 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=1 elseif i3==1 pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=0 endif else if i3==0 pz=((pz^2+@pp3*c-1)/(2*pz+@pp3*c-2))^2 i3=1 elseif i3==1 pz=pz^2*(pz-@xp3)/(1-@xp3*pz)+@pp2*c i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 14" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(2,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000001 endparam complex param p_power visible=false endparam } class OM_3AltX15(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @v!=4 && @v!=5 pz=@sp else pz=@sp-0.5 endif c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz^2+@pp2*c i3=2 else pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=2 else pz=pz^2+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=pz^2+@pp2*c i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=0 endif elseif @v==3 if i3==0 pz=pz^2+@pp2*c i3=1 elseif i3==1 pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz^2+@pp2*c i3=0 endif else if i3==0 pz=((pz^3+3*(@pp3*c-1)*pz+(@pp3*c-1)*(@pp3*c-2))/(3*pz^2+3*(@pp3*c-2)*pz+(@pp3*c-1)*(@pp3*c-2)+1))^2 i3=1 elseif i3==1 pz=pz^2+@pp2*c i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 15" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX16(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @st==0 pz=@sf(pz) else pz=@sp endif c=@sf(fpixel) a=(1,0) i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@p3*pz+@p4 pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=2 else pz=pz-@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz+@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=2 else pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=0 endif elseif @v==2 if i3==0 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz+@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=0 endif elseif @v==3 if i3==0 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=1 elseif i3==1 pz=pz-@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=pz-@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=0 endif else if i3==0 pz=pz+@xp3*(pz-a)*(pz^3+@pp2*c)/(pz^3-a^3) i3=1 elseif i3==1 pz=pz-@xp4*(pz^3-@xp5)/(3*pz^2) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif a=m_ZOld return pz endfunc private: complex c complex a int i3 default: title="3Alt X 16" int param version caption="Version" default=100 visible=@version<100 endparam param st caption="Start Type" enum="Pixel""Parameter" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@st==1 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param xp4 caption="X Parameter 4" default=(1,0) endparam param xp5 caption="X Parameter 5" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000000001 exponential=true endparam } class OM_3AltX17(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) If@v==0 if i3==0 pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=1 elseif i3==1 pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=2 else pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=0 endif elseif @v==1 if i3==0 pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=1 elseif i3==1 pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=2 else pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=0 endif elseif @v==2 if i3==0 pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=1 elseif i3==1 pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=2 else pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=0 endif elseif @v==3 if i3==0 pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=1 elseif i3==1 pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=2 else pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=1 elseif i3==1 pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=2 else pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=0 endif else if i3==0 pz=(pz^3+@pp3*c*pz^2-@pp4*c)/pz i3=1 elseif i3==1 pz=(pz^5+@pp2*c^2*pz^2+@xp3)/(pz^3+@pp2*c*pz^2+@xp3) i3=2 else pz=pz^2-@xp1*sin(pz)^2+@xp2*pz*sinh(pz)+@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 17" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0.75,0) endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param xp1 caption="X Parameter 1" default=(2.5,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pp4 caption="Pixel Parameter 4" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX18(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @mj==0 pz=@sp c=@sf(fpixel) else pz=@sf(pz) c=@js endif i3=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@p3*pz pz=pz+@arp/pz pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=2 else pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=0 endif elseif @v==1 if i3==0 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=1 elseif i3==1 pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=2 else pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=0 endif elseif @v==2 if i3==0 pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=0 endif elseif @v==3 if i3==0 pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=1 elseif i3==1 pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif elseif @v==4 if i3==0 pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=1 elseif i3==1 pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=2 else pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=0 endif else if i3==0 pz=3*pz/((pz/(@pp3*c))^3+3-1+@xp4) i3=1 elseif i3==1 pz=pz-pz/3*(1+@xp3-(@pp2*c/pz)^3)+@xp5 i3=2 else pz=(pz-@xp1*(pz^3-@xp2)/(3*pz^2))^3*@pp1*c i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 18" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@mj==0 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param js caption="Julia Seed" default=(-1.25,0) visible=@mj==1 endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(0,0) endparam param xp4 caption="X Parameter 4" default=(0,0) endparam param xp5 caption="X Parameter 5" default=(0,0) endparam param pp1 caption="C Parameter 1" default=(1,0) endparam param pp2 caption="C Parameter 2" default=(1,0) endparam param pp3 caption="C Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000000000000000001 exponential=true endparam } class OM_Exflobam(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@sp c=@sf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/@arf(pz) if i==0 pz=(pz-(pz^3-@xp3)/(3*pz^2))^3*@pp1*c+@xp1 i=i+1 else pz=(pz-(pz^3-@xp4)/(3*pz^2))^3*@pp2*c+@xp2 i=0 endif return pz endfunc private: complex c int i default: title="Exflobam" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="Exflobam Parameter 1" default=(-0.5,0) endparam param xp2 caption="Exflobam Parameter 2" default=(-1,0) endparam param xp3 caption="Exflobam Parameter 3" default=(1,0) endparam param xp4 caption="Exflobam Parameter 4" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam func arf caption="Add Recip Function" default=ident() visible=@arp!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Exflobam2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@sp c=@sf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 pz=pz+@arp/@arf(pz) if @v==0 if i==0 pz=(pz-(pz^3-@xp3)/(3*pz^2))^4*@pp1*c+@xp1 i=i+1 else pz=(pz-(pz^3-@xp4)/(3*pz^2))^2*@pp2*c+@xp2 i=0 endif else if i==0 pz=(pz-(pz^3-@xp4)/(3*pz^2))^2*@pp2*c+@xp2 i=i+1 else pz=(pz-(pz^3-@xp3)/(3*pz^2))^4*@pp1*c+@xp1 i=0 endif endif return pz endfunc private: complex c int i default: title="Exflobam 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="Exflobam Parameter 1" default=(-0.5,0) endparam param xp2 caption="Exflobam Parameter 2" default=(-1,0) endparam param xp3 caption="Exflobam Parameter 3" default=(1,0) endparam param xp4 caption="Exflobam Parameter 4" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam func arf caption="Add Recip Function" default=ident() visible=@arp!=0 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Estwoste(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) else if @st==0 pz=@sp else pz=@sf(pz) endif endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 pz=(pz^3+@p1*pz^2-@p2)/pz+@p3 else pz=(pz^3+@p1*pz^2-@p2)/pz+(@p3+1)*@sf(fpixel) endif return pz endfunc private: complex fpixel default: title="Estwoste" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param st caption="Start Type" enum="Parameter""Pixel" visible=@jm==1 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 && @st==0 endparam param p1 caption="Estwoste Parameter 1" default=(1,0) endparam param p2 caption="Estwoste Parameter 2" default=(-0.5,0) endparam param p3 caption="Estwoste Parameter 3" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(-0.67,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_3AltX19(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) If @v==0 if i3==0 pz=@pp1*c*(pz+@xp1/pz) i3=1 elseif i3==1 pz=(pz+@xp2/pz)+@pp2*c i3=2 else pz=(pz+@pp3*c/pz) i3=0 endif elseif @v==1 if i3==0 pz=@pp1*c*(pz+@xp1/pz) i3=1 elseif i3==1 pz=(pz+@pp3*c/pz) i3=2 else pz=(pz+@xp2/pz)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=(pz+@xp2/pz)+@pp2*c i3=1 elseif i3==1 pz=@pp1*c*(pz+@xp1/pz) i3=2 else pz=(pz+@pp3*c/pz) i3=0 endif elseif @v==3 if i3==0 pz=(pz+@xp2/pz)+@pp2*c i3=1 elseif i3==1 pz=(pz+@pp3*c/pz) i3=2 else pz=@pp1*c*(pz+@xp1/pz) i3=0 endif elseif @v==4 if i3==0 pz=(pz+@pp3*c/pz) i3=1 elseif i3==1 pz=@pp1*c*(pz+@xp1/pz) i3=2 else pz=(pz+@xp2/pz)+@pp2*c i3=0 endif else if i3==0 pz=(pz+@pp3*c/pz) i3=1 elseif i3==1 pz=(pz+@xp2/pz)+@pp2*c i3=2 else pz=@pp1*c*(pz+@xp1/pz) i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 19" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(-0.3,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_3AltX20(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@sf(fpixel) i3=0 return pz endfunc complex func Iterate(complex pz) pz=@p3*pz+@p4 if @sp!=0 || @p4!=0 pz=pz+@arp/pz endif pz=pz+@asp*sqr(pz) if @v==0 if i3==0 pz=@pp1*c*(pz^2+@xp1/pz^2) i3=1 elseif i3==1 pz=(pz^2+@xp2/pz^2)+@pp2*c i3=2 else pz=(pz^2+@pp3*c/pz^2) i3=0 endif elseif @v==1 if i3==0 pz=@pp1*c*(pz^2+@xp1/pz^2) i3=1 elseif i3==1 pz=(pz^2+@pp3*c/pz^2) i3=2 else pz=(pz^2+@xp2/pz^2)+@pp2*c i3=0 endif elseif @v==2 if i3==0 pz=(pz^2+@xp2/pz^2)+@pp2*c i3=1 elseif i3==1 pz=@pp1*c*(pz^2+@xp1/pz^2) i3=2 else pz=(pz^2+@pp3*c/pz^2) i3=0 endif elseif @v==3 if i3==0 pz=(pz^2+@xp2/pz^2)+@pp2*c i3=1 elseif i3==1 pz=(pz^2+@pp3*c/pz^2) i3=2 else pz=@pp1*c*(pz^2+@xp1/pz^2) i3=0 endif elseif @v==4 if i3==0 pz=(pz^2+@pp3*c/pz^2) i3=1 elseif i3==1 pz=@pp1*c*(pz^2+@xp1/pz^2) i3=2 else pz=(pz^2+@xp2/pz^2)+@pp2*c i3=0 endif else if i3==0 pz=(pz^2+@pp3*c/pz^2) i3=1 elseif i3==1 pz=(pz^2+@xp2/pz^2)+@pp2*c i3=2 else pz=@pp1*c*(pz^2+@xp1/pz^2) i3=0 endif endif return pz endfunc private: complex c int i3 default: title="3Alt X 20" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Alt Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(0.5,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param p3 caption="Z Parameter 1" default=(1,0) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param arp caption="Add Recip Parameter" default=(0,0) visible=@sp!=0 || @p4!=0 endparam param asp caption="Add Sqr Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_Xontela(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@sf(pz) c=@js else if @st==0 pz=@sf(pz) else pz=@sp endif c=@sf(fpixel) endif i=0 return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=(pz-pz/3*(@xp1-(c/pz)^3))+@xp2 i=i+1 else pz=(pz-(pz^3-1)/(3*pz^2))^3*c+@xp3 i=0 endif else if i==0 pz=(pz-(pz^3-1)/(3*pz^2))^3*c+@xp3 i=i+1 else pz=(pz-pz/3*(@xp1-(c/pz)^3))+@xp2 i=0 endif endif return pz endfunc private: complex c int i default: title="Xontela" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 && @st==1 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param av caption="Alt Variant" enum="1""2" endparam param xp1 caption="Xontela Parameter 1" default=(1,0) endparam param xp2 caption="Xontela Parameter 2" default=(1,0) endparam param xp3 caption="Xontela Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.0000000000001 exponential=true endparam } class OM_AltX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=((pz^2-@pp1*c)-@xp1*@xp2)/((pz^2+@pp1*c)+@xp1*@xp2)*pz^2+@pp2*c i=1 else pz=((pz^2+@pp1*c)+@xp1*@xp3)/((pz^2-@pp1*c)-@xp1*@xp3)*pz^2+@pp2*c i=0 endif else if i==0 pz=((pz^2+@pp1*c)+@xp1*@xp3)/((pz^2-@pp1*c)-@xp1*@xp3)*pz^2+@pp2*c i=1 else pz=((pz^2-@pp1*c)-@xp1*@xp2)/((pz^2+@pp1*c)+@xp1*@xp2)*pz^2+@pp2*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 1" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if i==0 pz=((pz^(@pow+2)-@pp1*c)-@xp1*@xp2)/((pz^@pow+@pp1*c)+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*c)+@xp1*@xp3)/((pz^@pow-@pp1*c)-@xp1*@xp3)+@pp2*c i=0 endif else if i==0 pz=((pz^(@pow+2)+@pp1*c)+@xp1*@xp3)/((pz^@pow-@pp1*c)-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*c)-@xp1*@xp2)/((pz^@pow+@pp1*c)+@xp1*@xp2)+@pp2*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=2 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @av==0 if @xv==0 if i==0 pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*c)+@xp1*@xp3)/((pz^@pow-@pp1*exp(c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*recip(c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==2 if i==0 pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*exp(c))+@xp1*@xp3)/((pz^@pow-@pp1*c)-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=((pz^(@pow+2)-@pp1*c)-@xp1*@xp2)/((pz^@pow+@pp1*exp(c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*recip(c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==4 if i==0 pz=((pz^(@pow+2)-@pp1*exp(c))-@xp1*@xp2)/((pz^@pow+@pp1*exp(c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==5 if i==0 pz=((pz^(@pow+2)-@pp1*(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*exp(c+1/c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*sqr(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*(c+1/c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==6 if i==0 pz=((pz^(@pow+2)-@pp1*cotanh(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c+1/c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c+1/c))-@xp1*@xp3)+@pp2*c i=0 endif elseif @xv==7 if i==0 pz=((pz^(@pow+2)-@pp1*cotanh(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c+1/c))+@xp1*@xp2)+@pp2*c i=1 else pz=((pz^(@pow+2)+@pp1*cotanh(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c+1/c))-@xp1*@xp3)+@pp2*c i=0 endif endif else if @xv==0 if i==0 pz=((pz^(@pow+2)+@pp1*c)+@xp1*@xp3)/((pz^@pow-@pp1*exp(c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*recip(c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==2 if i==0 pz=((pz^(@pow+2)+@pp1*exp(c))+@xp1*@xp3)/((pz^@pow-@pp1*c)-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*recip(c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*recip(c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*c)-@xp1*@xp2)/((pz^@pow+@pp1*exp(c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==4 if i==0 pz=((pz^(@pow+2)+@pp1*recip(c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*exp(c))-@xp1*@xp2)/((pz^@pow+@pp1*exp(c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==5 if i==0 pz=((pz^(@pow+2)+@pp1*sqr(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*(c+1/c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*exp(c+1/c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==6 if i==0 pz=((pz^(@pow+2)+@pp1*(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c+1/c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*cotanh(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c+1/c))+@xp1*@xp2)+@pp2*c i=0 endif elseif @xv==7 if i==0 pz=((pz^(@pow+2)+@pp1*cotanh(c+1/c))+@xp1*@xp3)/((pz^@pow-@pp1*exp(c+1/c))-@xp1*@xp3)+@pp2*c i=1 else pz=((pz^(@pow+2)-@pp1*cotanh(c+1/c))-@xp1*@xp2)/((pz^@pow+@pp1*recip(c+1/c))+@xp1*@xp2)+@pp2*c i=0 endif endif endif return pz endfunc private: complex c int i default: title="Alt X 3" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Alt Variant" enum="1""2" endparam param xv caption="X Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(0,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param xp3 caption="X Parameter 3" default=(1,0) endparam param pow caption="Exponent" default=2 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2+@pp3*c-@xp1 i=1 else pz=((pz^2-@pp1*c)^2+@pp2*c)/pz^2-@pp3*c+@xp1 i=0 endif elseif @xv==1 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2+@pp3*c+@xp1 i=1 else pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==2 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2+@pp3*c+@xp1 i=0 endif elseif @xv==3 if i==0 pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2-@pp3*c+@xp1 i=0 endif elseif @xv==4 if i==0 pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2-@pp3*c+@xp1 i=1 else pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==5 if i==0 pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2-@pp3*c+@xp1 i=1 else pz=((pz^2-@pp1*c)^2+@pp2*c)/pz^2+@pp3*c-@xp1 i=0 endif elseif @xv==6 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2+@pp3*c-@xp1 i=0 endif elseif @xv==7 if i==0 pz=((pz^2+@pp1*c)^2-@pp2*c)/pz^2+@pp3*c-@xp1 i=1 else pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==8 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2-@pp1*c)^2+@pp2*c)/pz^2-@pp3*c+@xp1 i=0 endif elseif @xv==9 if i==0 pz=((pz^2-@pp1*c)^2+@pp2*c)/pz^2-@pp3*c+@xp1 i=1 else pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==10 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2+@pp3*c+@xp1 i=0 endif elseif @xv==11 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2+@pp3*c+@xp1 i=1 else pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==12 if i==0 pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif elseif @xv==13 if i==0 pz=((pz^2-@pp1*c)^2-@pp2*c)/pz^2-@pp3*c-@xp1 i=1 else pz=((pz^2+@pp1*c)^2+@pp2*c)/pz^2-@pp3*c-@xp1 i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 4" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="X Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter" default=(0,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=(pz^4-pz^2+@pp1*c-@xp1)/pz^2+@xp2-@pp2*c i=1 else pz=(pz^4+pz^2-@pp1*c+@xp1)/pz^2-@xp2+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=(pz^4-pz^2-@pp1*c+@xp1)/pz^2+@xp2-@pp2*c i=1 else pz=(pz^4+pz^2+@pp1*c-@xp1)/pz^2-@xp2+@pp2*c i=0 endif elseif @xv==2 if i==0 pz=(pz^4-pz^2+@pp1*c+@xp1)/pz^2-@xp2-@pp2*c i=1 else pz=(pz^4+pz^2-@pp1*c-@xp1)/pz^2+@xp2+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=(pz^4+pz^2-@pp1*c+@xp1)/pz^2-@xp2-@pp2*c i=1 else pz=(pz^4+pz^2-@pp1*c-@xp1)/pz^2-@xp2+@pp2*c i=0 endif elseif @xv==4 if i==0 pz=(pz^4+pz^2-@pp1*c-@xp1)/pz^2-@xp2+@pp2*c i=1 else pz=(pz^4+pz^2-@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=0 endif elseif @xv==5 if i==0 pz=(pz^4+pz^2+@pp1*c+@xp1)/pz^2+@xp2-@pp2*c i=1 else pz=(pz^4-pz^2+@pp1*c-@xp1)/pz^2+@xp2-@pp2*c i=0 endif elseif @xv==6 if i==0 pz=(-pz^4-pz^3+@pp1*c-@xp1)/pz^2+@xp2-@pp2*c i=1 else pz=(pz^4+pz^2-@pp1*c+@xp1)/pz^2-@xp2+@pp2*c i=0 endif elseif @xv==7 if i==0 pz=(-pz^4-pz^3+@pp1*c-@xp1)/pz^2+@xp2-@pp2*c i=1 else pz=(pz^4+pz-@pp1*c+@xp1)/pz^2-@xp2+@pp2*c i=0 endif elseif @xv==8 if i==0 pz=(pz^4-pz^3-pz^2-@pp1*c+@xp1)/pz^2-@xp2-@pp2*c i=1 else pz=(pz^4+pz+@pp1*c+@xp1)/pz^2+@xp2+@pp2*c i=0 endif elseif @xv==9 if i==0 pz=(-pz^4-pz^3-@pp1*c+@xp1)/pz^2+@xp2+@pp2*c i=1 else pz=(pz^4-pz+@pp1*c-@xp1)/pz^2+@xp2-@pp2*c i=0 endif elseif @xv==10 if i==0 pz=(pz^4+pz^3+@pp1*c+@xp1)/pz^2+@xp2+@pp2*c i=1 else pz=(-pz^4-pz^3-pz^2-pz-@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=0 endif elseif @xv==11 if i==0 pz=(pz^4-pz^2+@pp1*c+@xp1)/pz^2+@xp2+@pp2*c i=1 else pz=(-pz^4-@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=0 endif elseif @xv==12 if i==0 pz=(pz^4-pz^3+pz+@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=1 else pz=(-pz^4+pz^2-@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=0 endif elseif @xv==13 if i==0 pz=(pz^4-pz^3+@pp1*c-@xp1)/pz^2-@xp2-@pp2*c i=1 else pz=(-pz^4+pz^2-pz-@pp1*c-@xp1)/pz^2-@xp2+@pp2*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 5" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="X Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(0,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=@xp1*pz^2*(pz-@xp2)/(1-@xp2*pz)+@pp1*c i=1 else pz=@xp1*pz^2*(pz+@xp2)/(1+@xp2*pz)-@pp2*c i=0 endif elseif @xv==1 if i==0 pz=-@xp1*pz^2*(pz+@xp2)/(1+@xp2*pz)+@pp2*c i=1 else pz=@xp1*pz^2*(pz-@xp2)/(1-@xp2*pz)+@pp1*c i=0 endif elseif @xv==2 if i==0 pz=-@xp1*pz^2*(pz-@xp2)/(1-@xp2*pz)+@pp1*c i=1 else pz=@xp1*pz^2*(pz-@xp2)/(1-@xp2*pz)-@pp2*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 6" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(0,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1.35,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==1 if i==0 pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif elseif @xv==2 if i==0 pz=pz+cotan(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz+cotan(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==3 if i==0 pz=pz+0.75*cotan(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz+1.75*cotan(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif elseif @xv==4 if i==0 pz=pz-cotanh(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz-cotanh(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==5 if i==0 pz=pz-0.25*cotanh(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz+0.25*cotanh(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif elseif @xv==6 if i==0 pz=pz+0.75*cotan(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz+1.25*cotan(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==7 if i==0 pz=pz+0.75*cotan(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz+0.75*cotan(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==8 if i==0 pz=pz-0.25*cotan(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz+0.5*cotan(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif elseif @xv==9 if i==0 pz=pz-0.25*recip(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz-0.25*recip(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif elseif @xv==10 if i==0 pz=pz+0.25*recip(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=1 else pz=pz+0.25*recip(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=0 endif elseif @xv==11 if i==0 pz=pz+0.25*recip(pz) pz=pz^2+@pp3*c^2+@xp1*pz/(@pp4*c)+@xp2*pz i=1 else pz=pz+0.25*recip(pz) pz=pz^2+@pp1*c/pz+@pp2*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 7" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param pp3 caption="Pixel Parameter 3" default=(1,0) endparam param pp4 caption="Pixel Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.65,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltX8(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=pz*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i=1 else pz=pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=pz^2+@xp2/pz+@pp2*c i=1 else pz=pz*(pz-@xp1)/(1-@xp1*pz)+@pp1*c i=0 endif elseif @xv==2 if i==0 pz=pz*(pz-(@xp1+0.5))/(1-(@xp1+0.5)*pz)+@pp1*c pz=pz*(pz-(@xp1+0.5))/(1-(@xp1+0.5)*pz)+@pp1*c i=1 else pz=pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=pz^2+@xp2/pz+@pp2*c pz=pz^2+@xp2/pz+@pp2*c i=1 else pz=pz*(pz-(@xp1+2.25))/(1-(@xp1+2.25)*pz)+@pp1*c i=0 endif elseif @xv==4 if i==0 pz=pz*(pz-(@xp1+1.5))/(1-(@xp1+1.5)*pz)+@pp1*c pz=pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==5 if i==0 pz=pz^2-@xp2/pz+@pp2*c pz=pz*(pz-(@xp1+0.625))/(1-(@xp1+0.625)*pz)+@pp1*c i=1 else pz=pz*(pz-(@xp1+0.625))/(1-(@xp1+0.625)*pz)+@pp1*c i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 8" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(-2,0) endparam param xp1 caption="X Parameter 1" default=(0.25,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.65,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltX9(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=pz^2+@xp1/pz+@pp1*c-@xp2 i=1 else pz=pz^2-@xp1/pz+@pp2*c+@xp2 i=0 endif elseif @xv==1 if i==0 pz=pz^2-@xp1/pz+@pp2*c+@xp2 i=1 else pz=pz^2+@xp1/pz+@pp1*c-@xp2 i=0 endif elseif @xv==2 if i==0 pz=pz^2+@xp1/pz^2+@pp1*c-@xp2 i=1 else pz=pz^2-@xp1/pz+@pp2*c+@xp2 i=0 endif elseif @xv==3 if i==0 pz=pz^2-@xp1/pz+@pp2*c+@xp2 i=1 else pz=pz^2+@xp1/pz^2+@pp1*c-@xp2 i=0 endif elseif @xv==4 if i==0 pz=pz^2+@xp1/pz^2+@pp1*c-@xp2 else pz=pz^2-@xp1/pz^2+@pp2*c+@xp2 i=0 endif elseif @xv==5 if i==0 pz=pz^2-@xp1/pz^2+@pp2*c+@xp2 i=1 else pz=pz^2+@xp1/pz^2+@pp1*c-@xp2 i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 9" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(0,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.55,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltX10(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2-@pp2*c)))+@xp2 i=1 else pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=0 endif elseif @xv==1 if i==0 pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=1 else pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2-@pp2*c)))+@xp2 i=0 endif elseif @xv==2 if i==0 pz=@xp1*((pz^2+@pp1*c)+(1/(pz^2-@pp2*c)))+@xp2 i=1 else pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=0 endif elseif @xv==3 if i==0 pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=1 else pz=@xp1*((pz^2+@pp1*c)+(1/(pz^2-@pp2*c)))+@xp2 i=0 endif elseif @xv==4 if i==0 pz=@xp1*((pz^2-@pp1*c)-(1/(pz^2-@pp2*c)))+(@xp2-0.5) i=1 else pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-(@xp2-0.5) i=0 endif elseif @xv==5 if i==0 pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-(@xp2-0.5) i=1 else pz=@xp1*((pz^2-@pp1*c)-(1/(pz^2-@pp2*c)))+(@xp2-0.5) i=0 endif elseif @xv==6 if i==0 pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2+@pp2*c)))+@xp2 i=1 else pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=0 endif elseif @xv==7 if i==0 pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-@xp2 i=1 else pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2+@pp2*c)))+@xp2 i=0 endif elseif @xv==8 if i==0 pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2-@pp2*c)))-(@xp2+0.5) i=1 else pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-(@xp2+0.5) i=0 endif elseif @xv==9 if i==0 pz=@xp1*((pz^2+@pp1*c)-(1/(pz^2+@pp2*c)))-(@xp2+0.5) i=1 else pz=@xp1*((pz^2-@pp1*c)+(1/(pz^2-@pp2*c)))-(@xp2+0.5) i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 10" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6""7""8""9""10" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(1.2,0) endparam param xp2 caption="X Parameter 2" default=(0,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltX11(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=pz^3+pz^2+@pp1*c/pz+@xp1 i=1 else pz=pz^3+pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=pz^3+pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^3+pz^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==2 if i==0 pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=1 else pz=pz^3+pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=pz^3+pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==4 if i==0 pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=1 else pz=pz^3-pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==5 if i==0 pz=pz^3-pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==6 if i==0 pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=1 else pz=pz^3-pz^2-@xp2/pz+@pp2*c i=0 endif elseif @xv==7 if i==0 pz=pz^3-pz^2-@xp2/pz+@pp2*c i=1 else pz=pz^3-pz^2+@pp1*c/pz+@xp1 i=0 endif endif return pz endfunc private: complex c int i default: title="Alt X 11" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="X Parameter 1" default=(0,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Ptaslux(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @xv==0 if i==0 pz=pz^3+c^2+@pp1*c/pz+@xp1 i=1 else pz=c^3+pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==1 if i==0 pz=c^3+pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^3+c^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==2 if i==0 pz=pz^3+c^2+@pp1*c/pz+@xp1 i=1 else pz=c^3-pz^2+@xp2/pz+@pp2*c i=0 endif elseif @xv==3 if i==0 pz=c^3-pz^2+@xp2/pz+@pp2*c i=1 else pz=pz^3+c^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==4 if i==0 pz=pz^3+c^2+@pp1*c/pz+@xp1 i=1 else pz=c^3+pz^2+@xp2/pz+@pp2*c pz=-pz i=0 endif elseif @xv==5 if i==0 pz=c^3+pz^2+@xp2/pz+@pp2*c pz=-pz i=1 else pz=pz^3+c^2+@pp1*c/pz+@xp1 i=0 endif elseif @xv==6 if i==0 pz=pz^3+c^2+@pp1*c/pz+@xp1 i=1 else pz=c^3-pz^2+@xp2/pz+@pp2*c pz=-pz i=0 endif elseif @xv==7 if i==0 pz=c^3-pz^2+@xp2/pz+@pp2*c pz=-pz i=1 else pz=pz^3+c^2+@pp1*c/pz+@xp1 i=0 endif endif pz=pz+c return pz endfunc private: complex c int i default: title="Ptaslux" int param version caption="Version" default=100 visible=@version<100 endparam param xv caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="Ptaslux Parameter 1" default=(0,0) endparam param xp2 caption="Ptaslux Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_ZeppoMod2(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) c=@sf(fpixel) i=0 i2=0 return pz endfunc private: complex c int i int i2 complex func Iterate(complex pz) while i<@iter pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) i=i+1 if @v==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c elseif @v==1 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=0 endif elseif @v==2 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=0 endif elseif @v==3 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*c i2=0 endif elseif @v==4 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=0 endif elseif @v==5 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=0 endif elseif @v==6 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=0 endif elseif @v==7 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*c i2=0 endif elseif @v==8 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*c i2=0 endif elseif @v==9 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*conj(c) i2=0 endif elseif @v==10 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*flip(c) i2=0 endif elseif @v==11 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*flip(c) i2=0 endif elseif @v==12 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*conj(c) i2=0 endif elseif @v==13 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*c i2=0 endif elseif @v==14 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=0 endif elseif @v==15 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=0 endif elseif @v==16 if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*flip(c) i2=0 endif else if i2==0 pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*((abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))-(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1)))/2)^@pow+@p2-@pp1*conj(c) i2=0 endif endif endwhile pz=pz*@adj/100 return pz endfunc default: title="Zeppo Mod 2" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17""18" endparam param p1 caption="Zeppo Parameter 1" default=(1,0) endparam param p2 caption="Zeppo Parameter 2" default=(0,0) endparam param pp1 caption="Pixel Parameter" default=(0.25,0) endparam param iter caption="Iterations" default=10 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ZeppoMod3(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) c=@sf(fpixel) i=0 i2=0 return pz endfunc private: complex c int i int i2 complex func Iterate(complex pz) while i<@iter pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) i=i+1 if @v==0 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==1 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==2 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==3 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==4 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==5 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==6 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==7 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==8 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==9 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==10 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==11 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==12 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=0 endif elseif @v==13 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==14 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*c i2=0 endif elseif @v==15 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==16 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==17 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==18 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==19 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==20 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==21 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==22 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==23 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==24 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==25 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==26 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==27 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=0 endif elseif @v==28 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==29 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*conj(c) i2=0 endif elseif @v==30 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*flip(c) i2=0 endif elseif @v==31 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=0 endif elseif @v==32 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*flip(c) i2=0 endif elseif @v==33 if i2==0 pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*flip(c) i2=0 endif else if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))^@pow+@p2+@pp*conj(c) i2=i2+1 else pz=@p1*abs(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))^@pow+@p2-@pp*flip(c) i2=0 endif endif endwhile pz=pz*@adj/100 return pz endfunc default: title="Zeppo Mod 3" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35" endparam param p1 caption="Zeppo Parameter 1" default=(1,0) endparam param p2 caption="Zeppo Parameter 2" default=(0,0) endparam param pp caption="Pixel Parameter" default=(-0.25,0) endparam param iter caption="Iterations" default=7 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_ZeppoMod4(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) c=@sf(fpixel) i=0 i2=0 return pz endfunc private: complex c int i int i2 complex func Iterate(complex pz) while i<@iter pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) i=i+1 if @v==0 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==1 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==2 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==3 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==4 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==5 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==6 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==7 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==8 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==9 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==10 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==11 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==12 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==13 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==14 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*c i2=0 endif elseif @v==15 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==16 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==17 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==18 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==19 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==20 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==21 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==22 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==23 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==24 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==25 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==26 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==27 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=0 endif elseif @v==28 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==29 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*conj(c) i2=0 endif elseif @v==30 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*flip(c) i2=0 endif elseif @v==31 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=0 endif elseif @v==32 if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*flip(c) i2=0 endif elseif @v==33 if i2==0 pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*flip(c) i2=0 endif else if i2==0 pz=@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*conj(c) i2=i2+1 else pz=@p1*(1-abs(y-x)+flip(1-abs(1-x-y))-(1,1))+@p2-@pp1*flip(c) i2=0 endif endif endwhile pz=pz*@adj/100 return pz endfunc default: title="Zeppo Mod 4" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35" endparam param p1 caption="Zeppo Parameter 1" default=(1,0) endparam param p2 caption="Zeppo Parameter 2" default=(1,0) endparam param pp1 caption="Pixel Parameter" default=(-0.25,0) endparam param iter caption="Iterations" default=8 endparam param zp1 caption="Z Parameter 1" default=(-1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_ZeppoMod5(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) c=@sf(fpixel) i=0 i2=0 return pz endfunc private: complex c int i int i2 complex func Iterate(complex pz) while i<@iter pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) i=i+1 if @v==0 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==1 if i2==0 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==2 if i2==0 pz=@p1*abs(flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=i2+1 else pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==3 if i2==0 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*abs(flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=0 endif elseif @v==4 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p3*flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==5 if i2==0 pz=@p3*flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==6 if i2==0 pz=@p1*abs(flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=i2+1 else pz=@p3*flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==7 if i2==0 pz=-@p3*flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*flip((1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=0 endif elseif @v==8 if i2==0 pz=@p1*abs(flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=i2+1 else pz=@p3*conj(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==9 if i2==0 pz=@p3*conj(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*flip((1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=0 endif elseif @v==10 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p3*conj(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==11 if i2==0 pz=@p3*conj(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==12 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==13 if i2==0 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif elseif @v==14 if i2==0 pz=@p1*abs(flip(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=i2+1 else pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==15 if i2==0 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p1*flip((1-abs(y-x)-flip(1-abs(1-x-y))-(1,1)))+@p2+@pp1*c i2=0 endif elseif @v==16 if i2==0 pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 else pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=0 endif elseif @v==17 if i2==0 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=0 endif endif endwhile pz=pz*@adj/100 return pz endfunc default: title="Zeppo Mod 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18" endparam param p1 caption="Zeppo Parameter 1" default=(1,0) endparam param p2 caption="Zeppo Parameter 2" default=(-1,0) endparam param p3 caption="Zeppo Parameter 3" default=(1,0) endparam param p4 caption="Zeppo Parameter 4" default=(1,0) endparam param pp1 caption="Pixel Parameter 1" default=(0.25,0) endparam param pp2 caption="Pixel Parameter 2" default=(-0.25,0) endparam param iter caption="Iterations" default=8 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_3AltBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @version==100 float a=real(@bf1(pz))*imag(@c)+real(@c)*imag(@bf1(pz)) if i==0 if a>=0 pz=(pz-@p2)*@p1 else pz=(pz+@p2)*@p1 endif i=i+1 elseif i==1 if a>=0 pz=(pz-@p4)*@p3 else pz=(pz+@p4)*@p3 endif i=i+1 else if a>=0 pz=(pz-@p6)*@p5 else pz=(pz+@p6)*@p5 endif i=0 endif else float a1=real(@bf2(pz))*imag(@c)+real(@c)*imag(@bf2(pz)) float a2=real(@bf3(pz))*imag(@c)+real(@c)*imag(@bf3(pz)) float a3=real(@bf4(pz))*imag(@c)+real(@c)*imag(@bf4(pz)) if i==0 if a1>=0 pz=(pz-@p2)*@p1 else pz=(pz+@p2)*@p1 endif i=i+1 elseif i==1 if a2>=0 pz=(pz-@p4)*@p3 else pz=(pz+@p4)*@p3 endif i=i+1 else if a3>=0 pz=(pz-@p6)*@p5 else pz=(pz+@p6)*@p5 endif i=0 endif endif return pz endfunc private: int i default: title="3Alt Barnsley" int param version caption="Version" default=101 visible=@version<101 endparam func sf caption="Start Function" default=ident() endfunc param p1 caption="Barnsley parameter 1" default=(1.2,-0.6) endparam param p2 caption="Barnsley parameter 2" default=(0.25,0.05) endparam param p3 caption="Barnsley parameter 3" default=(0.95,0.15) endparam param p4 caption="Barnsley parameter 4" default=(1,0) endparam param p5 caption="Barnsley parameter 5" default=(1,0.3) endparam param p6 caption="Barnsley parameter 6" default=(1,0) endparam param c caption="Barnsley parameter 7" default=(0,1) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func bf1 caption="Barnsley Function" default=ident() visible=@version==100 endfunc func bf2 caption="Barnsley Function 1" default=ident() visible=@version==101 endfunc func bf3 caption="Barnsley Function 2" default=ident() visible=@version==101 endfunc func bf4 caption="Barnsley Function 3" default=ident() visible=@version==101 endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_SecantM(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@p1 z0=@p2 c=@sf(fpixel) fz=(0,0) return pz return z0 endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz if @v==0 fz=pz^3+@p3*c*pz^2+@p4*c fz0=z0^3+@p3*c*z0^2+@p4*c elseif @v==1 fz=pz^3+@p3*c*pz+@p4*c fz0=z0^3+@p3*c*z0+@p4*c elseif @v==2 fz=pz^5+@p3*c*pz+@p4*c fz0=z0^5+@p3*c*z0+@p4*c elseif @v==3 fz=pz^4+@p3*c*pz+@p4*c fz0=z0^4+@p3*c*z0+@p4*c elseif @v==4 fz=pz^5+@p3*c*(pz^2+pz)+@p4*c fz0=z0^5+@p3*c*(z0^2+z0)+@p4*c elseif @v==5 fz=pz^3+@p3*c*(pz^2+pz)+@p4*c fz0=z0^3+@p3*c*(z0^2+z0)+@p4*c elseif @v==6 fz=pz^4+pz^3+@p3*c*pz^2+@p4*c fz0=z0^4+z0^3+@p3*c*z0^2+@p4*c elseif @v==7 fz=pz^4-pz^3+@p3*c*pz^2+@p4*c fz0=z0^4-z0^3+@p3*c*z0^2+@p4*c elseif @v==8 fz=pz^4+pz^3+@p3*c*(pz^2+pz)+@p4*c fz0=z0^4+z0^3+@p3*c*(z0^2+z0)+@p4*c elseif @v==9 fz=pz^4-pz^3+@p3*c*(pz^2+pz)+@p4*c fz0=z0^4-z0^3+@p3*c*(z0^2+z0)+@p4*c elseif @v==10 fz=pz^3+@p3*c*pz^3+@p4*c fz0=z0^3+@p3*c*z0^3+@p4*c elseif @v==11 fz=pz^3+(@p3-0.75)*c*(pz^3+pz)+@p4*c fz0=z0^3+(@p3-0.75)*c*(z0^3+z0)+@p4*c elseif @v==12 fz=pz^3+@p3*c*(pz^3+pz^2)+@p4*c fz0=z0^3+@p3*c*(z0^3+z0^2)+@p4*c elseif @v==13 fz=pz^3+@p3*c*(pz^3-pz)+@p4*c fz0=z0^3+@p3*c*(z0^3-z0)+@p4*c elseif @v==14 fz=pz^3+@p3*c*(pz^3-pz^2)+@p4*c fz0=z0^3+@p3*c*(z0^3-z0^2)+@p4*c elseif @v==15 fz=pz^2+@p3*c*pz^3+@p4*c fz0=z0^2+@p3*c*z0^3+@p4*c elseif @v==16 fz=pz^2+@p3*c*pz^3+pz+@p4*c fz0=z0^2+@p3*c*z0^3+z0+@p4*c else fz=pz^3+(@p3-1.25)*(pz+c)^2+@p4*c fz0=z0^3+(@p3-1.25)*(z0+c)^2+@p4*c endif pz=pz-@p5*fz*(pz-z0)/(fz-fz0) z0=m_ZOld return pz return z0 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|fz|<@p_bailout) return bail endfunc private: complex z0 complex fz complex c default: title="Secant M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17""18" endparam param p1 caption="Secant Parameter 1" default=(0,0) endparam param p2 caption="Secant Parameter 2" default=(1,0) endparam param p3 caption="Secant Parameter 3" default=(1,0) endparam param p4 caption="Secant Parameter 4" default=(1,0) endparam param p5 caption="Secant Parameter 5" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000001 exponential=true endparam } class OM_ZeppoMod6(common.ulb:DivergentFormula) { ; Modification of "Zeppo", originally by Gary Mar and Patrick Grim public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) c=@sf(fpixel) i=0 i2=0 return pz endfunc private: complex c int i int i2 complex func Iterate(complex pz) while i<@iter pz=@zp1*pz+@zp2 x=real(pz) y=imag(pz) i=i+1 if @v==0 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==1 if i2==0 pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==2 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==3 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==4 if i2==0 pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==5 if i2==0 pz=@p1*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif elseif @v==6 if i2==0 pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*abs(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif else if i2==0 pz=-@p1*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p2+@pp1*c i2=i2+1 elseif i2==1 pz=@p3*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p4-@pp2*c i2=i2+1 else pz=@p5*(1-abs(y-x)-flip(1-abs(1-x-y))-(1,1))+@p6-@pp3*c i2=0 endif endif endwhile pz=pz*@adj/100 return pz endfunc default: title="Zeppo Mod 6" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param p1 caption="Zeppo Parameter 1" default=(1,0) endparam param p2 caption="Zeppo Parameter 2" default=(-1,0) endparam param p3 caption="Zeppo Parameter 3" default=(1,0) endparam param p4 caption="Zeppo Parameter 4" default=(1,0) endparam param p5 caption="Zeppo Parameter 5" default=(1,0) endparam param p6 caption="Zeppo Parameter 6" default=(0.5,0) endparam param pp1 caption="Pixel Parameter 1" default=(0.25,0) endparam param pp2 caption="Pixel Parameter 2" default=(-0.25,0) endparam param pp3 caption="Pixel Parameter 3" default=(0.5,0) endparam param iter caption="Iterations" default=8 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param adj caption="Adjustment" default=102.0 endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=30.0 exponential=true endparam } class OM_BonaSpallona(common.ulb:GradientColoring) { public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=(0,1) b=(0,1) c=0.0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="+flip(pixel)" pz=pz+flip(pixel) elseif @Fs=="-flip(pixel)" pz=pz-flip(pixel) elseif @Fs=="*flip(pixel)" pz=pz*flip(pixel) elseif @Fs=="/flip(pixel)" pz=pz/flip(pixel) elseif @Fs=="flip+pixel" pz=flip(pz)+pixel elseif @Fs=="flip-pixel" pz=flip(pz)-pixel elseif @Fs=="flip*pixel" pz=flip(pz)*pixel elseif @Fs=="flip/pixel" pz=flip(pz)/pixel elseif @Fs=="sqr+pixel" pz=pz^2+pixel elseif @Fs=="sqr-pixel" pz=pz^2-pixel elseif @Fs=="sqr*pixel" pz=pz^2*pixel elseif @Fs=="sqr/pixel" pz=pz^2/pixel elseif @Fs=="(-pixel)/(+pixel)" pz=(pz-pixel)/(pz+pixel) elseif @Fs=="(+pixel)/(-pixel)" pz=(pz+pixel)/(pz-pixel) elseif @Fs=="(sqr-pixel)/(+pixel)" pz=(sqr(pz)-pixel)/(pz+pixel) elseif @Fs=="(sqr+pixel)/(-pixel)" pz=(sqr(pz)+pixel)/(pz-pixel) elseif @Fs=="+pixel+sqr(pixel)" pz=pz+pixel+sqr(pixel) elseif @Fs=="-pixel-sqr(pixel)" pz=pz-pixel-sqr(pixel) elseif @Fs=="+pixel-sqr(pixel)" pz=pz+pixel-sqr(pixel) elseif @Fs=="-pixel+sqr(pixel)" pz=pz-pixel+sqr(pixel) elseif @Fs=="+pixel+abs(pixel)" pz=pz+pixel+abs(pixel) elseif @Fs=="+pixel-abs(pixel)" pz=pz+pixel-abs(pixel) elseif @Fs=="-pixel+abs(pixel)" pz=pz-pixel+abs(pixel) elseif @Fs=="-pixel-abs(pixel)" pz=pz-pixel-abs(pixel) elseif @Fs=="(sqr-pixel)/(+pixel)+pixel" pz=(sqr(pz)-pixel)/(pz+pixel)+pixel elseif @Fs=="(sqr+pixel)/(-pixel)+pixel" pz=(sqr(pz)+pixel)/(pz-pixel)+pixel elseif @Fs=="(sqr-pixel)/(+pixel)-pixel" pz=(sqr(pz)-pixel)/(pz+pixel)-pixel elseif @Fs=="(sqr+pixel)/(-pixel)-pixel" pz=(sqr(pz)+pixel)/(pz-pixel)-pixel elseif @Fs=="third" pz=pz/3 elseif @Fs=="half" pz=pz/2 elseif @Fs=="double" pz=pz*2 elseif @Fs=="triple" pz=pz*3 elseif @Fs=="(-i)/(+i)" pz=(pz-1i)/(pz+1i) elseif @Fs=="(sqr-i)/(+i)" pz=(sqr(pz)-1i)/(pz+1i) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif float x=real(pz) float y=imag(pz) if @V=="Alain Curve" pz=((x^2-y^2)^2-@p1^2*x^2+@p2^2*y^2) elseif @V=="Ampersand Curve" pz=(y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2 elseif @V=="Arcs of Samothrace" pz=x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2) elseif @V=="Astroid" pz=x^(2/3)+y^(2/3)-@p1^(2/3) elseif @v=="Atripthaloid" pz=x^4*(x^2+y^2)-(@p2*x^2-@p1^3)^2 elseif @V=="Beddington Mod" pz=real(pz)*exp(@p2*(1-0.1*real(pz))-@p1*imag(pz))+flip(real(pz)*(1-exp(-@p1*imag(pz)))) elseif @V=="Beetle" pz=(x^2+y^2)*(x^2+y^2-@p1*x-@p2*y)-@p3^2*x^2*y^2 elseif @v=="Biaxial Eight Reverse" pz=@p1^2*y^2-x^2*(y^2-x^2) elseif @V=="Bicorn" pz=imag(pz)^2*(@p1^2-real(pz)^2)-(real(pz)^2+2*@p1*imag(pz)-@p1^2)^2 elseif @V=="Bicuspid" pz=(real(pz)^2-@p1^2)*(real(pz)-@p1)^2+(imag(pz)^2-@p1^2)^2 elseif @V=="Biquartic" pz=(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)) elseif @V=="Blade's Cubic" pz=x^3+y^3-@p1^3 elseif @V=="Bogdanov" pz=flip(y+@p1*y+@p2*x*(x-1)+@p3*x*y)+x+y+@p1*y+@p2*x*(x-1)+@p3*x*y elseif @V=="Bogdanov-Takens" pz=y+flip(@p1+@p2*x+x^2-x*y) elseif @V=="Bolza" pz=y^2-x^5+x elseif @V=="Borrelli" pz=real(pz)-imag(pz)-(@p1-0.3+1i)*real(pz)*(real(pz)^2+imag(pz)^2)+(@p2-1+1i)+flip(real(pz)+imag(pz)-(-@p3)*imag(pz)*(real(pz)^2+imag(pz)^2)+(@p4-1)) elseif @V=="Brusselator" pz=(1-(@p1+1)*x+y*x^2)/@p2+flip((@p1*x-y*x^2)/@p3) elseif @V=="Buckling Column Model" pz=y+flip(-(@p1*x^3+@p2*x+@p3*y)/@p4) elseif @V=="Bullet-Nose Curve" pz=(@p1^2-x^2)*(@p2^2+y^2)-@p1^2*@p2^2 elseif @V=="Burgers" pz=@p1*x-y^2+flip(@p2*y+x*y) elseif @V=="Cao-Lai" pz=@p1*x*(1-x)+flip(@p2*x*sin(2*pi*y)/(2*pi)) elseif @V=="Cardioid" pz=(x^2+y^2-2*@p1*x)^2-4*@p1^2*(x^2+y^2) elseif @V=="Cartesian Oval" pz=(@p2-1)*sqrt((real(pz)-@p1)^2+imag(pz)^2)+@p3*sqrt((real(pz)+@p1)^2+imag(pz)^2)-@p4 elseif @V=="Cassinian Ovals" pz=(real(pz)^2+imag(pz)^2)^2-2*@p1^2*(real(pz)^2-imag(pz)^2)+@p1^4-(@p2-0.2)^4 elseif @V=="Cayley's Sextic" pz=4*(x^2+y^2-@p1*x)^3-27*@p1^2*(x^2+y^2)^2 elseif @V=="Chasles Cubic" pz=y-@p1*x^3-@p2*x^2*y-@p3*x*y^2-@p4*y^3 elseif @V=="Cissoid of Zahradnik" pz=@p3*x^2+2*@p4*x*y+(@p5+1)*y^2-2*@p1*x-2*@p2*y elseif @V=="Clifford" pz=sin((@p1+1)*imag(pz))+@p2*cos((@p1+1)*real(pz))+flip(sin((@p3+1)*real(pz))+@p4*cos((@p3+1)*imag(pz))) elseif @V=="Conchoid of a Circle" pz=(real(pz)^2+imag(pz)^2+@p3^2-@p2^2)^2*(imag(pz)^2+(real(pz)+@p1)^2)-4*@p3^2*(real(pz)*(real(pz)+@p1)+imag(pz)^2)^2 elseif @V=="Conchoid of de Sluze" pz=@p1*(real(pz)+@p1)*(real(pz)^2+imag(pz)^2)-@p2^2*real(pz)^2 elseif @V=="Conchoid of Nicomedes" pz=(real(pz)-@p2)^2*(real(pz)^2+imag(pz)^2)-@p1^2*real(pz)^2 elseif @V=="Conic Sections" pz=2*@p1^2*x+(1-@p1^2)*x^2+y^2-@p1^2 elseif @V=="Cornoid" pz=(x^2+y^2)^3+@p1^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@p1^4*y^2-4*@p1^6 elseif @V=="Cosinusoid" pz=(y-@p1*cos(x/@p2)) elseif @V=="Cotangentoid" pz=(y-@p1*cotan(x/@p2)) elseif @V=="Cubic of Apollonius" pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+(@p2+2)^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @v=="Cubic Joint" pz=y^2*x-@p1*y^2-@p2*x^2 elseif @V=="Curve of Cramer" pz=real(pz)*(real(pz)^2+imag(pz)^2)+(@p1+1+@p2)*real(pz)^2-(@p1+1-@p2)*imag(pz)^2 elseif @V=="Curve of Jefabek" pz=(@p2+1)^2*(real(pz)^2+imag(pz)^2-@p1*real(pz))^2-@p1^2*(real(pz)^2+imag(pz)^2)*(real(pz)-@p1)^2 elseif @V=="Curve of Loriga" pz=3*real(pz)^2-imag(pz)^2-@p1^2 elseif @V=="Curve of Rosillo" pz=imag(pz)^2*(@p3-real(pz))^2-(@p2-real(pz))^2*(@p1^2-real(pz)^2) elseif @V=="Devil's Curve" pz=imag(pz)^4-real(pz)^4-@p1^2*imag(pz)^2+@p2^2*real(pz)^2 elseif @V=="Duffing 1" pz=y+flip(-@p1*y+(1+@p2*(@p3*cos(@p4)+cos(@p5)))*x-x^3+@p6) elseif @V=="Duffing 2" pz=y+flip(-@p1*x-@p2*x^3+@p3) elseif @V=="Duffing 3" pz=imag(pz)+flip(-@p1*x-((@p2-@p1)/2)*(cabs(x+1)-cabs(x-1))-@p3*y+@p4) elseif @V=="Duffing Parametric" pz=y+flip(-x-x^3+(@p1+@p2*x^2+@p3*@p4*x)*y+@p4*@p5) elseif @v=="Dumbbell Curve" pz=@p2^4*y^2-x^4*(@p1^2-x^2) elseif @V=="Duplicatrix Cubic" pz=@p1*y^2-x^2*(x-@p1) elseif @V=="Egg of Granville" pz=real(pz)^2*imag(pz)^2-(real(pz)-@p1)*(1-real(pz)) elseif @V=="Egg of Kepler" pz=(x^2+y^2)^2-@p1*x^3 elseif @v=="Eight Curve" pz=x^4-@p1^2*(x^2-y^2) elseif @v=="Elongated Cissoid" pz=x*(x^2+y^2)-(@p1+2*@p2)*x^2-2*@p3*x*y-@p1*y^2 elseif @V=="Fish Curve" pz=(2*real(pz)^2+imag(pz)^2)^2+2*sqrt(2)*@p1*real(pz)*(2*real(pz)^2-3*imag(pz)^2)+2*@p1^2*(imag(pz)^2-real(pz)^2) elseif @V=="Focal Conic Conchoid" pz=(real(pz)^2+imag(pz)^2-@p1*(@p2+1)*real(pz))^2-(real(pz)^2+imag(pz)^2)*((@p2+1)*real(pz)-(@p1+1))^2 elseif @V=="Folium of Descartes" pz=x^3+y^3-3*@p1*x*y elseif @V=="Folium of Durer" pz=(x^2+y^2)*(2*(x^2+y^2)-@p1^2)^2-(@p1+0.225)^4*x^2 elseif @V=="Garrote-Mira" pz=y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2)\ +flip(-x+@p2*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ +2*(1-@p2)*(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))\ ^2/(1+(y+@p1*(1-0.05*y^2)+@p2*x+2*(1-@p2)*x^2/(1+x^2))^2)) elseif @V=="Gumowski-Mira 1" pz=y+@p1*(1-0.05*y^2)*y+(@p2+0.5)*x+2*(1-(@p2+0.5))*x^2/(1+x^2)\ +flip(-x+(@p2+0.5)*(y+@p1*(1-0.05*y^2)*y+(@p2+0.5)*x+2*(1-(@p2+0.5))*x^2/(1+x^2))\ +2*(1-(@p2+0.5))*(y+@p1*(1-0.05*y^2)*y+(@p2+0.5)*x+2*(1-(@p2+0.5))*x^2/(1+x^2))^2/\ (1+(y+@p1*(1-0.05*y^2)*y+(@p2+0.5)*x+2*(1-(@p2+0.5))*x^2/(1+x^2))^2)) elseif @V=="Gumowski-Mira 2" if x<-0.5 pz=-@p1*x+y+flip(y+(-2*(@p1+1)*x-0.9*(@p1+1))) elseif cabs(x)<0.5 pz=-@p1*x+y+flip(y-(@p1+1)*x/5) else pz=-@p1*x+y+flip(y+(-2*(@p1+1)*x+0.9*(@p1+1))) endif elseif @V=="Hamilton" pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V=="Hamilton Torus" pz=-sin(imag(pz))*(2-@p1)+flip(sin(real(pz))*@p1) elseif @V=="HCA" pz=1-@p1*x^2+@p2*(y^2-x^2)+flip(1-@p1*y^2+@p2*(x^2-y^2)) elseif @v=="Heat Capacity Curve" pz=y-x-@p1/x^2 elseif @V=="Henon 1" pz=1-@p1*x^2+y+flip((@p2-0.5)*x) elseif @V=="Henon 2" pz=-(y-real(pz)^2)*sin(2*pi/(@p1+(0,0.1)))+x*cos(2*pi/(@p1+(0,0.1)))+flip((y-real(pz)^2)*cos(2*pi/(@p1+(0,0.1)))+x*sin(2*pi/(@p1+(0,0.1)))) elseif @V=="Henon 3" pz=y+flip(-@p2^(-1)*(1-@p1*y^2-@p2*x)) elseif @V=="Henon 4" pz=exp(-@p1*@p2/2)*(x*cos(@p2*@p3)+(1/@p3)*(y-(@p4+x^2)+@p1*x/2)*sin(@p2*@p3))+flip(exp(-@p1*@p2/2)*(-@p3*x*sin(@p2*@p3)+(y-(@p4+x^2)+@p1*x/2)*cos(@p2*@p3))-@p1*x/2) elseif @V=="Henon 5" pz=y+(@p1+1)*cos(pi*x/2)-1+flip((@p2-0.5)*x) elseif @V=="Henon-Heiles 1" pz=-@p1*x-@p2*x*y+flip(-@p3*y-@p4*x^2+@p5*y^2) elseif @V=="Henon-Heiles 2" pz=y+flip(-@p1*x-@p2*x^2+@p3) elseif @V=="Hippopede of Proclus" pz=(real(pz)^2+imag(pz)^2)^2+4*@p2*(@p2-@p1)*(real(pz)^2+imag(pz)^2)-4*@p2^2*real(pz)^2 elseif @V=="Horsthemke-Lefever" pz=@p1*x*(1-x/@p3)-@p2*x*y+flip(-@p2*x*y+@p4*(@p5-y)) elseif @V=="Humbert's Cubic" pz=(x^3-3*x*y^2-@p1^3) elseif @V=="Hyperbolic Cosinusoid" pz=(y-@p1*cosh(x/@p2)) elseif @V=="Hyperbolic Cotangentoid" pz=(y-@p1*cotanh(x/@p2)) elseif @V=="Hyperbolic Sinusoid" pz=(y-@p1*sinh(x/@p2)) elseif @V=="Hyperbolic Tangentoid" pz=y-@p1*tanh(x/@p2) elseif @V=="Ikeda" pz=@p1+@p2*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p2*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Ilhem-Amel 1" pz=x^3+@p1*x+@p2/2+y+flip((@p3-0.5)*x) elseif @V=="Ilhem-Amel 2" pz=(@p4-0.5)*x^3+@p1*x+@p2/2+@p5*y+flip(@p3*x+@p6*y) elseif @V=="Isoptic Cueve" pz=tan(@p1)^2*(x+pi/2)^2-y^2+2*@p2*x elseif @v=="Jiang" pz=y+flip(x+@p1*x^2+@p2*y^2-@p3*x*y-@p4) elseif @V=="Kampyle of Eudoxus" pz=@p1^2*real(pz)^4-@p2^4*(real(pz)^2+imag(pz)^2) elseif @V=="Kaplan-Yorke" pz=real(@p1)*real(pz)%1+flip(-@p2*imag(pz)+cos(2*pi*real(pz))) elseif @V=="Kappa Curve" pz=y^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="Kiss Curve" pz=@p1^4*imag(pz)^2-(@p1^2-real(pz)^2)^3 elseif @v=="Klein Quartic" pz=(real(pz)^2+imag(pz)^2-@p2*@p1^2)^2-@p3*@p1*(imag(pz)-@p1+sqrt(3)*real(pz))*(imag(pz)-@p1-sqrt(3)*real(pz))*(2*imag(pz)+@p1) elseif @V=="Kolmogorov-Volterra" pz=(x*(@p1-x^2)-@p2*x*y)/(1+x^2)+flip((@p3*x^2-1)*y/(1+x^2)) elseif @v=="Kulp Quartic" pz=x^2*y^2-@p1^2*(@p1^2-y^2) elseif @V=="Latoocarfian" pz=sin(@p1*y)+@p2*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Lemniscate of Bernoulli" pz=(real(pz)^2+imag(pz)^2)^2-(@p1+1)^2*(real(pz)^2-imag(pz)^2) elseif @V=="Lemniscate of Booth" pz=(x^2+y^2)^2-(2*@p1^2+@p2)*x^2+(2*@p1^2-@p2)*y^2 elseif@V=="Limacon of Pascal" pz=(real(pz)^2+imag(pz)^2-@p1*real(pz))^2-@p2^2*(real(pz)^2+imag(pz)^2) elseif @V=="Lissajous Curve" pz=2*(2*real(pz)^2-@p1^2)^2-@p1*(2*imag(pz)-@p1)^2*(imag(pz)+@p1) elseif @v=="Lissajous Quadratic" pz=@p1^4*y^4-4*@p1^3*@p2*x*y^3+2*@p1^2*@p2*y^3 \ +6*@p1^2*@p2^2*x^2*y^2-4*@p1*@p2^2*x*y^2-2*@p1^3*x*y^2 \ -2*@p1^2*@p2^2*y^2+@p2^2*y^2+@p1^2*y^2 \ -4*@p1*@p2^3*x^3*y+2*@p2^3*x^2*y+4*@p1^2*@p2*x^2*+4*@p1*@p2^3*x*y\ -2*@p2^3*y-4*@p1^2*@p2*y+@p2^4*x^4-2*@p1*@p2^2*x^3-2*@p2^4*x^2 \ +@p2^2*x^2+@p1^2*x^2+2*@p1*@p2^2*x-@p1^2-@p2^2+@p2^4 elseif @V=="Logarithmic Lemniscate" pz=imag(pz)^2-real(pz)^2*log((@p1+1)^2/real(pz)^2) elseif @V=="Logarithmic Sinusoid" pz=y-log(sqrt(1-x^2)) elseif @V=="Lozi" pz=1-@p1*cabs(x)+y+flip(@p2*x) elseif @V=="Lozi Mod" pz=1+@p1*(cabs(x)-y^2)+y+flip((@p2-0.5)*x) elseif @V=="Marotto-Lorenz" pz=(1-@p1*x-@p2*y)*(@p1*x+@p2*y)+flip(x) elseif @V=="Martin" pz=y+sin(x)+flip(@p1-x) elseif @V=="Mira 1" pz=(1-@p1/2)*x+y+flip(@p1*@p2*x/2+@p3*y-@p1*x^3/2) elseif @V=="Mira 2" pz=x^2-y^2+@p1*x+@p2+flip(2*x*y-5*@p1*y/2+@p3) elseif @V=="Multifold Henon" pz=1-@p1*sin(x)+@p2*y+flip(x) elseif @V=="Nephroid" pz=(real(pz)^2+imag(pz)^2-4*(@p1-0.5)^2)^3-108*(@p1-0.5)^4*real(pz)^2 elseif @V=="Nephroid of Freeth" pz=(real(pz)^2+imag(pz)^2)*(real(pz)*2+imag(pz)^2-@p1^2)^2-4*@p1^2*(real(pz)^2+imag(pz)^2-@p1*real(pz))^2 elseif @V=="OM1" if @version==100 pz=sin((@p1-1)*y)+(sin((@p1-1)*x))^2+(sin((@p1-1)*y))^3+flip(sin(@p2*x)+(sin(@p2*y))^2+(sin(@p2*x))^3) else pz=@p1*y+(@p1*x)^2+(@p1*y)^3+flip(@p2*x+(@p2*y)^2+(@p2*x)^3) endif elseif @V=="OM2" pz=flip(y)+flip(atanh(x)+y*(@p1-y^2)) elseif @V=="OM3" if @version==100 pz=sin(@p1*x)-tan((@p2-1)*y)+flip(tan(@p3*x)+sin(@p4*y)) else pz=abs(@p1*x)-@p2*y+flip(@p3*x+abs(@p4*y)) endif elseif @V=="OM4" pz=(x^2-y^2)*(x^2+y^2)^2-2*@p1*x*y*(x-@p1^2) elseif @V=="OM5" pz=@p1*sin(x^2+y^2)+@p2*x*(x^2-y^2)-2*@p1*x*y*(@p1^2-@p2^2) elseif @V=="OM6" if @version==100 pz=@p1*sin(x)^3+@p2*sin(y)^3-(@p3-1) else pz=@p1*abs(x)^3+@p2*y^3-@p3 endif elseif @V=="OM7" pz=(x^2-(@p1-0.2)^2)*(x-(@p2-0.2))+(y^2-(@p3-0.2)^2)^2 elseif @V=="OM8" pz=(x^2-(@p1-0.5)^2)*(x-(@p2-0.5))^2+(y^2-(@p3-0.5)^2)^3 elseif @V=="OM9" pz=((@p1*@p2-x)^2+(@p2-y)^2)/@p3^2-1 elseif @V=="OM10" pz=@p1*(x^2+y^2)^4-@p1*(x^2+y^2)^3+@p2*(x^2+y^2)^2-(x^2+y^2)+@p3*y elseif @V=="OM11" pz=(2*@p1)^@p2*y^2-(@p1+x)*(@p1-x)^(@p2+1) elseif @V=="OM12" if @version==100 pz=(x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))+flip((x%(2*pi))+(y%(2*pi))+@p2*sin(2*pi*(x%(2*pi)))-(x%(2*pi))) else pz=x+y^2+@p1*x+flip(x+y+@p2*x-x^2) endif elseif @V=="OM13" if @version==100 pz=@p1*y-@p2/(x*cos(x))+@p3/(x*cos(y)) else pz=@p1*y-@p2*x^2+@p3*x*y+x^2*y endif elseif @V=="OM14" pz=(1/3)*(-(pi+1)*x+@p1-@p2+(x+flip(y))*y+((1-@p1)*(x^2-y)^2)+(2*(@p1+@p2-(x+flip(y))))*x*y)*(1/(3*sqrt(x^2+y^2))) \ +flip((1/3)*((@p2-@p1-(x+flip(y)))*x-(@p1+1)*y)+((2*(@p1-1))*x*y+(@p1+@p2-(x+flip(y)))*(x^2-y^2))*(1/(3*sqrt(x^2+y^2)))) elseif @V=="OM15" pz=(x-@p1*y)*cos(x+flip(y))-@p2*y*sin(x+flip(y))+flip((x*@p3*y)*sin(x+flip(y))+@p4*y*cos(x+flip(y))) elseif @V=="OM16" pz=x-y-cotan(x)*(@p1*x^2+@p2*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)) elseif @V=="OM17" pz=@p1*x*cotan(x)-y*log(x)+flip(@p2*y*sqr(x)) elseif @V=="OM18" pz=(x^2+y^2)^5+@p1*(x^2-y^2)^3-@p1^2*y elseif @V=="OM19" pz=(((@p1-0.5)*@p2-x*y)^3+(@p2*@p3-(X^2+y^2)^2)) elseif @V=="OM20" pz=y^2+x^2-((x+(@p3*(x-@p1))/sqrt((x-@p1)^2+(y-@p2)^2))-(y+(@p3*(y-@p2))/sqrt((x-@p1)^2+(y-@p2)^2))) elseif @V=="OM21" pz=x^2-4*@p1*y*(x^2+y^2)+y^3*@p1^2*(x^2-y^2)^4 elseif @V=="OM22" if @version==100 pz=@p3*sin(imag(pz)+sin(@p1*imag(pz)))+flip(@p4*sin(real(pz)+sin(@p2*real(pz)))) else pz=@p1*y-@p2*x^2+@p3*x*y+@p4*sqr(x^2*y) endif elseif @V=="OM23" if @version==100 pz=cos((@p1+1)*real(pz))-sin(@p2*imag(pz))+flip(sin(@p3*real(pz))+cos(@p4*imag(pz))) else pz=(@p1+1)*y-@p2*(x^2+y^2)+@p3*(x*y-y^2)-@p4*x^2*y endif elseif @V=="OM24" if @version==100 pz=x+(@p1-0.8)*@p2*cotan(2*pi*y)+flip(y-((@p1-0.8)/@p2)*cotan(2*pi*(x+(@p1-0.8)*@p2*cotanh(2*pi*y)))) else pz=-@p1*(x^2-y^2)^2+@p1^2*x^2+@p2^2*y^2-@p2*(x^4-y^3-x^2+y) endif elseif @V=="OM25" if @version==100 pz=@p1*sin(x)-tan(y)-sin(x+flip(y))+flip(-@p2*tan(x)+sin(y)+sin(x+flip(y))) else pz=y*x+x^2+flip(-(@p1+1)*x^2-@p2*x^3+y) endif elseif @V=="OM26" pz=x+@p1*y^2+sin(x)^3+flip(y-@p2*x^2+sin(y)^3) elseif @V=="OM27" pz=@p1*sin(x)-tan(y)-abs(x+flip(y))+flip(-@p2*tan(x)+sin(y)+exp(x+flip(y))) elseif @V=="OM28" pz=@p1*sin(x)-tan(y)-abs(x+flip(y))+flip(-@p2*tan(x)+sin(y)+abs(x+flip(y))) elseif @V=="OM29" if @version==100 pz=(@p1*tan(y)-@p2)/(@p1*tan(x)+@p2)+flip((@p1*tan(x)-@p2)/(@p1*tan(y)+@p2)) else pz=(-@p1*y-@p2)/(-@p1*x+@p2)+flip((-@p1*x-@p2)/(-@p1*y+@p2)) endif elseif @V=="OM30" pz=x-sin(y+@p1*sin(@p2*y+@p3*sin(@p4*y)))+flip(y-sin(x+@p1*sin(@p2*x+@p3*sin(@p4*x)))) elseif @V=="OM31" if @version==100 pz=((@p1-0.5)-@p2)*cos(x)+@p2*cos(((@p1-0.5)/@p2-1)*y)+flip(((@p1-0.5)-@p2)*sin(y)-@p2*sin(((@p1-0.5)/@p2-1)*x)) else pz=@p1*x+@p2^2*x^4+@p1^2*y-@p2*x*y^2 endif elseif @V=="OM32" pz=@p1*x+x*(y-@p2)+flip(y+x+@p2) elseif @V=="OM33" pz=@p1*x+x*(y-@p2)+flip(log(y+x)+@p2) elseif @V=="OM34" pz=@p1*x+x*y^3+@p2*abs(x-y)-x^4*y elseif @V=="OM35" pz=@p1*x+x*y^3+@p2*sqr(x-y)-1/(x^4*y) elseif @V=="OM36" pz=-imag(pz)+@p1*real(pz)*tan(1-real(pz)^2-imag(pz)^2)+@p3-1+flip(@p5*real(pz)+@p2*imag(pz)*sqr(1-real(pz)^2-imag(pz)^2)+@p4) elseif @V=="OM37" pz=real(pz)-imag(pz)-@p1*real(pz)*log(real(pz)^2+imag(pz)^2)+@p3+flip(real(pz)+imag(pz)-@p2*imag(pz)*sqr(real(pz)^2+imag(pz)^2)+@p4) elseif @V=="OM38" pz=@p1*(1-imag(pz)^2)*real(pz)+@p2*exp(imag(pz))+(@p5-1)+flip(@p3*(1+real(pz)^2)*imag(pz)+@p4*exp(real(pz))+(@p6-1)) elseif @V=="OM39" pz=-@p1*real(pz)-@p2*imag(pz)+sqr(imag(pz))+(@p3-1)+flip(@p2*real(pz)-@p1*imag(pz)+exp(real(pz))+(@p4-1)) elseif @V=="OM40" pz=@p1*imag(pz)*cabs(real(pz))+@p4*imag(pz)^2+flip(@p2*real(pz)+cabs(imag(pz))+@p3) elseif @V=="OM41" pz=@p1*tan(imag(pz))-real(pz)^2+@p2*real(pz)+flip(real(pz)+@p3*(imag(pz)-real(pz))^3+(@p4-1)) elseif @V=="OM42" pz=@p1*imag(pz)^3-sin(real(pz))+@p3*cabs(imag(pz))+flip(real(pz)-@p2) elseif @V=="OM43" pz=@p1*imag(pz)^2*(real(pz)-(@p2-0.5))/(1-(@p2-0.5)*real(pz))+(@p3-1)+flip(@p4*real(pz)+@p5*real(pz)*imag(pz)) elseif @V=="OM44" pz=@p1*sin(@p2*sin(@p1*sin(@p2*sin(@p1*imag(pz)))))+@p3*real(pz)*imag(pz)+@p4+flip(real(pz)+(@p5-1.5)) elseif @V=="OM45" pz=-@p1*real(pz)-@p2*imag(pz)+sin(real(pz)+imag(pz))-@p3*real(pz)*imag(pz)^2+flip(@p2*real(pz)+@p1*imag(pz)+cos(real(pz)-imag(pz))+@p4*real(pz)*imag(pz)-@p5) elseif @V=="OM46" pz=@p6*sin(-@p1+sin((@p2-0.75)+imag(pz)))-(real(pz)-@p3)/(real(pz)+@p3)+flip(-@p1+(@p2-0.75)+real(pz)-@p5*imag(pz)+@p4) elseif @V=="OM47" pz=imag(pz)+@p1*(real(pz)-1i)/(real(pz)+1i)+(@p2-0.75)+flip((imag(pz)-@p5)/(imag(pz)+@p5)+@p3*sin((@p4-1)+sin(real(pz)^2-imag(pz)^2))) elseif @V=="OM48" pz=@p1*sin(real(pz)-sin(@p2*imag(pz)))-imag(pz)^2+@p3+flip(real(pz)+@p4*real(pz)*imag(pz)-@p5*sin(real(pz))) elseif @V=="OM49" pz=@p1*real(pz)^3-@p2*real(pz)^2*imag(pz)+@p3*(imag(pz)^2-real(pz))+flip(-@p4*imag(pz)-@p5*imag(pz)^4*real(pz)-@p6*(real(pz)+imag(pz))) elseif @V=="OM50" pz=real(pz)*(-@p1+@p2*(real(pz)^2+imag(pz)^3))+@p3*imag(pz)+flip(imag(pz)*(@p4+@p5*(real(pz)^2-imag(pz)^4))-@p6*real(pz)) elseif @V=="OM51" pz=-@p1*cos(real(pz)^3)+@p2*sin(imag(pz)*real(pz))+@p3+flip(@p5*sin(imag(pz)-real(pz)^2)-@p6*cos(real(pz))+@p4) elseif @V=="Oblique Cappa" pz=((x^2+y^2)*y^2-@p1^2*(x*sin(@p2)+y*cos(@p2))^2) elseif @V=="Oblique Cissoid" pz=((x^2+y^2)*(x*cos(@p2)+y*sin(@p2))-2*@p1*y^2) elseif @V=="Oblique Pancappa" pz=((y-@p1)^2*(x^2+y^2)-(@p2*x+@p3*y)^2) elseif @V=="Oblique Strophoid" pz=(y*(x^2+y^2)-@p1*(x^2-y^2)-2*@p2*x*y) elseif @V=="Ophiuride" pz=x*(x^2+y^2)-@p2*x*y-@p1*y^2 elseif @V=="Oscillating Chemical Reaction" pz=(@p1-x-4*x*y)/(1+x^2)+flip(@p2*x*(1-y)/(1+x^2)) elseif @V=="Pearls of Sluze" pz=imag(pz)^@p2-@p3*(@p1-real(pz))^@p4*real(pz)^@p5 elseif @V=="Pendulum Morozov" pz=y+flip(-sin(x)+y*(@p1+@p2*cos(@p3*x))*(-@p4)) elseif @V=="Polyharmonic Pendulum" pz=y+flip(-@p1*sin(x)-@p2*sin(3*x)+@p3*sin(@p4)) elseif @V=="Popcorn" pz=x-@p1*sin(y+tan(@p2*y))+flip(y-@p1*sin(x+tan(@p2*x))) elseif @V=="Quadratix of Hippias" pz=real(pz)-imag(pz)*cotan(imag(pz)/(@p1-0.5)) elseif @v=="Right Strophoid" pz=y^2-x^2*(@p1-x)/(@p1+x) elseif @V=="Scarab" pz=(real(pz)^2+imag(pz)^2)*(real(pz)^2+imag(pz)^2+@p1*real(pz))^2-@p2^2*(real(pz)^2-imag(pz)^2)^2 elseif @V=="Scyphoid" pz=x^4-y^4-4*@p1*x*y^2 elseif @V=="Serpentine Curve" pz=y-@p1*@p2*x/(x^2+@p1^2) elseif @V=="Sinus Chain" pz=imag(pz)^2-abs(sin(real(pz))+@p1*sin(2*real(pz))) elseif @V=="Sinusoid" pz=(y-@p1*sin(x/@p2)) elseif @V=="Spiric Curve" pz=(x^2+y^2)^2+@p1*x^2+@p2*y^2+2*@p3*x+@p4 elseif @V=="Spiric of Perseus" pz=(x^2+y^2)^2-2*@p1*x^2-2*@p2*y^2+@p3 elseif @V=="Spiric Sections" pz=(@p3^2-(@p1-0.5)^2+@p2^2+real(pz)^2+imag(pz)^2)^2-4*@p3^2*(real(pz)^2+@p2^2) elseif @V=="Sprott" pz=(1+@p1*@p2)*x-@p2*x*y+flip((1-@p2)*y+@p2*x^2) elseif @V=="Standard Map" pz=x+@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y+@p2+(@p3/(2*pi))*sin(2*pi*x)) elseif @V=="Strelkova-Anishchenko" pz=1-@p1*x^2+@p2*(y-x)+flip(1-@p1*y^2+@p2*(x-y)) elseif @V=="Svensson" pz=@p1*sin(@p2*real(pz))-sin(@p3*imag(pz))+flip(@p4*cos(@p2*real(pz))-cos(@p3*imag(pz))) elseif @V=="Szego Curve" pz=x^2+y^2-e^(2*x-2) elseif @V=="Tangentoid" pz=(y-@p1*tan(x/@p2)) elseif @V=="Tetracuspid" pz=@p1^@p2*(cabs(real(pz))^@p2+cabs(imag(pz))^@p2)-(real(pz)^2+imag(pz)^2)^@p2 elseif @V=="Tinkerbell" pz=real(pz)^2-imag(pz)^2+@p1*real(pz)+@p2*imag(pz)+flip(2*real(pz)*imag(pz)-@p3*real(pz)+@p4*imag(pz)) elseif @V=="Torpedo Curve" pz=(x^2+y^2)^2-@p1*x*(x^2-y^2) elseif @V=="Trisectrix of Ceva" pz=(real(pz)^2+imag(pz)^2)^3-((@p1+1)*real(pz)^2-(@p1-1)*imag(pz)^2)^2 elseif @V=="Trisectrix of Delange" pz=(real(pz)^2+imag(pz)^2-2*(@p1-0.5)^2)^2-real(pz)^2*(real(pz)^2+imag(pz)^2) elseif @V=="Trisectrix of Maclaurin" pz=real(pz)^2*(real(pz)+3*@p1)-imag(pz)^2*(@p1-real(pz)) elseif @V=="Trott Curve" pz=(144*(real(pz)^4+imag(pz)^4)-225*(real(pz)^2+imag(pz)^2)+350*real(pz)^2*imag(pz)^2+81) elseif @V=="Ushiki" pz=(@p1-x-@p2*y)*x+flip((@p3-y-@p4*x)*y) elseif @V=="Van der Pol 1" pz=(@p1+1)*(real(pz)-real(pz)^3/3-imag(pz))+flip(real(pz)/(@p1+1)) elseif @V=="Van der Pol 2" pz=imag(pz)-@p1*real(pz)*(2*real(pz)^2-sin(pi*real(pz))^2-2)+flip(-real(pz)) elseif @V=="Visiera" pz=(x*(x^2+y^2)-@p1*(x^2+2*y^2)) elseif @V=="Viviani's Curve" pz=(y^2-x^2*(@p1^2-x^2)) elseif @V=="Volterra-Lotka" pz=@p1*x-@p2*x*y+flip(-@p3*y+@p4*x*y) elseif @V=="Watt's Curve" pz=(x^2+y^2)*(x^2+y^2-@p3^2)^2+4*@p1^2*y^2*(x^2+y^2-@p2^2) elseif @V=="Zito" pz=x*y+@p1*x-y+flip(x+y) endif float d=1-cabs(pz)/@adj if d<0 d=0 else d=sqr(d) endif f=pz*a float g=1.0 c=c+g*d g=g*0.5 f=f*b/0.5 endfunc float func ResultIndex(complex pz) ;float index=sqrt(a) if @solid if @invert if (sqrt(c)+1)*0.5<@p7 index=(sqrt(c)+1)*0.5 else m_Solid=true endif else if (sqrt(c)+1)*0.5>@p7 index=(sqrt(c)+1)*0.5 else m_Solid=true endif endif else index=(sqrt(c)+1)*0.5 endif return index endfunc private: complex a complex b float c float index default: title="Bona Spallona" int param version caption="Version" default=101 visible=@version<101 endparam param V caption="Variant" enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atripthaloid""Beddington Mod""Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid"\ "Biquartic""Blade's Cubic""Bogdanov""Bogdanov-Takens""Bolza""Borrelli""Brusselator""Buckling Column Model""Bullet-Nose Curve""Burgers""Cao-Lai""Cardioid"\ "Cartesian Oval""Cassinian Ovals""Cayley's Sextic""Chasles Cubic""Cissoid of Zahradnik"\ "Clifford""Conchoid of a Circle"\ "Conchoid of de Sluze""Conchoid of Nicomedes""Conic Sections""Cornoid""Cosinusoid""Cotangentoid"\ "Cubic of Apollonius""Cubic Joint""Curve of Cramer"\ "Curve of Jefabek""Curve of Rosillo""Curve of Loriga""Devil's Curve"\ "Duffing 1""Duffing 2""Duffing 3""Duffing Parametric""Dumbbell Curve"\ "Duplicatrix Cubic""Egg of Granville""Egg of Kepler""Eight Curve""Elongated Cissoid""Fish Curve"\ "Focal Conic Conchoid""Folium of Descartes""Folium of Durer""Garrote-Mira""Gumowski-Mira 1""Gumowski-Mira 2"\ "Hamilton""Hamilton Torus""HCA""Heat Capacity Curve""Henon 1"\ "Henon 2""Henon 3""Henon 4""Henon 5""Henon-Heiles 1"\ "Henon-Heiles 2""Hippopede of Proclus""Horsthemke-Lefever""Humbert's Cubic""Hyperbolic Cosinusoid""Hyperbolic Cotangentoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Ikeda""Ilhem-Amel 1""Ilhem-Amel 2""Isoptic Cueve""Jiang""Kampyle of Eudoxus"\ "Kaplan-Yorke""Kappa Curve""Kiss Curve""Klein Quartic""Kolmogorov-Volterra"\ "Kulp Quartic""Latoocarfian""Lemniscate of Bernoulli"\ "Lemniscate of Booth""Limacon of Pascal"\ "Lissajous Curve""Lissajous Quadratic""Logarithmic Lemniscate""Logarithmic Sinusoid""Lozi""Lozi Mod"\ "Marotto-Lorenz""Martin""Mira 1""Mira 2""Multifold Henon""Nephroid"\ "Nephroid of Freeth""OM1""OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10"\ "OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20"\ "OM21""OM22""OM23""OM24""OM25""OM26""OM27""OM28""OM29""OM30""OM31""OM32""OM33""OM34""OM35""OM36""OM37"\ "OM38""OM39""OM40""OM41""OM42""OM43""OM44""OM45""OM46""OM47""OM48""OM49""OM50""OM51"\ "Oblique Cappa""Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Oscillating Chemical Reaction"\ "Pearls of Sluze""Pendulum Morozov""Polyharmonic Pendulum""Popcorn"\ "Quadratix of Hippias""Right Strophoid""Spiric Curve""Spiric of Perseus""Spiric Sections"\ "Scarab""Scyphoid""Serpentine Curve""Sinus Chain""Sinusoid""Sprott""Standard Map""Strelkova-Anishchenko""Svensson""Szego Curve""Tangentoid""Tetracuspid""Tinkerbell"\ "Torpedo Curve""Trisectrix of Ceva""Trisectrix of Delange""Trisectrix of Maclaurin"\ "Trott Curve""Ushiki""Van der Pol 1""Van der Pol 2""Visiera""Viviani's Curve""Volterra-Lotka""Watt's Curve""Zito" default=9 endparam param p1 default=(1,0) visible=@V!="Ampersand Curve" && @V!="Arcs of Samothrace" && @V!="Biquartic" && @V!="Bolza" \ && @V!="Humbert's Cubic" && @V!="Logarithmic Sinusoid" && @V!="Szego Curve" && @V!="Trott Curve" endparam param p2 default=(1,0) visible=@V=="Alain Curve" || @V=="Atripthaloid" || @V=="Beddington Mod" || @V=="Beetle" || @V=="Bogdanov" || @V=="Bogdanov-Takens" || @V=="Borrelli" || @V=="Brusselator" \ || @V=="Buckling Column Model" || @V=="Bullet-Nose Curve" || @V=="Burgers" || @V=="Cao-Lai" || @V=="Cartesian Oval" \ || @V=="Cassinian Ovals" \ || @V=="Chasles Cubic" || @V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Conchoid of a Circle" \ || @V=="Conchoid of de Sluze" || @V=="Conchoid of Nicomedes" || @V=="Cosinusoid" || @V=="Cotangentoid" || @V=="Cubic of Apollonius" || @V=="Cubic Joint" \ || @V=="Curve of Cramer" || @V=="Curve of Jefabek" || @V=="Curve of Rosillo" || @V=="Devil's Curve" \ || @V=="Duffing 1" || @V=="Duffing 2" || @V=="Duffing 3" \ || @V=="Duffing Parametric" || @V=="Dumbbell Curve" || @V=="Elongated Cissoid" || @V=="Focal Conic Conchoid" || @V=="Garrote-Mira" || @V=="Gumowski-Mira 1" \ || @V=="Hamilton" || @V=="HCA" || @V=="Henon 1" || @V=="Henon 3" || @V=="Henon 4" || @V=="Henon 5" \ || @V=="Henon-Heiles 1" || @V=="Henon-Heiles 2" || @V=="Hippopede of Proclus" || @V=="Horsthemke-Lefever" \ || @V=="Hyperbolic Cosinusoid" || @V=="Hyperbolic Cotangentoid" || @V=="Hyperbolic Sinusoid" || @V=="Hyperbolic Tangentoid" \ || @V=="Ikeda" || @V=="Ilhem-Amel 1" || @V=="Ilhem-Amel 2" || @V=="Isoptic Cueve" || @V=="Jiang" \ || @V=="Kampyle of Eudoxus" || @V=="Kaplan-Yorke" || @V=="Klein Quartic" \ || @V=="Kolmogorov-Volterra" || @V=="Latoocarfian" \ || @V=="Lemniscate of Booth" || @V=="Limacon of Pascal" || @V=="Lissajous Quadratic" || @V=="Lozi" \ || @V=="Lozi Mod" || @V=="Marotto-Lorenz" \ || @V=="Mira 1" || @V=="Mira 2" || @V=="Multifold Henon" || @V=="OM1" \ || @V=="OM3" || @V=="OM5" || @V=="OM6" \ || @V=="OM7" || @V=="OM8" || @V=="OM9" || @V=="OM10" || @V=="OM11" || @V=="OM12"\ || @V=="OM13" || @V=="OM14" || @V=="OM15" || @V=="OM16" || @V=="OM17" \ || @V=="OM19" || @V=="OM20" || @V=="OM22" || @V=="OM23" || @V=="OM24" \ || @V=="OM25" ||@V=="OM26" || @V=="OM27" || @V=="OM28" || @V=="OM29" || @V=="OM30"\ || @V=="OM31" || @V=="OM32" || @V=="OM33" || @V=="OM34" || @V=="OM35" || @V=="OM36" || @V=="OM37" || @V=="OM38" \ || @V=="OM39" || @V=="OM40" || @V=="OM41" || @V=="OM42" || @V=="OM43" || @V=="OM44" || @V=="OM45" \ || @V=="OM46" || @V=="OM47" || @V=="OM48" || @V=="OM49" || @V=="OM50" || @V=="OM51" \ || @V=="Oblique Cappa" || @V=="Oblique Cissoid" || @V=="Oblique Pancappa" || @V=="Oblique Strophoid" || @V=="Ophiuride" \ || @V=="Oscillating Chemical Reaction" || @V=="Pearls of Sluze" || @V=="Pendulum Morozov" \ || @V=="Polyharmonic Pendulum" || @V=="Popcorn" || @V=="Sinusoid" || @V=="Spiric Curve" || @V=="Serpentine Curve" \ || @V=="Spiric of Perseus" || @V=="Spiric Sections" || @V=="Scarab" || @V=="Sprott" || @V=="Standard Map" || @V=="Strelkova-Anishchenko" \ || @V=="Svensson" || @V=="Tangentoid" || @V=="Tetracuspid" || @V=="Ushiki" || @V=="Tinkerbell" || @V=="Volterra-Lotka" || @V=="Watt's Curve" endparam param p3 default=(1,0) visible=@V=="Beetle" || @V=="Bogdanov" || @V=="Borrelli" || @V=="Brusselator" || @V=="Buckling Column Model" || @V=="Cartesian Oval" || @V=="Chasles Cubic" \ || @V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="Conchoid of a Circle" \ || @V=="Cubic of Apollonius" || @V=="Curve of Rosillo" || @V=="Duffing 1" || @V=="Duffing 2" \ || @V=="Duffing 3" || @V=="Duffing Parametric" || @V=="Elongated Cissoid" || @V=="Henon 4" || @V=="Henon-Heiles 1" \ || @V=="Henon-Heiles 2" || @V=="Horsthemke-Lefever"|| @V=="Ikeda" || @V=="Ilhem-Amel 1" || @V=="Ilhem-Amel 2" || @V=="Jiang" || @V=="Klein Quartic" \ || @V=="Kolmogorov-Volterra" || @V=="Latoocarfian" || @V=="Mira 1" || @V=="Mira 2" || @V=="OM3" \ || @V=="OM6" || @V=="OM7" || @V=="OM8" || @V=="OM9" || @V=="OM10" || @V=="OM13" \ || @V=="OM15" || @V=="OM16" || @V=="OM19" || @V=="OM20" || @V=="OM22" \ || @V=="OM23" || @V=="OM30" || @V=="OM36" || @V=="OM37" || @V=="OM38" || @V=="OM39" || @V=="OM40" || @V=="OM41" || @V=="OM42" \ || @V=="OM43" || @V=="OM44" || @V=="OM45" || @V=="OM46" || @V=="OM47" || @V=="OM48" || @V=="OM49" || @V=="OM50" || @V=="OM51" \ || @V=="Oblique Pancappa" || @V=="Pearls of Sluze" || @V=="Pendulum Morozov" || @V=="Polyharmonic Pendulum" \ || @V=="Spiric Curve" || @V=="Spiric of Perseus" || @V=="Spiric Sections" || @V=="Standard Map" \ || @V=="Svensson" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="Watt's Curve" endparam param p4 default=(1,0) visible=@V=="Borrelli" || @V=="Buckling Column Model" || @V=="Cartesian Oval" || @V=="Chasles Cubic" || @V=="Cissoid of Zahradnik" \ || @V=="Clifford" || @V=="Duffing 1" || @V=="Duffing 3" || @V=="Duffing Parametric" \ || @V=="Henon 4" || @V=="Henon-Heiles 1" || @V=="Horsthemke-Lefever" || @V=="Ikeda" || @V=="Ilhem-Amel 2" || @V=="Jiang" || @V=="Latoocarfian" \ || @V=="OM3" || @V=="OM15" || @V=="OM16" \ || @V=="OM22" || @V=="OM23" || @V=="OM30" || @V=="OM36" || @V=="OM37" || @V=="OM38" || @V=="OM39" || @V=="OM40" || @V=="OM41" \ || @V=="OM43" || @V=="OM44" || @V=="OM45" || @V=="OM46" || @V=="OM47" || @V=="OM48" || @V=="OM49" || @V=="OM50" || @V=="OM51" || @V=="Pearls of Sluze" || @V=="Pendulum Morozov" \ || @V=="Polyharmonic Pendulum" || @V=="Spiric Curve" || @V=="Svensson" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" endparam param p5 default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Duffing 1" || @V=="Duffing Parametric" \ || @V=="Henon-Heiles 1" || @V=="Horsthemke-Lefever" || @V=="Ilhem-Amel 2" || @V=="OM36" || @V=="OM38" || @V=="OM43" \ || @V=="OM44" || @V=="OM45" || @V=="OM46" || @V=="OM47" || @V=="OM48" || @V=="OM49" || @V=="OM50" || @V=="OM51" || @V=="Pearls of Sluze" endparam param p6 default=(1,0) visible=@V=="Duffing 1" || @V=="Ilhem-Amel 2" || @V=="OM38" || @V=="OM46" || @V=="OM49" || @V=="OM50" || @V=="OM51" endparam param adj caption="Adjustment" default=1.0 endparam param Fs caption="Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel""*pixel""/pixel""+flip(pixel)""-flip(pixel)""*flip(pixel)""/flip(pixel)"\ "flip+pixel""flip-pixel""flip*pixel""flip/pixel""sqr+pixel""sqr-pixel""sqr*pixel""sqr/pixel"\ "(-pixel)/(+pixel)""(+pixel)/(-pixel)""(sqr-pixel)/(+pixel)""(sqr+pixel)/(-pixel)"\ "+pixel+sqr(pixel)""-pixel-sqr(pixel)""+pixel-sqr(pixel)""-pixel+sqr(pixel)"\ "+pixel+abs(pixel)""+pixel-abs(pixel)""-pixel+abs(pixel)""-pixel-abs(pixel)"\ "(sqr-pixel)/(+pixel)+pixel""(sqr+pixel)/(-pixel)+pixel""(sqr-pixel)/(+pixel)-pixel""(sqr+pixel)/(-pixel)-pixel"\ "third""half""double""triple"\ "(-i)/(+i)""(sqr-i)/(+i)""ceil""floor""trunc""round" default=22 endparam param @solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.55 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_Azave(common.ulb:GradientColoring) { ;This is a modification/extension of Numberseeker by Edgar Malinovsky (em.ucl) ;Lower values of the Iterations paremeter give smoother colouring. ;Higher values give more detail. ;It may be necessary to increase this value when zooming in. public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) i=@iter if i>=#maxiter i=#maxiter-1 endif a=0.0 b=0.0 zold=(0,0) i2=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) zold=pz if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+pixel elseif @Fs=="-pixel" pz=pz-pixel elseif @Fs=="*pixel" pz=pz*pixel elseif @Fs=="/pixel" pz=pz/pixel elseif @Fs=="*pixel+pixel" pz=pz*pixel+pixel elseif @Fs=="*pixel-pixel" pz=pz*pixel-pixel elseif @Fs=="/pixel+pixel" pz=pz/pixel+pixel elseif @Fs=="/pixel-pixel" pz=pz/pixel-pixel elseif @Fs=="flip+pixel" pz=flip(pz)+pixel elseif @Fs=="flip-pixel" pz=flip(pz)-pixel elseif @Fs=="flip*pixel" pz=flip(pz)*pixel elseif @Fs=="flip/pixel" pz=flip(pz)/pixel elseif @Fs=="sqr+pixel" pz=sqr(pz)+pixel elseif @Fs=="sqr-pixel" pz=sqr(pz)-pixel elseif @Fs=="sqr*pixel" pz=sqr(pz)*pixel elseif @Fs=="sqr/pixel" pz=sqr(pz)/pixel elseif @Fs=="(sqr-i)/(+i)" pz=(sqr(pz)-1i)/(pz+1i) elseif @Fs=="(sqr-i)/(+i)+pixel" pz=(sqr(pz)-1i)/(pz+1i)+pixel elseif @Fs=="(sqr-pixel)/(+pixel)" pz=(sqr(pz)-pixel)/(pz+pixel) elseif @Fs=="(sqr+pixel)/(-pixel)" pz=(sqr(pz)+pixel)/(pz-pixel) elseif @Fs=="+pixel+sqr(pixel)" pz=pz+pixel+sqr(pixel) elseif @Fs=="-pixel-sqr(pixel)" pz=pz-pixel-sqr(pixel) elseif @Fs=="+pixel-sqr(pixel)" pz=pz+pixel-sqr(pixel) elseif @Fs=="-pixel+sqr(pixel)" pz=pz-pixel+sqr(pixel) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif if @V=="Ampersand Curve" pz=(imag(pz)^2-real(pz)^2)*(real(pz)-1)*(2*real(pz)-3)-4*(real(pz)^2+imag(pz)^2-2*real(pz))^2 elseif @V=="Astroid" pz=real(pz)^(2/3)+imag(pz)^(2/3)-@p1^(2/3) elseif @V=="Atriphthaloid" pz=real(pz)^4*(real(pz)^2+imag(pz)^2)-(@p2*real(pz)^2-@p1^3)^2 elseif @V=="Bean Curve" pz=((real(pz)^2+imag(pz)^2)^2-real(pz)^3-imag(pz)^3) elseif @V=="Beddington Mod" pz=real(pz)*exp(@p2*(1-0.1*real(pz))-@p1*imag(pz))+flip(real(pz)*(1-exp(-@p1*imag(pz)))) elseif @V=="Beetle" pz=(real(pz)^2+imag(pz)^2)*(real(pz)^2+imag(pz)^2-(@p1+1)*real(pz)-@p2*imag(pz))-@p3^2*real(pz)^2*imag(pz)^2 elseif@V=="Bicorn" pz=imag(pz)^2*(@p1^2-real(pz)^2)-(real(pz)^2+2*@p1*imag(pz)-@p1^2)^2 elseif @V=="Bicuspid" pz=(real(pz)^2-@p1^2)*(real(pz)-@p1)^2+(imag(pz)^2-@p1^2)^2 elseif @V=="Bogdanov" pz=flip(imag(pz)+@p1*imag(pz)+@p2*real(pz)*(real(pz)-1)+@p3*real(pz)*imag(pz))+real(pz)+imag(pz)+@p1*imag(pz)+@p2*real(pz)*(real(pz)-1)+@p3*real(pz)*imag(pz) elseif @V=="Bogdanov-Takens" pz=imag(pz)+flip(@p1+@p2*real(pz)+real(pz)^2-real(pz)*imag(pz)) elseif @V=="Buckling Column Model" pz=imag(pz)+flip(-(@p1*real(pz)^3+@p2*real(pz)+@p3*imag(pz))/@p4) elseif @V=="Burgers" pz=@p1*real(pz)-imag(pz)^2+flip(@p2*imag(pz)+real(pz)*imag(pz)) elseif @V=="Cao-Lai" pz=@p1*real(pz)*(1-real(pz))+flip(@p2*real(pz)*sin(2*pi*imag(pz))/(2*pi)) elseif @V=="Cartesian Oval" pz=(@p2-6)*sqrt((real(pz)-@p1)^2+imag(pz)^2)+@p3*sqrt((real(pz)+@p1)^2+imag(pz)^2)-@p4 elseif @V=="Cassinian Ovals" pz=(real(pz)^2+imag(pz)^2)^2-2*@p1^2*(real(pz)^2-imag(pz)^2)+@p1^4-(@p2+0.3)^4 elseif @V=="Cayley" pz=(pz-sqrt(-1))/(pz+sqrt(-1)) elseif @V=="Ceva's Trisectrix" pz=(real(pz)^2+imag(pz)^2)^3-((@p1+1)*real(pz)^2-(@p1-1)*imag(pz)^2)^2 elseif @V=="Chip" pz=imag(pz)-(real(pz)/cabs(real(pz)))*cos(sqr(log(abs(@p2*real(pz)-2*@p3))))*atan(sqr(log(abs(2*@p3*real(pz)-@p2))))+flip(@p1-real(pz)) elseif @v=="Chirikov Mod" pz=real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))+flip(real(pz)+imag(pz)+(@p1/2*pi)*sin(2*pi*real(pz))-real(pz)) elseif @V=="Circle Map" pz=pz+@p1-@p2*sin(pz) elseif @V=="Cissoid of Zahradnik" pz=@p3*real(pz)^2+2*@p4*real(pz)*imag(pz)+(@p5+1)*imag(pz)^2-2*@p1*real(pz)-2*@p2*imag(pz) elseif @V=="Clairaut Curve" pz=(real(pz)^2+imag(pz)^2)^((@p2+1)/2)-(@p1+2)*imag(pz)^@p2 elseif @V=="Clifford" pz=sin(@p1*imag(pz))+@p2*cos(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*cos(@p3*imag(pz))) elseif @V=="Conchoid of a Circle" pz=(real(pz)^2+imag(pz)^2+@p3^2-@p2^2)^2*(imag(pz)^2+(real(pz)+@p1)^2)-4*@p3^2*(real(pz)*(real(pz)+@p1)+imag(pz)^2)^2 elseif @V=="Conchoid of Nicomedes" pz=(real(pz)-@p2)^2*(real(pz)^2+imag(pz)^2)-@p1^2*real(pz)^2 elseif @V=="Conchoid of de Sluze" pz=@p1*(real(pz)+@p1)*(real(pz)^2+imag(pz)^2)-@p2^2*real(pz)^2 elseif @V=="Conic Sections" pz=2*@p1^2*real(pz)+(1-@p1^2)*real(pz)^2+imag(pz)^2-@p1^2 elseif @V=="Cornoid" pz=(real(pz)^2+imag(pz)^2)^3+@p1^2*(3*real(pz)^4-6*real(pz)^2*imag(pz)^2-5*imag(pz)^4)+8*@p1^4*imag(pz)^2-4*@p1^6 elseif @V=="Cosecantoid" pz=imag(pz)-@p1/sin(real(pz)/@p2) elseif @V=="Cotangentoid" pz=imag(pz)-@p1*cotan(real(pz)/@p2) elseif @V=="Coupled Logistic" pz=(1-@p1)*@p2*real(pz)*(1-real(pz))+@p1*@p2*imag(pz)*(1-imag(pz))+flip((1-@p1)*@p2*imag(pz)*(1-imag(pz))+@p1*@p2*real(pz)*(1-real(pz))) elseif @V=="Cubic of Apollonius" pz=(real(pz)-2*@p1)*(real(pz)^2+imag(pz)^2)+@p2^2*(cos(2*@p3*real(pz))+sin(2*@p3*imag(pz))) elseif @V=="Curve of Cramer" pz=real(pz)*(real(pz)^2+imag(pz)^2)+(@p1+1+@p2)*real(pz)^2-(@p1+1-@p2)*imag(pz)^2 elseif @V=="Curve of Jefabek" pz=(@p2+1)^2*(real(pz)^2+imag(pz)^2-@p1*real(pz))^2-@p1^2*(real(pz)^2+imag(pz)^2)*(real(pz)-@p1)^2 elseif @V=="Curve of Loriga" pz=3*real(pz)^2-imag(pz)^2-@p1^2 elseif @V=="Curve of Rosillo" pz=imag(pz)^2*(@p3-real(pz))^2-(@p2-real(pz))^2*(@p1^2-real(pz)^2) elseif @V=="Cycloid" pz=real(pz)-@p1*recip(cos(1-imag(pz)/@p1))+sqrt(imag(pz)*(2^@p1-imag(pz))) elseif @V=="de Jong" pz=sin(@p1*imag(pz))-cos(@p2*real(pz))+flip(sin(@p3*real(pz))-cos(@p4*imag(pz))) elseif @V=="Devil's Curve" pz=imag(pz)^4-real(pz)^4-@p1^2*imag(pz)^2+@p2^2*real(pz)^2 elseif @V=="Dipole Curve" pz=((real(pz)^2+imag(pz)^2)^3-(@p1+0.5)^4*real(pz)^2) elseif @V=="Double U" pz=imag(pz)^2*(@p1^2-real(pz)^2)-@p1^4 elseif @V=="Duffing 1" x=imag(pz) y=real(pz)-real(pz)^3-@p1*imag(pz)+@p2 pz=x+flip(y) elseif @V=="Duffing 2" x=imag(pz) y=-@p1*real(pz)-@p2*real(pz)^3+@p3 pz=x+flip(y) elseif @V=="Duffing 3" x=imag(pz) y=-@p1*real(pz)-((@p2-@p1)/2)*(cabs(real(pz)+1)-cabs(real(pz)-1))-@p3*imag(pz)+@p4 pz=x+flip(y) elseif @V=="Duffing Parametric" x=imag(pz) y=-real(pz)-real(pz)^3+(@p1+@p2*real(pz)^2+@p3*@p4*real(pz))*imag(pz)+@p4*@p5 pz=x+flip(y) elseif @V=="Duffing Quintic" x=imag(pz) y=-@p1*real(pz)-@p2*real(pz)^3-@p3*real(pz)^5+@p4 pz=x+flip(y) elseif @V=="Dwulistne" pz=(real(pz)^2+imag(pz)^2)^2-((@p1-3)*real(pz)+(@p2+2)*imag(pz))*real(pz)^2 elseif @V=="Egg of Granville" pz=real(pz)^2*imag(pz)^2-(real(pz)-@p1)*(1-real(pz)) elseif @V=="Egg of Kepler" pz=((real(pz)^2+imag(pz)^2)^2-(@p1-3.5)*real(pz)^3) elseif @V=="Fish Curve" pz=(2*real(pz)^2+imag(pz)^2)^2+2*sqrt(2)*@p1*real(pz)*(2*real(pz)^2-3*imag(pz)^2)+2*@p1^2*(imag(pz)^2-real(pz)^2) elseif @V=="Focal Conic Conchoid" pz=(real(pz)^2+imag(pz)^2-@p1*@p2*real(pz))^2-(real(pz)^2+imag(pz)^2)*(@p2*real(pz)-(@p1+1))^2 elseif @V=="Hamilton" pz=real(pz)+@p1*@p2*sin(2*pi*imag(pz))+flip(imag(pz)-(@p1/@p2)*sin(2*pi*(real(pz)+@p1*@p2*sin(2*pi*imag(pz))))) elseif @V=="Hamilton Torus" pz=-sin(imag(pz))*(2-@p1)+flip(sin(real(pz))*@p1) elseif @V=="HCA" pz=1-@p1*real(pz)^2+@p2*(imag(pz)^2-real(pz)^2)+flip(1-@p1*imag(pz)^2+@p2*(real(pz)^2-imag(pz)^2)) elseif @V=="Heart Curve" pz=(real(pz)^3+imag(pz)^2-1)^3-real(pz)^2*imag(pz)^3 elseif @V=="Heart of Raphael Laporte" pz=real(pz)^8-real(pz)^6+27*real(pz)^4-27*real(pz)^2+12*imag(pz)*real(pz)^6-12*imag(pz)*real(pz)^4\ +42*imag(pz)^2*real(pz)^4+42*imag(pz)^2*real(pz)^2+2*imag(pz)^3*real(pz)^4+26*imag(pz)^3*real(pz)^2\ +8*imag(pz)^3+12*imag(pz)^4*real(pz)^2+12*imag(pz)^4+6*imag(pz)^5+imag(pz)^6 elseif @V=="Henon 1" x=1-@p1*real(pz)^2+imag(pz) y=@p2*real(pz) pz=x+flip(y) elseif @V=="Henon 2" x=-(imag(pz)-real(pz)^2)*sin(2*pi/@p1)+real(pz)*cos(2*pi/@p1) y=(imag(pz)-real(pz)^2)*cos(2*pi/@p1)+real(pz)*sin(2*pi/@p1) pz=x+flip(y) elseif @V=="Henon 3" x=imag(pz) y=-@p2^(-1)*(1-@p1*imag(pz)^2-@p2*real(pz)) pz=x+flip(y) elseif @V=="Henon 4" x=exp(-@p1*@p2/2)*(real(pz)*cos(@p2*@p3)+(1/@p3)*(imag(pz)-(@p4+real(pz)^2)+@p1*real(pz)/2)*sin(@p2*@p3)) y=exp(-@p1*@p2/2)*(-@p3*real(pz)*sin(@p2*@p3)+(imag(pz)-(@p4+real(pz)^2)+@p1*real(pz)/2)*cos(@p2*@p3))-@p1*x/2 pz=x+flip(y) elseif @V=="Henon 5" x=imag(pz)+@p1*cos(pi*real(pz)/2)-1 y=@p2*real(pz) pz=x+flip(y) elseif @V=="Hippopede of Proclus" pz=(real(pz)^2+imag(pz)^2)^2+4*@p2*(@p2-@p1)*(real(pz)^2+imag(pz)^2)-4*@p2^2*real(pz)^2 elseif @V=="Hopalong" x=imag(pz)-sqrt(cabs(@p2*real(pz)-@p3))*((real(pz))/cabs(real(pz))) y=@p1-real(pz) pz=x+flip(y) elseif @V=="Hopalong Mod 1" x=imag(pz)+sqrt(cabs(@p2*real(pz)^2-@p3))*real(pz)/cabs(real(pz)) y=@p1-real(pz) pz=x+flip(y) elseif @V=="Hopalong Mod 2" x=imag(pz)-cabs(@p2*real(pz)-@p3)*real(pz)/cabs(real(pz)) y=@p1-real(pz) pz=x+flip(y) elseif @V=="Hopalong Mod 3" x=imag(pz)-cos(cabs(@p2*real(pz)-@p3))*real(pz)/cabs(real(pz)) y=@p1-real(pz) pz=x+flip(y) elseif @V=="Hopalong Mod 4" x=imag(pz)-log(cabs(@p2*real(pz)-@p3))*real(pz)/cabs(real(pz)) y=@p1-real(pz) pz=x+flip(y) elseif @V=="Hopalong Mod 5" x=imag(pz)-1-asinh(sqrt(abs(@p2*real(pz)-1-@p3)))*((real(pz)-1)/cabs(real(pz)-1)) y=@p1-real(pz)-1 pz=x+flip(y) elseif @V=="Hopalong Mod 6" x=imag(pz)-1-asinh(sqrt(abs(@p2*real(pz)-1-@p3)))*((real(pz)-1)/cabs(tan(real(pz))-1)) y=@p1-real(pz)-1 pz=x+flip(y) elseif @V=="Hopalong Mod 7" x=imag(pz)-1-asinh(sqrt(abs(@p2*real(pz)-1-@p3)))*((real(pz)-1)/cabs(flip(real(pz))-1)) y=@p1-real(pz)-1 pz=x+flip(y) elseif @V=="Hyperbola" pz=real(pz)^2/@p1^2-imag(pz)^2/@p2^2-1 elseif @V=="Hyperelliptic Curve" pz=imag(pz)^2-real(pz)*(real(pz)+1)*(real(pz)-3)*(real(pz)+2)*(real(pz)-2) elseif @V=="Ikeda 1" pz=@p1+(@p2+2)*pz*e^(sqrt(-1)*(cabs(pz)^2+@p3)) elseif @V=="Ikeda 2" pz=@p1+@p2*pz*e^(sqrt(-1)*(@p3+2)/(cabs(pz)^2+1)+@p4) elseif @V=="Ikeda 3" x=@p1+(@p2+1)*(real(pz)*cos(@p3-@p4/(real(pz)^2+imag(pz)^2+1))-imag(pz)*sin(@p3-@p4/(real(pz)^2+imag(pz)^2+1))) y=(@p2+1)*(real(pz)*sin(@p3-@p4/(real(pz)^2+imag(pz)^2+1))+imag(pz)*cos(@p3-@p4/(real(pz)^2+imag(pz)^2+1))) pz=x+flip(y) elseif @V=="Ilhem-Amel 1" pz=real(pz)^3+(@p1-1.45+0.15i)*real(pz)+@p2+imag(pz)+flip(@p3*real(pz)) elseif @V=="Ilhem-Amel 2" pz=(@p4-0.5)*real(pz)^3+(@p1-0.375-2.4i)*real(pz)+@p2/2+@p5*imag(pz)+flip(@p3*real(pz)+@p6*imag(pz)) elseif @V=="Inkle" pz=@p1*conj(@p1/(pz-@p2))+@p2 elseif @V=="Isoptic Curve" pz=tan(@p1)^2*(real(pz)+pi/2)^2-imag(pz)^2+2*@p2*real(pz) elseif @V=="Kam Torus" pz=real(pz)*cos(@p1)+(real(pz)^2-imag(pz))*sin(@p1)+flip(real(pz)*sin(@p1)-(real(pz)^2-imag(pz))*cos(@p1)) elseif @V=="Kampyle of Eudoxus" pz=@p1^2*real(pz)^4-@p2^4*(real(pz)^2+imag(pz)^2) elseif @V=="Kan" x=@p3*sin(imag(pz)+sin(@p1*imag(pz))) y=@p4*sin(real(pz)+sin(@p2*real(pz))) pz=x+flip(y) elseif @V=="Kaplan-Yorke" pz=real(@p1)*real(pz)%1+flip(-@p2*imag(pz)+cos(2*pi*real(pz))) elseif @V=="Kieroid" pz=imag(pz)^2*(real(pz)-@p1)^2+real(pz)^2*(real(pz)-@p2)^2-@p3^2*real(pz)^2 elseif @V=="Kiss Curve" pz=@p1^4*imag(pz)^2-(@p1^2-real(pz)^2)^3 elseif @v=="Klein Quartic" pz=(real(pz)^2+imag(pz)^2-@p2*@p1^2)^2-@p3*@p1*(imag(pz)-@p1+sqrt(3)*real(pz))*(imag(pz)-@p1-sqrt(3)*real(pz))*(2*imag(pz)+@p1) elseif @V=="Kolmogorov-Volterra" pz=(real(pz)*((@p1-1.15+0.75i)-real(pz)^2)-@p2*real(pz)*imag(pz))/(1+real(pz)^2)+flip((@p3*real(pz)^2-1)*imag(pz)/(1+real(pz)^2)) elseif @V=="Latoocarfian" pz=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz))+flip(sin(@p3*real(pz))+@p4*sin(@p3*imag(pz))) elseif @V=="Lemniscate of Bernoulli" pz=(real(pz)^2+imag(pz)^2)^2-(@p1+1)^2*(real(pz)^2-imag(pz)^2) elseif @V=="Lemniscate of Booth" pz=(real(pz)^2+imag(pz)^2)^2-(2*@p1^2+@p2)*real(pz)^2+(2*@p1^2-@p2)*imag(pz)^2 elseif@V=="Limacon of Pascal" pz=(real(pz)^2+imag(pz)^2-@p1*real(pz))^2-@p2^2*(real(pz)^2+imag(pz)^2) elseif @V=="Lissajous Curve" pz=2*(2*real(pz)^2-@p1^2)^2-@p1*(2*imag(pz)-@p1)^2*(imag(pz)+@p1) elseif @V=="Logarithmic Lemniscate" pz=imag(pz)^2-real(pz)^2*log((@p1+1)^2/real(pz)^2) elseif @V=="Logistic Map" pz=@p1*pz*(1-pz) elseif @V=="Lozi" pz=1+imag(pz)-@p1*cabs(real(pz))+flip(@p2*real(pz)) elseif @V=="Magus 1" pz=(real(pz)^2-imag(pz)^2)*(real(pz)^2+imag(pz)^2)^2-2*@p1*real(pz)*imag(pz)*(real(pz)-@p1^2) elseif @V=="Magus 2" pz=(real(pz)^2-@p1^2)*(real(pz)-@p1)+(imag(pz)^2-@p1^2)^2 elseif @V=="Magus 3" if @version==100 pz=(@p1*exp(imag(pz))-@p2)/(@p1*real(pz)+@p2)+flip((@p1*exp(real(pz))-@p2)/(@p1*imag(pz)+@p2)) else pz=(@p1*imag(pz)-@p2)*(@p1*real(pz)+@p2)+flip((@p1*real(pz)-@p2)*(@p1*imag(pz)+@p2)) endif elseif @v=="Magus 4" if @version==100 pz=(@p1*cos(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*cos(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) else pz=(@p1*imag(pz)*real(pz)-@p2)*(@p1*real(pz)+@p2)+flip((@p1*real(pz)-@p2)+(@p1*imag(pz)+@p2)) endif elseif @V=="Magus 5" if @version==100 pz=(@p1*tan(imag(pz))-@p2)/(@p1*tan(real(pz))+@p2)+flip((@p1*tan(real(pz))-@p2)/(@p1*tan(imag(pz))+@p2)) else pz=(@p1*imag(pz)-@p2)+(@p1*real(pz)+@p2)+flip((@p1*real(pz)-@p2)*(@p1*imag(pz)+@p2)) endif elseif @V=="Magus 6" if @version==100 pz=@p1*sin(real(pz))-tan(imag(pz))-real(pz)+flip(imag(pz))+flip(-@p2*tan(real(pz))+sin(imag(pz))+flip(real(pz)+flip(imag(pz)))) else pz=(@p1+1)*real(pz)-imag(pz)-real(pz)+flip(imag(pz))+flip(-@p2*real(pz)+imag(pz)+flip(real(pz)+flip(imag(pz)))) endif elseif @V=="Magus 7" if @version==100 pz=@p1*sin(real(pz))-tan(imag(pz))-abs(real(pz)+flip(imag(pz)))+flip(-@p2*tan(real(pz))+sin(imag(pz))+abs(real(pz)+flip(imag(pz)))) else pz=2*@p1*real(pz)-imag(pz)-real(pz)^2*imag(pz)+flip(imag(pz))+flip(-@p2*real(pz)+imag(pz)^2+real(pz)+flip(imag(pz))) endif elseif @V=="Magus 8" pz=real(pz)^2-4*@p1*imag(pz)*(real(pz)^2+imag(pz)^2)+imag(pz)^3*@p1^2*(real(pz)^2-imag(pz)^2)^4 elseif @V=="Magus 9" pz=imag(pz)^2+real(pz)^2-((real(pz)+(@p3*(real(pz)-@p1))/sqrt((real(pz)-@p1)^2+(imag(pz)-@p2)^2))-(imag(pz)+(@p3*(imag(pz)-@p2))/sqrt((real(pz)-@p1)^2+(imag(pz)-@p2)^2))) elseif @V=="Magus 10" if @version==100 pz=@p1*imag(pz)-@p2/(real(pz)*cos(real(pz)))+@p3/(real(pz)*cos(imag(pz))) else pz=@p1*imag(pz)-@p2*real(pz)^2+@p3*real(pz)*imag(pz) endif elseif @V=="Magus 11" pz=(real(pz)^2-@p1^2)*(real(pz)-@p1)^2+(imag(pz)^2-@p1^2)^3 elseif @V=="Magus 12" pz=@p1^2*imag(pz)^2-@p1*real(pz)*(real(pz)^2-imag(pz)^2)+@p2*imag(pz)*real(pz)-@p2^2*(real(pz)^2+imag(pz)^2)*real(pz)^2 elseif @V=="Magus 13" if @version==100 pz=(real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))+flip((real(pz)%(2*pi))+(imag(pz)%(2*pi))+@p1*sin(2*pi*(real(pz)%(2*pi)))-(real(pz)%(2*pi))) else pz=real(pz)+imag(pz)+@p1*real(pz)*imag(pz)+flip(real(pz)+imag(pz)+@p1*real(pz)*imag(pz)^2-real(pz)*imag(pz)^3) endif elseif @V=="Magus 14" if @version==100 pz=real(pz)-imag(pz)-cotan(real(pz))*(@p1*real(pz)^2+@p2*imag(pz)^2)+flip(real(pz)+imag(pz)-cotan(imag(pz))*(@p3*real(pz)^2+@p4*imag(pz)^2)) else pz=real(pz)-imag(pz)-real(pz)*(@p1*real(pz)^2+@p2*imag(pz)^2)+flip(real(pz)+imag(pz)-imag(pz)*(@p3*real(pz)^2+@p4*imag(pz)^2)) endif elseif @V=="Magus 15" if @version==100 if imag(pz)>0.5 pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz)-2*@p3)) elseif real(pz)>0.5 pz=cos(2*@p1*real(pz)-2*@p3+flip(2*@p2*imag(pz))) else pz=cos(2*@p1*real(pz)+flip(2*@p2*imag(pz))) endif else pz=@p3*real(pz)^2+2*real(pz)*imag(pz)+imag(pz)^2+@p1*real(pz)*imag(pz)^3-@p2*imag(pz) endif elseif @V=="Magus 16" pz=@p1^2*(real(pz)^2-imag(pz)^2)^2-@p1*sin(real(pz)^2+imag(pz)^2)^2-real(pz)^2*imag(pz)^2 elseif @V=="Magus 17" if @version==100 pz=@p1^2*(real(pz)^2-imag(pz)^2)^2-@p1*tan(real(pz)^2+imag(pz)^2)^2-real(pz)^2*imag(pz)^2 else pz=(@p1-0.5)^2*(real(pz)^2-imag(pz)^2)^2-(@p1-0.5)*(real(pz)^2+imag(pz)^2)^2-real(pz)^2*imag(pz)^2 endif elseif @V=="Magus 18" if @version==100 x=@p1*sin(real(pz)*cos(imag(pz)))-@p2*cos(real(pz)*sin(imag(pz))) y=@p1*cos(imag(pz)*sin(real(pz)))+@p2*sin(imag(pz)*cos(real(pz))) pz=x+flip(y) else x=3*@p1*real(pz)*imag(pz)+@p2*real(pz)*imag(pz)^2 y=3*@p1*imag(pz)^3*real(pz)-@p2*imag(pz)*real(pz)^3 pz=x+flip(y) endif elseif @V=="Magus 19" if @version==100 x=real(pz)+@p1+@p2*sin(real(pz)^2-imag(pz)^2) y=imag(pz)+@p3+@p2*sin(real(pz)^2+imag(pz)^2) pz=x+flip(y) else pz=@p3*imag(pz)*((@p1+2)^2-real(pz))+(@p2*real(pz)^2+2*(@p1+2)*imag(pz)^2)^2 endif elseif @V=="Magus 20" pz=imag(pz)^2-4*@p1*(real(pz)^2+imag(pz)^2)^3+@p1^2*@p2*(real(pz)^2-imag(pz)^2)^2 elseif @V=="Magus 21" if @version==100 x=tan(sin(@p1*imag(pz)))+(sin(@p1*real(pz)))^2 y=tan(sin(@p2*real(pz)))+(sin(@p2*imag(pz)))^2 pz=x+flip(y) else pz=@p1*imag(pz)*real(pz)+(@p1*real(pz))^3+@p2*real(pz)+real(pz)*(@p2*imag(pz))^2 endif elseif @V=="Magus 22" pz=-@p1*(real(pz)^2+imag(pz)^3)*(real(pz)^2-imag(pz)^2+real(pz))^2-2*@p2*(real(pz)^3-imag(pz)^2)^2 elseif @V=="Magus 23" pz=real(pz)*(real(pz)^2-imag(pz)^2)+(-2*@p1+@p2)*real(pz)^2+(-2*@p1+1-@p2)*(imag(pz)-real(pz))^2 elseif @V=="Magus 24" pz=-@p2*(real(pz)^2+imag(pz)^2-@p1*real(pz))^2+@p1^2*(-@p3*real(pz)^2-imag(pz)^2)*(real(pz)-@p1)^2 elseif @V=="Magus 25" pz=3*real(pz)^2*imag(pz)-abs(imag(pz)+real(pz))^2-@p1^2 elseif @V=="Magus 26" pz=(@p1+0.5)^4*imag(pz)^2-((@p1+0.5)^2-real(pz)^2)^3+((@p1+0.5)-imag(pz)^2)^4 elseif @V=="Magus 27" pz=imag(pz)-1+@p2*(real(pz)-1)*imag(pz)/(@p2+2*real(pz))+flip(@p1*(1-real(pz))-@p1*@p2*(real(pz)-1)*real(pz)/(@p2+2*real(pz))) elseif @V=="Magus 28" pz=(real(pz)^2+imag(pz)^2)^4-@p1*(real(pz)^2+imag(pz)^2)^3+(real(pz)^2+imag(pz)^2)^2-(real(pz)^2+imag(pz)^2)+imag(pz)-@p2 elseif @V=="Magus 29" pz=(real(pz)^2+imag(pz)^2)^3-@p1*real(pz)*(real(pz)-@p1)+imag(pz)*(imag(pz)+@p1) elseif @V=="Magus 30" pz=(real(pz)^2-imag(pz))*(real(pz)^2+imag(pz)^2)^2-2*@p1*real(pz)*imag(pz)^2*(real(pz)+@p1^2) elseif @V=="Magus 31" pz=@p1*sin(real(pz)^2+imag(pz)^2)+@p2*real(pz)*(real(pz)^2-imag(pz)^2)-2*@p1*real(pz)*imag(pz)*(@p1^2+@p2^2) elseif @V=="Magus 32" pz=@p1*(real(pz)^2-1)*@p2^2*real(pz)*flip(@p1*(imag(pz)^2-1))-@p1*@p2*(real(pz)*imag(pz)+1) elseif @V=="Magus 33" pz=real(pz)+imag(pz)^2+@p1*real(pz)^3+@p2*imag(pz)^4+@p1^2*@p2^2*real(pz)^5*imag(pz)^5 elseif @V=="Magus 34" pz=abs(real(pz))^3+imag(pz)^3-@p1 elseif @V=="Magus 35" pz=real(pz)^2*(real(pz)-(@p1+1))/(1-(@p1+1)*real(pz))+@p1*imag(pz)^3 elseif @V=="Magus 36" pz=real(pz)^2*(imag(pz)-(@p1+1))/(1-(@p1+1)*imag(pz))+imag(pz)^2*(real(pz)-(@p2+1))/(1-(@p2+1)*real(pz)) elseif @V=="Magus 37" pz=@p2*real(pz)^(2/3)+(@p1*imag(pz))^(2/3)+(@p1^2*real(pz)*imag(pz))^(2/3)-@p1^3 elseif @V=="Magus 38" pz=(real(pz)^2-(@p1-2.5)^2)*(real(pz)-(@p1-2.5))+(imag(pz)^2-@p2^2)^2 elseif @V=="Magus 39" pz=(real(pz)^2-(@p1-2.25)^2)*(real(pz)-(@p1-2.25))^2+@p2*(imag(pz)^2-(@p1-2.25)^2)^3 elseif @v=="Magus 40" pz=@p1*(1-imag(pz)^2)*real(pz)+@p2*exp(imag(pz))+(@p5-1)+flip(@p3*(1+real(pz)^2)*imag(pz)+@p4*exp(real(pz))+(@p6-1)) elseif @v=="Magus 41" pz=real(pz)*(@p1+@p3*imag(pz)^2+@p5*real(pz))+imag(pz)+flip(imag(pz)*(@p2-@p4*real(pz)^2-@p6*imag(pz))-real(pz)) elseif @v=="Magus 42" pz=@p1*real(pz)*(1-real(pz))+@p3*real(pz)+imag(pz)+flip(@p2*real(pz)*sin(2*pi*imag(pz))/(2*pi)-@p4+real(pz)^2) elseif @v=="Magus 43" pz=-imag(pz)+@p1*real(pz)*(1-real(pz)^2-imag(pz)^2)-@p3-1+flip(@p5*real(pz)+@p2*imag(pz)*sqr(1-real(pz)^2-imag(pz)^2)+@p4) elseif @v=="Magus 44" pz=@p5*real(pz)*(1-real(pz))+2*imag(pz)+@p1*real(pz)*imag(pz)-real(pz)+@p2*imag(pz)^4+@p3+flip(@p6*real(pz)*sin(2*pi*imag(pz))/(2*pi)+2*@p4*real(pz)+imag(pz)-real(pz)^3) elseif @v=="Magus 45" pz=@p1*real(pz)*(1-real(pz))+@p3*real(pz)+imag(pz)+flip(@p2*real(pz)*sin(2*pi*imag(pz))/(2*pi)-@p4+real(pz)^2) elseif @v=="Magus 46" pz=@p1*tan(imag(pz))-real(pz)^2+@p2*real(pz)+flip(real(pz)+@p3*(imag(pz)-real(pz))^3+(@p4-1)) elseif @v=="Magus 47" pz=@p1*imag(pz)^3-@p4*sin(real(pz))-@p3*cabs(imag(pz))+flip(real(pz)-(@p2-1)) elseif @v=="Magus 48" pz=@p1*sin(@p2*sin(sin(@p2*sin(imag(pz)))))+@p3*real(pz)*imag(pz)+(@p4-1)+flip(real(pz)+(@p5-1)) elseif @v=="Magus 49" pz=@p1*imag(pz)^2*(real(pz)-@p2)/(1-@p2*real(pz))+(@p3-1)+flip(@p4*real(pz)+@p5*real(pz)*imag(pz)) elseif @v=="Magus 50" pz=@p1*real(pz)-@p2*imag(pz)+sin(real(pz)+imag(pz))+@p3*real(pz)*imag(pz)^2+flip(@p2*real(pz)-@p1*imag(pz)+cos(real(pz)-imag(pz))+@p4*real(pz)*imag(pz)+@p5) elseif @v=="Magus 51" pz=@p6*sqr(@p2+imag(pz))-(real(pz)-@p3)/(real(pz))+flip(@p1+real(pz)-@p5*imag(pz)-@p4) elseif @v=="Magus 52" pz=@p1*sin(real(pz)-sin(@p2*imag(pz)))-imag(pz)^2+(@p3-1)+flip(real(pz)+@p4*real(pz)*imag(pz)-@p5*sin(real(pz))) elseif @v=="Magus 53" pz=@p1*real(pz)^3-@p2*real(pz)^2*imag(pz)-@p3*(imag(pz)^2-real(pz))+flip(-@p4*imag(pz)-@p5*imag(pz)^4*real(pz)+@p6*(real(pz)+imag(pz))) elseif @v=="Magus 54" pz=real(pz)*(@p1+@p2*(real(pz)^2+imag(pz)^3))+@p3*imag(pz)+flip(imag(pz)*(@p4+@p5*(real(pz)^2-imag(pz)^4))+@p6*real(pz)) elseif @V=="Marotto-Lorenz" pz=(1-(@p1-0.5-0.15i)*real(pz)-@p2*imag(pz))*((@p1-0.5-0.15i)*real(pz)+@p2*imag(pz))+flip(real(pz)) elseif @V=="Martin" pz=imag(pz)+sin(real(pz))+flip(@p1-real(pz)) elseif @V=="Modified Lozi" pz=1+@p1*(cabs(real(pz))-imag(pz)^2)+imag(pz)+flip(@p2*real(pz)) elseif @V=="Multifold Henon" pz=1-@p1*sin(real(pz))+@p2*imag(pz)+flip(real(pz)) elseif @V=="Munster" pz=@p1*pz^2*(pz-@p2)/(1-@p2*pz) elseif @V=="Nephroid" pz=(real(pz)^2+imag(pz)^2-4*(@p1-0.5)^2)^3-108*(@p1-0.5)^4*real(pz)^2 elseif @V=="Nephroid of Freeth" pz=(real(pz)^2+imag(pz)^2)*(real(pz)*2+imag(pz)^2-@p1^2)^2-4*@p1^2*(real(pz)^2+imag(pz)^2-@p1*real(pz))^2 elseif @V=="Nowicki-Swirszcz" pz=3*real(pz)*((real(pz)-imag(pz))^2-(@p1+3.5-1i))/((3*real(pz)-imag(pz))^2-@p2)+flip(imag(pz)*(imag(pz)^2+2*real(pz)*imag(pz)-3*real(pz)^2-@p3)/((3*real(pz)-imag(pz))^2-@p4)) elseif @V=="Ophiuride" pz=real(pz)*(real(pz)^2+imag(pz)^2)-@p2*real(pz)*imag(pz)-@p1*imag(pz)^2 elseif @V=="Parabola" pz=imag(pz)-@p1*real(pz)^2-@p2*real(pz)-@p3 elseif @V=="Pearls of Sluze" pz=imag(pz)^@p2-@p3*(@p1-real(pz))^@p4*real(pz)^@p5 elseif @V=="Pharaoh" x=-imag(pz)+@p1*cos(real(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p3 y=real(pz)+@p2*cos(imag(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p4 pz=x+flip(y) elseif @V=="Popcorn" pz=real(pz)-@p1*sin(imag(pz)+tan(@p2*imag(pz)))+flip(imag(pz)-@p1*sin(real(pz)+tan(@p2*real(pz)))) elseif @V=="Quadratix of Hippias" pz=real(pz)-imag(pz)*cotan(imag(pz)/@p1) elseif @V=="Quadruptwo" pz=imag(pz)-(real(pz)/cabs(real(pz)))*sin(log(abs((@p2+0.5)*real(pz)-@p3)))*atan(sqr(log(abs(@p3*real(pz)-(@p2+0.5)))))+flip(@p1-real(pz)) elseif @V=="Scarab" pz=(real(pz)^2+imag(pz)^2)*(real(pz)^2+imag(pz)^2+@p1*real(pz))^2-@p2^2*(real(pz)^2-imag(pz)^2)^2 elseif @V=="Sinus Chain" pz=imag(pz)^2-abs(sin(real(pz))+@p1*sin(2*real(pz))) elseif @V=="Spiric of Perseus" pz=(real(pz)^2+imag(pz)^2)^2-2*(@p1+1)*real(pz)^2-2*@p2*imag(pz)^2+@p3 elseif @V=="Spiric Sections" pz=(@p3^2-@p1^2+@p2^2+real(pz)^2+imag(pz)^2)^2-4*@p3^2*(real(pz)^2+@p2^2) elseif @V=="Sprott-Elhadj" pz=@p1*real(pz)/(1+imag(pz)^2)+flip(real(pz)+@p2*imag(pz)) elseif @V=="Standard Map" x=real(pz)+@p1*imag(pz)+@p2+(@p3/(2*pi))*sin(2*pi*real(pz)) y=@p1*imag(pz)+@p2+(@p3/(2*pi))*sin(2*pi*real(pz)) pz=x+flip(y) elseif @V=="Strelkova-Anishchenko" pz=1-@p1*real(pz)^2+@p2*(imag(pz)-real(pz))+flip(1-@p1*imag(pz)^2+@p2*(real(pz)-imag(pz))) elseif @V=="Strophoid" pz=imag(pz)^2-real(pz)^2*(@p1-real(pz))/(@p1+real(pz)) elseif @V=="Svensson" pz=@p1*sin(@p2*real(pz))-sin(@p3*imag(pz))+flip(@p4*cos(@p2*real(pz))-cos(@p3*imag(pz))) elseif @V=="Syntractrix" pz=real(pz)+sqrt(@p2^2-imag(pz)^2)-@p1*log((@p2+sqrt(@p2^2-imag(pz)^2))/imag(pz)) elseif @V=="Tetracuspid" pz=@p1^@p2*(cabs(real(pz))^@p2+cabs(imag(pz))^@p2)-(real(pz)^2+imag(pz)^2)^@p2 elseif @V=="Thorn 1" x=real(pz)/cos(imag(pz))+real(@p1) y=imag(pz)/sin(real(pz))+imag(@p1) pz=x+flip(y) elseif @V=="Thorn 2" x=real(pz)/cos(imag(pz))*sin(real(pz))+real(@p1) y=imag(pz)/sin(real(pz))*cos(imag(pz))+imag(@p1) pz=x+flip(y) elseif @V=="Thorn 3" x=real(pz)/cos(imag(pz))*sin(imag(pz))+real(@p1) y=imag(pz)/sin(real(pz))*cos(real(pz))+imag(@p1) pz=x+flip(y) elseif @V=="Thorn 4" x=real(pz)/sin(cos(imag(pz))*sin(imag(pz)))+real(@p1) y=imag(pz)/cos(sin(real(pz))*cos(real(pz)))+imag(@p1) pz=x+flip(y) elseif @V=="Threeply" pz=imag(pz)-(real(pz)/cabs(real(pz)))*(abs(sin(real(pz))*cos(@p1)+@p2-real(pz)*sin(@p1+@p2+@p3)))+flip(@p3-real(pz)) elseif @V=="Tinkerbell" pz=real(pz)^2-imag(pz)^2+@p1*real(pz)+@p2*imag(pz)+flip(2*real(pz)*imag(pz)-@p3*real(pz)+@p4*imag(pz)) elseif @V=="Torpedo Curve" pz=(real(pz)^2+imag(pz)^2)^2-(@p1+1)*real(pz)*(real(pz)^2-imag(pz)^2) elseif @V=="Tractrix" pz=real(pz)-log((@p1-sqrt(@p1^2-imag(pz)^2))/imag(pz))-sqrt(@p1^2-imag(pz)^2) elseif @V=="Trisectrix of Delange" pz=(real(pz)^2+imag(pz)^2-2*@p1^2)^2-real(pz)^2*(real(pz)^2+imag(pz)^2) elseif @V=="Trisectrix of Maclaurin" pz=real(pz)^2*(real(pz)+3*@p1)-imag(pz)^2*(@p1-real(pz)) elseif @V=="Trott Curve" pz=(144*(real(pz)^4+imag(pz)^4)-225*(real(pz)^2+imag(pz)^2)+350*real(pz)^2*imag(pz)^2+81) elseif @V=="Ushiki" pz=(@p1-real(pz)-@p2*imag(pz))*real(pz)+flip((@p3-imag(pz)-@p4*real(pz))*imag(pz)) elseif @V=="Van der Pol 1" pz=@p1*(real(pz)-real(pz)^3/3-imag(pz))+flip(real(pz)/@p1) elseif @V=="Van der Pol 2" pz=imag(pz)+flip(@p1*(1-real(pz)^2)*imag(pz)-real(pz)) elseif @V=="Van der Pol 3" pz=imag(pz)-@p1*real(pz)*(cabs(real(pz))-1)+flip(-real(pz)) elseif @V=="Van der Pol 4" pz=imag(pz)-@p1*real(pz)*(real(pz)^4+real(pz)^2-1)/10+flip(-real(pz)) elseif @V=="Van der Pol 5" pz=imag(pz)-@p1*real(pz)*(2*real(pz)^2-sin(pi*real(pz))^2-2)+flip(-real(pz)) elseif @V=="Van der Pol 6" pz=imag(pz)-@p1*(real(pz)-cabs(real(pz)+1)+cabs(real(pz)-1))+flip(-real(pz)) elseif @V=="Van der Pol 7" pz=imag(pz)-@p1*(cabs(real(pz))*real(pz)^3-real(pz))+flip(-real(pz)) elseif @V=="Visiera" pz=(real(pz)*(real(pz)^2+imag(pz)^2)-@p1*(real(pz)^2+2*imag(pz)^2)) elseif @V=="Viviani's Curve" pz=imag(pz)^2-real(pz)^2*((@p1+1)^2-real(pz)^2) elseif @V=="Volterra-Lotka" pz=@p1*real(pz)-@p2*real(pz)*imag(pz)+flip(-@p3*imag(pz)+@p4*real(pz)*imag(pz)) elseif @V=="Watt's Curve" pz=(real(pz)^2+imag(pz)^2)*(real(pz)^2+imag(pz)^2-@p3^2)^2+4*(@p1+1)^2*imag(pz)^2*(real(pz)^2+imag(pz)^2-@p2^2) elseif @V=="Zaslavsky Transform" x=cos(@p1)*(real(pz)+@p2*sin(imag(pz)))+sin(@p1)*imag(pz) y=-sin(@p1)*(real(pz)+@p2*sin(imag(pz)))+cos(@p1)*imag(pz) pz=x+flip(y) elseif @V=="Zito" pz=real(pz)*imag(pz)+@p1*real(pz)-imag(pz)+flip(real(pz)+imag(pz)) endif if i2<=i a=a+exp(-cabs(pz+2)) b=b+exp(-1/cabs(zold-pz+2)) i2=i2+1 endif endfunc float func ResultIndex(complex pz) if |pz-zold|<@adj if @solid if @invert if b<@p9 index=b else m_Solid=true endif else if b>@p9 index=b else m_Solid=true endif endif else index=b endif else if @solid if @invert if a<@p9 index=a else m_Solid=true endif else if a>@p9 index=a else m_Solid=true endif endif else index=a endif endif return index endfunc private: float a float b float index int i int i2 complex zold default: title="Azave" int param version caption="Version" default=101 visible=@version<101 endparam param V caption="Variant" enum="Ampersand Curve""Astroid""Atriphthaloid""Bean Curve""Beddington Mod""Beetle""Bicorn""Bicuspid"\ "Bogdanov""Bogdanov-Takens""Buckling Column Model""Burgers""Cao-Lai""Cartesian Oval"\ "Cassinian Ovals""Cayley""Ceva's Trisectrix""Chip""Chirikov Mod""Circle Map""Cissoid of Zahradnik""Clairaut Curve"\ "Clifford""Conchoid of a Circle""Conchoid of Nicomedes"\ "Conchoid of de Sluze""Conic Sections""Cornoid""Cosecantoid""Cotangentoid""Coupled Logistic""Cubic of Apollonius""Curve of Cramer"\ "Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Cycloid""de Jong"\ "Devil's Curve""Dipole Curve""Double U""Duffing 1""Duffing 2""Duffing 3""Duffing Parametric""Duffing Quintic""Dwulistne""Egg of Granville"\ "Egg of Kepler""Fish Curve""Focal Conic Conchoid""Hamilton""Hamilton Torus""HCA"\ "Heart Curve""Heart of Raphael Laporte""Henon 1""Henon 2""Henon 3""Henon 4""Henon 5""Hippopede of Proclus""Hopalong"\ "Hopalong Mod 1""Hopalong Mod 2"\ "Hopalong Mod 3""Hopalong Mod 4""Hopalong Mod 5""Hopalong Mod 6""Hopalong Mod 7"\ "Hyperbola""Hyperelliptic Curve""Ikeda 1""Ikeda 2""Ikeda 3""Ilhem-Amel 1""Ilhem-Amel 2""Inkle""Isoptic Curve""Kam Torus""Kampyle of Eudoxus"\ "Kan""Kaplan-Yorke""Kieroid""Kiss Curve""Klein Quartic""Kolmogorov-Volterra"\ "Latoocarfian""Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Lissajous Curve"\ "Logarithmic Lemniscate""Logistic Map""Lozi""Magus 1""Magus 2""Magus 3""Magus 4""Magus 5""Magus 6"\ "Magus 7""Magus 8""Magus 9""Magus 10""Magus 11""Magus 12""Magus 13""Magus 14"\ "Magus 15""Magus 16""Magus 17""Magus 18""Magus 19""Magus 20""Magus 21""Magus 22""Magus 23""Magus 24""Magus 25""Magus 26""Magus 27"\ "Magus 28""Magus 29""Magus 30""Magus 31""Magus 32""Magus 33""Magus 34""Magus 35""Magus 36"\ "Magus 37""Magus 38""Magus 39""Magus 40""Magus 41""Magus 42""Magus 43""Magus 44""Magus 45""Magus 46""Magus 47""Magus 48""Magus 49"\ "Magus 50""Magus 51""Magus 52""Magus 53""Magus 54""Marotto-Lorenz""Martin""Modified Lozi""Multifold Henon"\ "Munster""Nephroid""Nephroid of Freeth""Nowicki-Swirszcz"\ "Ophiuride""Parabola""Pearls of Sluze""Pharaoh""Popcorn""Quadratix of Hippias""Quadruptwo"\ "Scarab""Sinus Chain""Spiric of Perseus""Spiric Sections""Sprott-Elhadj""Standard Map""Strelkova-Anishchenko""Strophoid""Svensson"\ "Syntractrix""Tetracuspid""Thorn 1""Thorn 2""Thorn 3""Thorn 4""Threeply""Tinkerbell""Torpedo Curve""Tractrix""Trisectrix of Delange"\ "Trisectrix of Maclaurin""Trott Curve""Ushiki""Van der Pol 1""Van der Pol 2""Van der Pol 3""Van der Pol 4""Van der Pol 5""Van der Pol 6"\ "Van der Pol 7""Visiera""Viviani's Curve""Volterra-Lotka""Watt's Curve""Zaslavsky Transform""Zito" default=0 endparam param iter caption="Iterations" default=5 min=0 endparam param Fs caption="Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel""*pixel""/pixel""*pixel+pixel""*pixel-pixel""/pixel+pixel""/pixel-pixel"\ "flip+pixel""flip-pixel""flip*pixel""flip/pixel""sqr+pixel""sqr-pixel""sqr*pixel""sqr/pixel"\ "(sqr-i)/(+i)""(sqr-i)/(+i)+pixel""(sqr-pixel)/(+pixel)""(sqr+pixel)/(-pixel)"\ "+pixel+sqr(pixel)""-pixel-sqr(pixel)""+pixel-sqr(pixel)""-pixel+sqr(pixel)""ceil""floor""trunc""round" default=22 endparam param p1 caption="Variant Parameter" default=(1,0) visible=@V!="Ampersand Curve" && @V!="Heart Curve" && @V!="Heart of Raphael Laporte" && @V!="Sinus Chain" \ && @V!="Trott Curve" && @V!="Hyperelliptic Curve" && @V!="Cayley" && @V!="Bean Curve" endparam param p2 caption="Variant Parameter 2" default=(1,0) visible=@V=="Atriphthaloid" || @V=="Beddington Mod" || @V=="Beetle" || @V=="Bogdanov" \ || @V=="Bogdanov-Takens" || @V=="Buckling Column Model" || @V=="Burgers" || @V=="Cao-Lai" || @V=="Cartesian Oval" || @V=="Cassinian Ovals" || @V=="Chip" \ || @V=="Circle Map" || @V=="Cissoid of Zahradnik" || @V=="Clairaut Curve" || @V=="Clifford" || @V=="Conchoid of a Circle" || @V=="Conchoid of Nicomedes" \ || @V=="Conchoid of de Sluze" || @V=="Cosecantoid" || @V=="Cotangentoid" || @V=="Coupled Logistic" || @V=="Cubic of Apollonius" \ || @V=="Curve of Cramer" || @V=="Curve of Jefabek" \ || @V=="Curve of Rosillo" || @V=="de Jong" || @V=="Devil's Curve" || @V=="Duffing 1" || @V=="Duffing 2" \ || @V=="Duffing 3" || @V=="Duffing Parametric" \ || @V=="Duffing Quintic" || @V=="Dwulistne" || @V=="Focal Conic Conchoid" || @V=="Hamilton" || @V=="HCA" || @V=="Henon 1" || @V=="Henon 3" \ || @V=="Henon 4" || @V=="Henon 5" || @V=="Hippopede of Proclus" || @V=="Hopalong" \ || @V=="Hopalong Mod 1" || @V=="Hopalong Mod 2" \ || @V=="Hopalong Mod 3" || @V=="Hopalong Mod 4" || @V=="Hopalong Mod 5" || @V=="Hopalong Mod 6" \ || @V=="Hopalong Mod 7" || @V=="Hyperbola" || @V=="Ikeda 1" || @V=="Ikeda 2" || @V=="Ikeda 3" \ || @V=="Ilhem-Amel 1" || @V=="Ilhem-Amel 2" || @V=="Inkle" || @V=="Isoptic Curve" || @V=="Kampyle of Eudoxus" \ || @V=="Kan" || @V=="Kaplan-Yorke" || @V=="Kieroid" || @V=="Klein Quartic" || @V=="Kolmogorov-Volterra" || @V=="Latoocarfian" \ || @V=="Lemniscate of Booth" || @V=="Limacon of Pascal" || @V=="Lozi" || @V=="Magus 3" \ || @V=="Magus 4"|| @V=="Magus 5" \ || @V=="Magus 6" || @V=="Magus 7" || @V=="Magus 9" || @V=="Magus 10" || @V=="Magus 12" || @V=="Magus 14" \ || @V=="Magus 15" || @V=="Magus 18" || @V=="Magus 19" || @V=="Magus 20" || @V=="Magus 21" || @V=="Magus 22" || @V=="Magus 23" \ || @V=="Magus 24" || @V=="Magus 27" || @V=="Magus 28" || @V=="Magus 31" || @V=="Magus 32" || @V=="Magus 33" || @V=="Magus 36" \ || @V=="Magus 37" || @V=="Magus 38" || @V=="Magus 39" || @V=="Magus 40" || @V=="Magus 41" || @V=="Magus 42" || @V=="Magus 43" \ || @V=="Magus 44" || @V=="Magus 45" || @V=="Magus 46" || @V=="Magus 47" || @V=="Magus 48" || @V=="Magus 49" || @V=="Magus 50" \ || @V=="Magus 51" || @V=="Magus 52" || @V=="Magus 53" || @V=="Magus 54" || @V=="Marotto-Lorenz" || @V=="Modified Lozi" || @V=="Multifold Henon" \ || @V=="Munster" || @V=="Nowicki-Swirszcz" || @V=="Ophiuride" || @V=="Parabola" \ || @V=="Pearls of Sluze" || @V=="Pharaoh" || @V=="Popcorn" || @V=="Quadruptwo" \ || @V=="Scarab" || @V=="Spiric of Perseus" || @V=="Spiric Sections" || @V=="Sprott-Elhadj" || @V=="Standard Map" || @V=="Strelkova-Anishchenko" || @V=="Svensson" || @V=="Syntractrix" \ || @V=="Tetracuspid" || @V=="Threeply" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="Watt's Curve" \ || @V=="Zaslavsky Transform" endparam param p3 caption="Variant Parameter 3" default=(1,0) visible=@V=="Beetle" || @V=="Bogdanov" || @V=="Buckling Column Model" || @V=="Cartesian Oval" || @V=="Chip" || @V=="Cissoid of Zahradnik" || @V=="Clifford" \ || @V=="Conchoid of a Circle" || @V=="Cubic of Apollonius" || @V=="Curve of Rosillo" \ || @V=="de Jong" || @V=="Duffing 2" || @V=="Duffing 3" \ || @V=="Duffing Parametric" || @V=="Duffing Quintic" || @V=="Henon 4" || @V=="Hopalong" || @V=="Hopalong Mod 1" || @V=="Hopalong Mod 2" \ || @V=="Hopalong Mod 3" || @V=="Hopalong Mod 4" || @V=="Hopalong Mod 5" || @V=="Hopalong Mod 6" \ || @V=="Hopalong Mod 7" || @V=="Ikeda 1" || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="Ilhem-Amel 1" || @V=="Ilhem-Amel 2" || @V=="Kan" || @V=="Kieroid" \ || @V=="Klein Quartic" || @V=="Kolmogorov-Volterra" || @V=="Latoocarfian" || @V=="Magus 9" || @V=="Magus 10" || @V=="Magus 14" \ || @V=="Magus 15" || @V=="Magus 19" || @V=="Magus 24" || @V=="Magus 40" || @V=="Magus 41" || @V=="Magus 42" || @V=="Magus 43" || @V=="Magus 44" \ || @V=="Magus 45" || @V=="Magus 46" || @V=="Magus 47" || @V=="Magus 48" || @V=="Magus 49" || @V=="Magus 50" || @V=="Magus 51" || @V=="Magus 52" \ || @V=="Magus 53" || @V=="Magus 54" || @V=="Nowicki-Swirszcz" || @V=="Parabola" || @V=="Pearls of Sluze" || @V=="Pharaoh" || @V=="Quadruptwo" \ || @V=="Spiric of Perseus" || @V=="Spiric Sections" || @V=="Standard Map" || @V=="Svensson" || @V=="Threeply" \ || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="Watt's Curve" endparam param p4 caption="Variant Parameter 4" default=(1,0) visible=@V=="Buckling Column Model" || @V=="Cartesian Oval" || @V=="Cissoid of Zahradnik" || @V=="Clifford" || @V=="de Jong" \ || @V=="Duffing 3" || @V=="Duffing Parametric" || @V=="Duffing Quintic" \ || @V=="Henon 4" || @V=="Ikeda 2" || @V=="Ikeda 3" || @V=="Ilhem-Amel 2" \ || @V=="Kan" || @V=="Latoocarfian" || @V=="Magus 14" || @V=="Magus 40" || @V=="Magus 41" || @V=="Magus 42" \ || @V=="Magus 43" || @V=="Magus 44" || @V=="Magus 45" || @V=="Magus 46" || @V=="Magus 47" || @V=="Magus 48" || @V=="Magus 49" || @V=="Magus 50" || @V=="Magus 51" || @V=="Magus 52" \ || @V=="Magus 53" || @V=="Magus 54" || @V=="Nowicki-Swirszcz" \ || @V=="Pearls of Sluze" || @V=="Pharaoh" || @V=="Svensson" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Cissoid of Zahradnik" || @V=="Duffing Parametric" || @V=="Ilhem-Amel 2" || @V=="Magus 40" || @V=="Magus 41" \ || @V=="Magus 43" || @V=="Magus 44" || @V=="Magus 48" || @V=="Magus 49" || @V=="Magus 50" || @V=="Magus 51" || @V=="Magus 52" || @V=="Magus 53" || @V=="Magus 54" || @V=="Pearls of Sluze" endparam param p6 caption="Variant Parameter 6" default=(1,0) visible=@V=="Ilhem-Amel 2" || @V=="Magus 40" || @V=="Magus 41" || @V=="Magus 44" || @V=="Magus 51" || @V=="Magus 53" || @V=="Magus 54" endparam param adj caption="Adjustment" default=0.0 endparam param @solid caption="Solid Color" default=false endparam param p9 caption="Solid Color Adjustment" default=0.05 visible=@solid==true endparam param invert caption="Invert Solid Color" default=false visible=@solid==true endparam } class OM_X-Plog(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @version==100 if @v==0 pz=exp(log(pz)^2+log(c)) elseif @v==1 pz=exp(log(pz)^2+log(pz)+log(c)) elseif @v==2 pz=exp(log(pz)^2-log(pz)+log(c)) elseif @v==3 pz=exp(log(pz)^2+log(pz)-log(c)) else pz=exp(log(pz)^2-log(pz)-log(c)) endif else if @v1==0 pz=exp(log(pz)^2+log(c)) elseif @v1==1 pz=exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v1==2 pz=exp(log(pz)^2-@xp1*log(pz)+log(c)) elseif @v1==3 pz=exp(log(pz)^2+@xp1*log(pz)-log(c)) elseif @v1==4 pz=exp(log(pz)^2-@xp1*log(pz)-log(c)) else pz=exp(log(pz)^2-log(c)) endif endif return pz endfunc default: title="X-Plog" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5" visible=@version==100 endparam param v1 caption="Variant" enum="z=exp(log(z)^2+log(c))""z=exp(log(z)^2+log(z)+log(c))"\ "z=exp(log(z)^2-log(z)+log(c))""z=exp(log(z)^2+log(z)-log(c))"\ "z=exp(log(z)^2-log(z)-log(c))""z=exp(log(z)^2-log(c))" visible=@version==101 endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1.4,0) visible=@jm==0 endparam param xp1 caption="X-plog Parameter" default=(1,0) visible=@version==101 &&@v1!=0 && @v1!=5 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 If @v==0 pz=pz^2+exp(log(pz)^2+log(c)) elseif @v==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==2 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)+log(c)) elseif @v==3 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) elseif @v==4 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) else pz=pz^2+exp(log(pz)^2-log(c)) endif return pz endfunc default: title="X-Plog 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="z=z^2+exp(log(z)^2+log(c))""z=z^2+exp(log(z)^2+log(z)+log(c))"\ "z=z^2+exp(log(z)^2-log(z)+log(c))""z=z^2+exp(log(z)^2+log(z)-log(c))"\ "z=z^2+exp(log(z)^2-log(z)-log(c))""z=z^2+exp(log(z)^2-log(c))" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" visible=@v!=0 && @v!=5 default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+pz*log(c)) elseif @v==1 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-pz*log(c)) elseif @v==2 pz=pz^2+exp(log(pz)^2+@xp1*pz*c*log(pz)+log(c)) elseif @v==3 pz=pz^2+exp(log(pz)^2-@xp1*pz*c*log(pz)-log(c)) elseif @v==4 pz=pz^2+exp(log(pz)^2+@xp1*pz*c*log(pz)+pz^2*log(c)) else pz=pz^2+exp(log(pz)^2-@xp1*pz*c*log(pz)-pz^2*log(c)) endif return pz endfunc default: title="X-Plog 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="z=z^2+exp(log(z)^2+log(z)+z*log(c))"\ "z=z^2+exp(log(z)^2-log(z)-z*log(c))"\ "z-z^2+exp(log(z)^2+z*c*log(z)+log(c))"\ "z=z^2+exp(log(z)^2-z*c*log(z)-log(c))"\ "z-z^2+exp(log(z)^2+z*c*log(z)+z^2*log(c))"\ "z=z^2+exp(log(z)^2-z*c*log(z)-z^2*log(c))" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1.4,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=c*pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==1 pz=c*pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) elseif @v==2 pz=c*pz^2+exp(log(pz)^2+@xp1*log(pz)+pz*log(c)) elseif @v==3 pz=c*pz^2+exp(log(pz)^2-@xp1*log(pz)-pz*log(c)) elseif @v==4 pz=c*pz^2+exp(log(pz)^2+@xp1*log(pz)+pz^2*log(c)) else pz=c*pz^2+exp(log(pz)^2-@xp1*log(pz)-pz^2*log(c)) endif return pz endfunc default: title="X-Plog 4" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="z=c*z^2+exp(log(z)^2+log(z)+log(c))"\ "z=c*z^2+exp(log(z)^2-log(z)-log(c))"\ "z=c*z^2+exp(log(z)^2+log(z)+z*log(c))"\ "z=c*z^2+exp(log(z)^2-log(z)-z*log(c))"\ "z=c*z^2+exp(log(z)^2+log(z)+z^2*log(c))"\ "z=c*z^2+exp(log(z)^2-log(z)-z^2*log(c))" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 If @v==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))^2+c else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c))^2+c endif return pz endfunc default: title="X-Plog 5" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.125,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_3AltX-Plog(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else if @v!=4 && @v!=5 pz=@sp else pz=@sp-1.3 endif c=@sf(fpixel) endif i=0 return pz endfunc private: complex c int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=0 endif elseif @v==1 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=0 endif elseif @v==2 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=0 endif elseif @v==3 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif elseif @v==4 if i==0 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=0 endif else if i==0 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)-log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif endif return pz endfunc default: title="3Alt X-Plog" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.4,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.9,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_3AltX-Plog2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif i=0 return pz endfunc private: complex c int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i==0 pz=pz^2+exp(log(pz)^2+log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif elseif @v==1 if i==0 pz=pz^2+exp(log(pz)^2+log(c)) i=i+1 elseif i==1 pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif elseif @v==2 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=pz=pz^2+exp(log(pz)^2+log(c)) i=i+1 else pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif elseif @v==3 if i==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=pz=pz^2+exp(log(pz)^2+log(c)) i=0 endif elseif @v==4 if i==0 pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=pz=pz^2+exp(log(pz)^2+log(c)) i=i+1 else pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=0 endif else if i==0 pz=(pz^2+c)^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 elseif i==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) i=i+1 else pz=pz=pz^2+exp(log(pz)^2+log(c)) i=0 endif endif return pz endfunc default: title="3Alt X-Plog 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5""6" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.75,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==4 c=@js+0.65 elseif @v==6 c=@js+3.7 elseif @v==9 c=@js+0.3 elseif @v==11 c=@js-2.75 elseif @v==16 c=@js+1.85 elseif @v==17 c=@js-0.5 elseif @v==18 c=@js+0.2 elseif @v==24 c=@js+2.55 elseif @v==28 || @v==29 c=@js+3.55 else c=@js endif else if @v==5 || @v==6 || @v==7 pz=@sp-1.75 elseif @v==8 pz=@sp-1.95 elseif @v==9 || @v==10 pz=@sp-0.2 elseif @v==11 pz=@sp-1.125 elseif @v==13 pz=@sp-1.36 elseif @v==14 pz=@sp+0.5 elseif @v==17 || @v==19 pz=@sp-0.5 elseif @v==20 pz=@sp-1.04376 elseif @v==21 pz=@sp-1.5 elseif @v==22 pz=@sp-1.975 elseif @v==23 pz=@sp-1.62 elseif @v==25 pz=@sp-0.955 elseif @v==26 pz=@sp-0.625 elseif @v==27 pz=@sp-0.65 elseif @v==28 pz=@sp-0.25 elseif @v==29 pz=@sp-0.625 else pz=@sp endif c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c)))) elseif @v==1 pz=pz^2+exp(pz^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c)))) elseif @v==2 pz=pz+c pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==3 pz=exp(log(pz)+log(c)) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==4 pz=pz^2+exp(log(pz)^2+@xp1*log(pz^2)+log(1/c)) elseif @v==5 pz=pz^2+exp(log(pz)^2+@xp1*log(pz+1)+log(c)) elseif @v==6 pz=pz^2+exp(log(-pz)^2+@xp1*log(pz+1)+log(c)) elseif @v==7 pz=pz^2+exp(log(-pz)^2+@xp1*log(-pz+1)+log(c)) elseif @v==8 pz=pz^2+exp(log(pz)^2+@xp1*log(-pz+1)+log(c)) elseif @v==9 pz=pz^2+exp(log(pz)^2+@xp1*log(pz^2+c)+log(c))^2+c elseif @v==10 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+c*exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==11 if @jm==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+log(exp(pz)^2+@xp1*exp(pz)+exp(c)) else pz=pz^2+3*exp(log(pz)^2+@xp1*log(pz)+log(c))+log(exp(pz)^2+@xp1*exp(pz)+exp(c)) endif elseif @v==12 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c))))+exp(log(-pz)^2+@xp1*log(pz+1)+log(c)) elseif @v==13 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c))))-exp(log(-pz)^2+@xp1*log(pz+1)+log(c)) elseif @v==14 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c))))+exp(log(-pz)^2+@xp1*log(pz+1)+log(c))^2 elseif @v==15 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c))))-exp(log(-pz)^2+@xp1*log(pz+1)+log(c))^2 elseif @v==16 pz=pz^2+exp(log(pz)^2+log(exp(log(pz)^2+@xp1*log(pz)+log(c))))^2-exp(log(-pz)^2+@xp1*log(pz+1)+log(c)) elseif @v==17 pz=pz^2+exp(log(pz)^2*(log(pz)-(@xp1-2.67))/(1-(@xp1-2.67)*log(pz))+log(c)) elseif @v==18 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+c pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @v==19 pz=pz^2+exp(log(pz)^2+@xp1/log(pz)+log(c)) elseif @v==20 pz=pz^2+exp(log(pz)^2+@xp1/log(pz)^2+log(c)) elseif @v==21 pz=pz^2+exp(log(pz)+@xp1/log(pz)^2+log(c)) elseif @v==22 pz=pz^2+exp(log(pz)^2+@xp1/log(pz)+1/log(c)) elseif @v==23 pz=pz^2+exp(log(-pz)^2+@xp1/log(-pz)+1/log(c)) elseif @v==24 pz=pz^2+exp(log(-pz)+@xp1/log(-pz)^2+log(c)) elseif @v==25 pz=pz^2+exp(log(-pz)^2+@xp1/log(-pz)^2+log(c)) elseif @v==26 pz=pz^2+exp(log(pz)^2+@xp1/log(pz)+1/log(c))+exp(log(-pz)^2+@xp1/log(-pz)+1/log(c)) elseif @v==27 pz=pz^2+exp(log(pz)^2+@xp1/log(pz)+1/log(c))-exp(log(-pz)^2+@xp1/log(-pz)+1/log(c)) elseif @v==28 pz=pz^2+exp(log(pz)^2+@xp1/log(-pz)-1/log(c))+exp(log(-pz)^2+@xp1/log(-pz)+1/log(c)) else pz=pz^2+exp(log(pz)^2+@xp1/log(pz)+1/log(c))-exp(log(-pz)^2+@xp1/log(pz)-1/log(c)) endif return pz endfunc default: title="X-Plog 6" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-PlogTetration(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz pz=@sf(pz) if @jm==0 c=@js else c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+exp(log(pz)^log(pz)+log(c)) elseif @v==1 pz=pz^2+exp(log(pz^2+c)^log(pz^2+c)+log(c)) elseif @v==2 pz=pz^2+exp(log(1-pz)^log(1-pz)+log(c)) else pz=pz^2+exp(log(2-pz)^log(2-pz)+log(c)) endif return pz endfunc default: title="X-Plog Tetration" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v enum="z=z^2+exp(log(z)^log(z)+log(c))"\ "z=z^2+exp(log(z^2+c)^log(z^2+c)+log(c))"\ "z=z^2+exp(log(1-z)^log(1-z)+log(c))"\ "z=z^2+exp(log(2-z)^log(2-z)+log(c))" endparam param js caption="Julia Seed" default=(-1.1,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Tetration1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==0 c=@js+0.3 elseif @v==1 c=@js+0.675 elseif @v==4 c=@js-0.25 else c=@js endif else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^pz+pz^2+c elseif @v==1 pz=pz^pz-pz^2-pz+c elseif @v==2 pz=pz^pz^2+pz^2+c elseif @v==3 pz=pz^pz^3+pz^2+c elseif @v==4 pz=pz^pz^3-pz^2-pz+c else pz=pz^pz^2+pz^4+c endif return pz endfunc default: title="Tetration 1" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="z=z^z+z^2+c"\ "z=z^z-z^2-z+c"\ "z=z^z^2+z^2+c"\ "z=z^z^3+z^2+c"\ "z=z^z^3-z^2-z+c"\ "z=z^z^2+z^4+c" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog7(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==5 c=@js+1.95 elseif @v==6 c=@js+1.1 elseif @v==7 c=-@js elseif @v==8 c=@js+0.5 elseif @v==10 c=@js+1.9 elseif @v==11 c=@js+2.9 else c=@js endif else if @v==1 || @v==2 || @v==4 pz=-@sp elseif @v==5 || @v==6 pz=@sp+1.1 elseif @v==8 pz=-@sp elseif @v==9 pz=@sp+1.099 elseif @v==10 pz=@sp-0.3 elseif @v==11 pz=@sp+1.6 else pz=@sp endif c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+@xp1*exp(log(pz)^2)+c elseif @v==1 pz=pz^2+@xp1*exp(log(-pz)^2)+c elseif @v==2 pz=pz^3+@xp1*exp(log(-pz)^2)+c elseif @v==3 pz=pz^4+@xp1*exp(log(pz)^2)+c elseif @v==4 pz=pz^4+@xp1*exp(log(-pz)^2)+c elseif @v==5 pz=pz^2-@xp1*(exp(log(pz)^2)+exp(log(-pz)^2))+c elseif @v==6 pz=pz^2-@xp1*(exp(log(pz)^2)-exp(log(-pz)^2))+c elseif @v==7 pz=pz^2-@xp1*(exp(log(pz^2+pz)^2))+c elseif @v==8 pz=pz^2+@xp1*(exp(log(pz^2-pz)^2))+c elseif @v==9 pz=pz^2+@xp1*(exp(log(pz)^2+log(c)/log(pz)^2)) elseif @v==10 pz=pz*(pz-1)/(pz+1) pz=pz^2+exp(log(pz)^2+@xp1*log(pz))+c else pz=pz*(pz-1)/(pz+1) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) endif return pz endfunc default: title="X-Plog 7" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12" endparam param sp caption="Start Parameter" default=(-0.1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Tetration2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==1 c=@js+0.55 elseif @v==2 c=@js+0.6 elseif @v==3 c=@js+1 elseif @v==4 c=@js+0.9 elseif @v==5 c=@js+0.25 elseif @v==8 c=@js+0.4 else c=@js endif else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^pz^4+pz^2+c elseif @v==1 pz=pz^pz^4-pz^pz+pz^2+c elseif @v==2 pz=pz^pz^4-pz^pz^2-pz^2+c elseif @v==3 pz=(-pz)^(-pz)-pz^2+c elseif @v==4 pz=(-pz)^(-pz)^2-pz^2+c elseif @v==5 pz=(-pz)^(-pz)^3+pz^2+c elseif @v==6 pz=(-pz)^(-pz)^3-pz^3+c elseif @v==7 pz=(-pz)^(-pz)^4+pz^3-pz+c else pz=pz^pz+pz^6-pz^4+pz^2+c endif return pz endfunc default: title="Tetration 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="z=z^z^4+z^2+c"\ "z=z^z^4-z^z+z^2+c"\ "z=(-z)^(-z)-z^2+c"\ "z=(-z)^(-z)-z^2+c"\ "z=(-z)^(-z)^2-z^2+c"\ "z=(-z)^(-z)^3+z^2+c"\ "z=(-z)^(-z)^3-z^3+c"\ "z=(-z)^(-z)^4+z^3-z+c"\ "z=z^z+z^6-z^4+z^2+c" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-PlogTetration2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==0 || @v==2 c=@js+1.035 elseif @v==1 c=@js+0.15 else c=@js+1.2 endif else if @st==0 pz=@sf(pz) else if @v==0 || @v==2 pz=@sp-1.25 elseif @v==1 pz=@sp-0.2475 else pz=@sp endif endif c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^pz+pz^2+exp(log(pz))+c elseif @v==1 pz=pz^pz^4+pz^2+exp(log(pz)+log(c))+pz+c elseif @v==2 pz=pz^pz+pz^2+exp(log(pz)+log(c)) else pz=pz^pz^4+pz^2+exp(log(pz)+log(2*pz)+log(c)) endif return pz endfunc default: title="X-Plog Tetration 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm==1 endparam param sp caption="Start Parameter" default=(0.25,0) visible=@jm==1 && @st==1 endparam param v caption="Variant" enum="z=z^z+z^2+exp(log(z))+c"\ "z=z^z^4+z^2+exp(log(z)+log(c))+z+c"\ "z=z^z+z^2+exp(log(z)+log(c))"\ "z=z^z^4+z^2+exp(log(z)+log(2*z)+log(c))" endparam param js caption="Julia Seed" default=(-1.1,0) visible=@jm==0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_X-PlogPixtet(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @v==1 || @v==2 pz=@sp-0.95 else pz=@sp endif c=@sf(fpixel) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+c^c elseif @v==1 pz=pz^2+exp(log(pz)^2+@xp1*log(pz))+c^c elseif @v==2 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c^c))+c^c elseif @v==3 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c^c)) elseif @v==4 pz=pz^2-exp(log(pz)^2+@xp1*log(pz)+log(c))+c^c elseif @v==5 pz=pz^2-exp(log(pz)^2+@xp1*log(pz))+c^c elseif @v==6 pz=pz^2-exp(log(pz)^2+@xp1*log(pz)+log(c^c))+c^c else pz=pz^2-exp(log(pz)^2+@xp1*log(pz)+log(c^c)) endif return pz endfunc default: title="X-Plog Pixtet" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5"\ "6""7""8" endparam param sp caption="Start Parameter" default=(0.85,0) endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-PlogTetration3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+c^pz+exp(log(pz)^2-@xp1*log(pz)+log(c)) elseif @v==1 pz=pz^2+1/c^pz+exp(log(pz)^2-@xp1*log(pz)+log(c)) elseif @v==2 pz=pz^2+(pz+c)^pz+exp(log(pz)^2-@xp1*log(pz)+log(c)) elseif @v==3 pz=pz^2+exp(log(pz)^2-@xp1*log(pz)+log(c^pz)) else pz=pz^2+exp(pz*log(c)-@xp1*log(pz)+log(c)) endif return pz endfunc default: title="X-Plog Tetration 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.7,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_X-Plog8(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+recip(recip(pz)^2+@xp1*recip(pz)+log(c)))/@xp2 elseif @v==1 pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+recip(recip(pz)^2+@xp1*recip(pz)-log(c)))/@xp2 elseif @v==2 pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c))+recip(recip(pz)^2+@xp1*recip(pz)+log(c)))/@xp2 elseif @v==3 pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+recip(recip(pz)^2-@xp1*recip(pz)+log(c)))/@xp2 elseif @v==4 pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)-log(c))+recip(recip(pz)^2-@xp1*recip(pz)+log(c)))/@xp2 else pz=(pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+recip(recip(pz)^2-@xp1*recip(pz)-log(c)))/@xp2 endif return pz endfunc default: title="X-Plog 8" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5"\ "6" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param xp2 caption="X-Plog Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Log-XP(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==0 c=@js+1.2 elseif @v==1 c=@js+1.85 else c=@js endif else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) if @v==0 && @jm==1 pz=(@zp1+0.05)*pz+@zp2 else pz=@zp1*pz+@zp2 endif if @v==0 pz=pz^2+@xp2*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))+c elseif @v==1 pz=pz^2+(@xp2-1.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2+c elseif @v==2 pz=pz^2+@xp2*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c))) elseif @v==3 pz=pz^2+(@xp2-1.75)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2 elseif @v==4 pz=pz^2+@xp2*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)))+c else pz=pz^2+(@xp2-0.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)))^2+c endif return pz endfunc default: title="Log-XP" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5"\ "6" endparam param sp caption="Start Parameter" default=(-0.85,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-2,0) visible=@jm==0 endparam param xp1 caption="Log-XP Parameter 1" default=(1,0) endparam param xp2 caption="Log-XP Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Wofunclofer(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else if @v==4 pz=@sp+2.1 else pz=@sp endif c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+sqr((@xp1*(sqrt(pz)^2+sqrt(c))-@xp2*(1/sqrt(pz)^2+sqrt(c)))/(@xp1^2-@xp2^2)) elseif @v==1 pz=pz^2-sqr((@xp1*(sqrt(pz)^2+sqrt(c))-@xp2*(1/sqrt(pz)^2+sqrt(c)))/(@xp1^2-@xp2^2)) elseif @v==2 pz=pz^2+sqr((@xp1*(sqrt(pz)^2+sqrt(c))+@xp2*(1/sqrt(pz)^2+sqrt(c)))/(@xp1^2+@xp2^2)) elseif @v==3 pz=pz^2-sqr((@xp1*(sqrt(pz)^2+sqrt(c))+@xp2*(1/sqrt(pz)^2+sqrt(c)))/(@xp1^2+@xp2^2)) else pz=pz^2+sqr((@xp1*(sqrt(pz^pz)^2+sqrt(c))-@xp2*(1/sqrt(pz^pz)^2+sqrt(c)))/(@xp1^2-@xp2^2)) endif return pz endfunc default: title="Wofunclofer" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5" endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1,0) visible=@jm==0 endparam param xp1 caption="Wofunclofer Parameter 1" default=(2.5,0) endparam param xp2 caption="Wofunclofer Parameter 2" default=(1.5,0) endparam param zp1 caption="Z Parameter 1" default=(0.675,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Eresqurpac(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) c=@js else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=(pz^2+sqr(recip(pz)^2+@xp1*recip(pz))+recip(sqr(pz)^2+@xp1*sqr(pz))+c)/@xp2 elseif @v==1 pz=(pz^2+sqr(recip(pz)^2+@xp1*recip(pz)+1/c)+recip(sqr(pz)^2+@xp1*sqr(pz)+c^2))/@xp2 elseif @v==2 pz=(pz^2+sqr(recip(pz)^2+@xp1*c*recip(pz))+recip(sqr(pz)^2+@xp1*c*sqr(pz)))/@xp2 elseif @v==3 pz=(pz^2+sqr(recip(pz)^2+@xp1*recip(pz)/c)+recip(sqr(pz)^2+@xp1*c^2*sqr(pz)))/@xp2 else pz=(pz^2+sqr(recip(pz)^2+@xp1*recip(pz+c))+recip(sqr(pz)^2+@xp1*sqr(pz+c)))/@xp2 endif return pz endfunc default: title="Eresqurpac" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param xp1 caption="Eresqurpac Parameter 1" default=(1,0) endparam param xp2 caption="Eresqurpac Parameter 2" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1.4,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_AltX12(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) else pz=@sp endif i=0 return pz endfunc private: complex fpixel int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if i==0 pz=@p1*pz^@pow5*((pz^@pow1-@p2)/(1-@p2*pz^@pow1))^@pow2+@js1 i=i+1 else pz=@p3*pz^@pow6*((pz^@pow3-@p4)/(1-@p4*pz^@pow3))^@pow4+@js2 i=0 endif else if i==0 pz=@p1*pz^2*((pz^@pow1-@p2)/(1-@p2*pz^@pow1))^@pow2+@pp1*@pf(fpixel) i=i+1 else pz=@p3*pz^2*((pz^@pow3-@p4)/(1-@p4*pz^@pow3))^@pow4+@pp2*@pf(fpixel) i=0 endif endif return pz endfunc default: title="Alt X 12" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(1.25,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(-1.25,0) endparam param js1 caption="Julia Seed 1" default=(0,0) visible=@jm==0 endparam param js2 caption="Julia Seed 2" default=(0.95,0) visible=@jm==0 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@jm==1 endparam param pp2 caption="Pixel Parameter 2" default=(-1,0) visible=@jm==1 endparam param pow1 caption="Exponent 1" default=3 endparam param pow2 caption="Exponent 2" default=4 endparam param pow3 caption="Exponent 3" default=1 endparam param pow4 caption="Exponent 4" default=4 endparam param pow5 caption="Exponent 5" default=2 visible=@version<101 endparam param pow6 caption="Exponent 6" default=2 visible=@version<101 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_XeniTetraPhotion(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc private: complex a complex b complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @version<101 if @v==0 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a elseif @v==1 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a else b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a endif else if @v2==0 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a elseif @v2==1 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a elseif @v2==2 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a elseif @v2==3 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a+c elseif @v2==4 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a+c elseif @v2==5 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a+c elseif @v2==6 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a*c elseif @v2==7 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a*c else b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a*c endif endif a=pz pz=b return pz endfunc default: title="Xeni Tetra Photion" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3" visible=@version<101 endparam param v2 caption="Variant" enum="1""2""3""4""5""6""7""8""9" visible=@version==101 endparam param sp caption="Start Parameter" default=(-0.4,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.45,0) visible=@jm==0 endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(1,0) endparam param xp1 caption="XTP Parameter" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(-1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_XeniTetraPhotion2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) d=(0,0) if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc private: complex a complex b complex c complex d complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d elseif @v==1 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d elseif @v==2 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d elseif @v==3 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d+c elseif @v==4 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d+c elseif @v==5 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d+c elseif @v==6 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d elseif @v==7 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d elseif @v==8 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d elseif @v==9 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c elseif @v==10 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c elseif @v==11 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c elseif @v==12 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c elseif @v==13 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c elseif @v==14 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c elseif @v==15 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d+c elseif @v==16 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d+c elseif @v==17 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d+c elseif @v==18 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c+c elseif @v==19 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c+c elseif @v==20 b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a*c+@xp2*d*c+c elseif @v==21 b=pz^pz+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c+c elseif @v==22 b=pz^pz^2+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c+c else b=pz^pz^3+pz^@pow1+pz^@pow2*c+@xp1*a+@xp2*d*c+c endif a=d d=pz pz=b return pz endfunc default: title="Xeni Tetra Photion 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24" endparam param sp caption="Start Parameter" default=(-0.4,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.45,0) visible=@jm==0 endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(1,0) endparam param xp1 caption="XTP Parameter 1" default=(-0.5,0) endparam param xp2 caption="XTP Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(-1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==0 pz=@pf(pz) else pz=@sp endif c1=@js1 c2=@js2 c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if i==0 b=pz^@pow1+pz^@pow2*c1+@mp1*a a=pz pz=b i=i+1 else b=pz^@pow3+pz^@pow4*c2+@mp2*a a=pz pz=b i=0 endif else if i==0 b=pz^@pow1+pz^@pow2*@pp1*c+@mp1*a a=pz pz=b i=i+1 else b=pz^@pow3+pz^@pow4*@pp2*c+@mp2*a a=pz pz=b i=0 endif endif return pz endfunc private: complex a complex b complex c complex c1 complex c2 int i default: title="Alt Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-0.25,0) visible=@jm==1 endparam param mp1 caption="Phoenix Parameter 1" default=(-0.5,0) endparam param mp2 caption="Phoenix Parameter 2" default=(0.5,0) endparam param js1 caption="Julia Seed 1" default=(-1,0) visible=@jm==0 endparam param js2 caption="Julia Seed 2" default=(0.95,0) visible=@jm==0 endparam param pp1 caption="Pixel Parameter 1" default=(1,0) visible=@jm==1 endparam param pp2 caption="Pixel Parameter 2" default=(-1,0) visible=@jm==1 endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=1 endparam param pow3 caption="Exponent 3" default=3 endparam param pow4 caption="Exponent 4" default=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AltAVM(common.ulb:DivergentFormula) { ;This is a modification of AvgMandel v1 ;by Setemkia FallingTree (sft.ufm) public: complex func Init(complex pz) fpixel=pz a=@sp pz=a^(@pow1+@pow2)+@pf(fpixel) pz=@pf(pz) c1=@js1 c2=@js2 c=@pf(fpixel) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 if i==0 b=pz pz=pz^@pow1*a^@pow2+c1 a=b i=i+1 else b=pz pz=pz^@pow3*a^@pow4+c2 a=b i=0 endif else if i==0 b=pz pz=pz^@pow1*a^@pow2+@pp1*c a=b i=i+1 else b=pz pz=pz^@pow3*a^@pow4+@pp2*c a=b i=0 endif endif return pz endfunc private: complex a complex c complex c1 complex c2 int i default: title="Alt AVM" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0,0) endparam param js1 caption="Julia Seed 1" default=(-0.9,0) visible=@jm==0 endparam param js2 caption="Julia Seed 2" visible=@jm==0 default=(0.1,0) endparam param pp1 caption="Pixel Parameter 1" default=(0.5,0) visible=@jm==1 endparam param pp2 caption="Pixel Parameter 2" default=(-1,0) visible=@jm==1 endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(3,0) endparam param pow3 caption="Exponent 3" default=(2,0) endparam param pow4 caption="Exponent 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltJuman(common.ulb:DivergentFormula) { ;This is a modification of MandelJulia ;by Taylor Holmes (tah.ufm) public: complex func Init(complex pz) fpixel=pz cj1=@js1 cj2=@js2 zj=@pf(pz) cm=@pf(fpixel) zm=@sp i=0 return pz endfunc complex func Iterate(complex pz) if i==0 zj=zj^@pow1+cj1 zm=zm^@pow1+@pp1*cm pz=(zm+zj)/2 i=i+1 else zj=zj^@pow2+cj2 zm=zm^@pow2+@pp2*cm pz=(zm+zj)/2 i=0 endif return pz endfunc private: complex cj1 complex cj2 complex zj complex cm complex zm int i default: title="Alt Juman" int param version caption="Version" default=100 visible=@version<100 endparam param sp caption="Start Parameter" default=(0,0) endparam param js1 caption="Julia Seed 1" default=(-0.75,0) endparam param js2 caption="Julia Seed 2" default=(-0.25,0) endparam param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(-1,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(3,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_SimagTiGhontur(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) d=(0,0) if @jm==0 pz=@pf(pz) c=@js else if @sp==(0,0) pz=@pf(pz) else pz=@sp endif c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 d=pz^log(pz)^2+pz*c+@xp1*a+@xp2*b b=a a=pz pz=d return pz endfunc private: complex a complex b complex c complex d default: title="Simag Ti Ghontur" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.1,0) visible=@jm==0 endparam param xp1 caption="STG Parameter 1" default = (0.5,0) endparam param xp2 caption="STG Parameter 2" default=(-0.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_MunsterPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 b=@xp2*pz^2*(pz-@xp1)/(1-@xp1*pz)+pz^@pow1+pz^@pow2*c+@mp*a a=pz pz=b return pz endfunc private: complex a complex b complex c default: title="Munster Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(-0.4,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.75,0) visible=@jm==0 endparam param pow1 caption="Phoenix Exponent 1" default=(2,0) endparam param pow2 caption="Phoenix Exponent 2" default=(1,0) endparam param mp caption="Phoenix Parameter" default=(1,0) endparam param xp1 caption="Munster Parameter 1" default=(1.5,0) endparam param xp2 caption="Munster Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_StuverponDhixany(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==1 if @v==2 pz=@sp+0.5 else pz=@sp endif c=@pf(fpixel) else pz=@pf(pz) c=@js endif d=@xp1 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 d=d-1 if d<=0 d=d+@xp1 c=pz if @jm==1 if @v==2 pz=@sp+0.5 else pz=@sp endif else pz=@pf(pixel) endif endif if @v==0 b=pz^@pow1+1/pz^@pow2+c+@xp2*a elseif @v==1 b=pz^@pow1+c/pz^@pow2+@xp2*a else b=pz^@pow1+c/pz^@pow2+c+@xp2*a endif a=pz pz=b return pz endfunc private: complex a complex b complex c float d default: title="Stuverpon Dhixany" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param v caption="Variant" enum="1"\ "2"\ "3" endparam param js caption="Julia Seed" default=(-1.25,0) visible=@jm==0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param xp1 caption="XD Parameter 1" default=3.0 endparam param xp2 caption="XD Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(0.6,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(1,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_X-PlogPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 b=pz^@pow1+pz^@pow2*c+@pp*a b=b^2+exp(log(b)^2+@xp1*log(b)+log(c)) a=pz pz=b return pz endfunc private: complex a complex b complex c default: title="X-Plog Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(-0.475,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.06,0) visible=@jm==0 endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=1 endparam param pp caption="Phoenix Parameter" default=(-0.5,0) endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_MunsterSkewpot(common.ulb:DivergentFormula) { ; The init section of this is taken from Rob Barnett's 3RDIM formulas (reb.ufm) public: complex func Init(complex pz) fpixel=pz pz=@p1*real(@pf(pz))+flip(imag(@pf(pz))) c=@p2+real(@pf(fpixel))+flip(imag(@pf(fpixel))*@p1) return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=@xp2*pz^2*(pz-@xp1)/(1-@xp1*pz)+c elseif @v==1 pz=@xp2*c*pz^2*(pz-(@xp1+1))/(1-(@xp1+1)*pz) elseif @v==2 pz=-(@xp2+0.5)*pz^2*(pz-@xp1*c)/(1-@xp1*c*pz) elseif @v==3 pz=@xp2*c*pz^2*(pz-@xp1)/(1-@xp1*pz)+c elseif @v==4 pz=@xp2*pz^2*(pz-(@xp1-1)*c)/(1-(@xp1-1)*c*pz)+c elseif @v==5 pz=@xp2*c*pz^2*(pz-@xp1*c)/(1-@xp1*c*pz)+c else pz=@xp2*c*pz^2*(pz-(@xp1+1)*c)/(1-(@xp1+1)*c*pz) endif return pz endfunc default: title="Munster Skewpot" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7" endparam param p1 caption="Skewpot Parameter 1" default=(1,0) endparam param p2 caption="Skewpot Parameter 2" default=(0,0) endparam param xp1 caption="Munster Parameter 1" default=(1.5,0) endparam param xp2 caption="Munster Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IsaacsBird(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif a=(0,0) b=(0,0) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 if @version<101 b=(pz-(pz^@pow-c)/(@pow*pz^(@pow-1)))^2+c*(pz-(pz^@pow-c)/(@pow*pz^(@pow-1)))+@xp1*a else b=(pz-@xp2*(pz^@pow1-c)/(@pow1*pz^(@pow1-1)))^@pow3+c*(pz-@xp3*(pz^@pow2-c)/(@pow2*pz^(@pow2-1)))^@pow4+@xp1*a endif a=pz pz=b return pz endfunc private: complex a complex b complex c default: title="Isaac's Bird" int param version caption="Version" default=101 visible=@version<101 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1,0) visible=@jm==0 endparam param xp1 caption="Phoenix Parameter" default=(-0.5,0) endparam param xp2 caption="Newton Parameter 1" default=(1,0) visible=@version==101 endparam param xp3 caption="Newton Parameter 2" default=(1,0) visible=@version==101 endparam param pow caption="Exponent" default=(3,0) visible=@version<101 endparam param pow1 caption="Newton Exponent 1" default=(3,0) visible=@version==101 endparam param pow2 caption="Newton Exponent 2" default=(3,0) visible=@version==101 endparam param pow3 caption="Phoenix Exponent 1" default=(2,0) visible=@version==101 endparam param pow4 caption="Phoenix Exponent 2" default=(1,0) visible=@version==101 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_GarumingeshJ(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) pz=@pf(pz) c=@js a=(0,0) b=(0,0) d=(0,0) return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 d=sqr((pz^2+c-1)/(2*pz+c-2))+@xp1*b+@xp2*a a=b b=pz pz=d else pz=sqr((pz^2+c-1)/(2*pz+c-2))+@xp1*b+@xp2*a a=b b=pz endif return pz endfunc private: complex a complex b complex c complex d default: title="Garumingesh J" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param js caption="Julia Seed" default=(2.5,0) endparam param xp1 caption="G Parameter 1" default=(-0.5,0) endparam param xp2 caption="G Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_upperbailout caption="Divergent Bailout" default=1000.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.000000001 endparam complex param p_power visible=false endparam } class OM_SpixatorM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c=@pf(fpixel) a=(0,0) b=(0,0) d=c return pz endfunc private: complex a complex b complex c complex d complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 b=pz^2+c-d+@xp1*a c=c*@xp2/b a=pz pz=b elseif @v==1 b=pz^2+c-d+@xp1*a c=c*@xp2/b a=pz-d pz=b else b=pz^2+c-d^2+@xp1*a c=c*@xp2/b a=pz-d^2 pz=b endif return pz endfunc default: title="Spixator M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3" endparam param sp caption="Start Parameter" default=(1,0) endparam param xp1 caption="Spixator Parameter 1" default=(-0.5,0) endparam param xp2 caption="Spixator Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_SpixatorJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) c=@js a=(0,0) b=(0,0) d=c return pz endfunc private: complex a complex b complex c complex d complex func Iterate(complex pz) pz=@zp1*pz+@zp2 b=pz^2+c-d+@xp1*a c=c*@xp2/b a=pz pz=b return pz endfunc default: title="Spixator J" int param version caption="Version" default=100 visible=@version<100 endparam param js caption="Julia Seed" default=(0.1,0) endparam param xp1 caption="Spixator Parameter 1" default=(-0.5,0) endparam param xp2 caption="Spixator Parameter 2" default=(0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_GarumingeshM(common.ulb:ConvergentDivergentFormula) { public: complex func Init(complex pz) ConvergentDivergentFormula.Init(pz) fpixel=pz a=(0,0) b=(0,0) c=@pf(fpixel) d=(0,0) pz=@sp return pz endfunc complex func Iterate(complex pz) ConvergentDivergentFormula.Iterate(pz) pz=@zp1*pz+@zp2 if @v==0 d=sqr((pz^2+c-1)/(2*pz+c-2))+@xp1*b+@xp2*a a=b b=pz pz=d else pz=sqr((pz^2+c-1)/(2*pz+c-2))+@xp1*b+@xp2*a a=b b=pz endif return pz endfunc bool func IsBailedOut(complex pz) return |pz|>=@p_upperbailout || |pz-1|<=@p_lowerbailout endfunc private: complex a complex b complex c complex d default: title="Garumingesh M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(-0.65,0) endparam param xp1 caption="G Parameter 1" default=(0.8,0) endparam param xp2 caption="G Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_upperbailout caption="Divergent Bailout" default=100.0 endparam param p_lowerbailout caption="Convergent Bailout" default=0.00000051 endparam complex param p_power visible=false endparam } class OM_X-PlogPhoenix2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz a=(0,0) b=(0,0) if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 b=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+@xp2*a a=pz pz=b return pz endfunc private: complex a complex b complex c default: title="X-Plog Phoenix 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0.3,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.65,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param xp2 caption="Phoenix Parameter" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_TwencoltFerofu(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) if @v==1 c=@js-1.5 elseif @v==4 c=-@js elseif @v==5 c=@js-0.86 elseif @v==6 c=@js+0.55 else c=@js endif else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+(@xp1*(pz^pz+c)-@xp2*(1/pz+c))/(@xp1^2-@xp2^2) elseif @v==1 pz=pz^2-(@xp1*(pz^pz+c)-@xp2*(1/pz+c))/(@xp1^2-@xp2^2) elseif @v==2 pz=pz^2+((@xp1*(pz^pz+c)-@xp2*(1/pz+c))/(@xp1^2-@xp2^2))^2 elseif @v==3 pz=pz^2-((@xp1*(pz^pz+c)-@xp2*(1/pz+c))/(@xp1^2-@xp2^2))^2 elseif @v==4 pz=pz^2+(@xp1*(pz^pz^2+c)-@xp2*(pz+1/pz+c))/(@xp1^2-@xp2^2) elseif @v==5 pz=pz^2-(@xp1*(pz^pz^2+c)-@xp2*(pz+1/pz+c))/(@xp1^2-@xp2^2) elseif @v==6 pz=pz^2+((@xp1*(pz^pz^2+c)-@xp2*(pz+1/pz+c))/(@xp1^2-@xp2^2))^2 else pz=pz^2-((@xp1*(pz^pz^2+c)-@xp2*(pz+1/pz+c))/(@xp1^2-@xp2^2))^2 endif return pz endfunc private: complex c default: title="Twencolt Ferofu" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5""6""7""8" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.05,0) visible=@jm==0 endparam param xp1 caption="TF Parameter 1" default=(2.5,0) endparam param xp2 caption="TF Parameter 2" default=(1.5,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_Sperdite(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz^2+pz^pz^2+2*pz*c*tan(@xp1/pz) return pz endfunc private: complex c default: title="Sperdite" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(-0.45,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.15,0) visible=@jm==0 endparam param xp1 caption="Sperdite Parameter" default=(3.1416,0) endparam param zp1 caption="Z Parameter 1" default=(-1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_RexinEtophorbalt(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif d=@xp2 a=(0,0) b=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 b=pz^2+c*pz+@xp1*a a=pz pz=b d=d-1 if d<=0 d=d+@xp2 c=1/c endif return pz endfunc private: complex a complex b complex c float d default: title="Rexin Etophorbalt" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.8,0) visible=@jm==0 endparam param xp1 caption="RE Parameter 1" default=(0.5,0) endparam param xp2 caption="RE Parameter 2" default=3.0 min=1.0 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Refalkic(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+sqr((@xp1*(pz^3+(c+1.15))-@xp2*(1/pz+(c+1.15)))/(@xp1^2-@xp2^2)) elseif @v==1 pz=pz^3+sqr((@xp1*(pz^3+c)+@xp2*(1/pz+c))/(@xp1^2-@xp2^2)) elseif @v==2 pz=pz^3-sqr((@xp1*(pz^3+(c+1.475))-@xp2*(1/pz+(c+1.475)))/(@xp1^2-@xp2^2)) else pz=pz^2-sqr((@xp1*(pz^3+c)+@xp2*(1/pz+c))/(@xp1^2-@xp2^2)) endif return pz endfunc private: complex c default: title="Refalkic" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4" endparam param sp caption="Start Parameter" default=(-0.75,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.3,0) visible=@jm==0 endparam param xp1 caption="Refalkic Parameter 1" default=(2,0) endparam param xp2 caption="Refalkic Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_OnocPhrouterXain(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==1 pz=@sp c=@pf(fpixel) else pz=@pf(pz) c=@js endif a=@xp1 f=a ph1=(0,0) ph2=(0,0) ph3=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 If f==a a=1 f=@xp1 ph1=pz^pz^2+pz^f+c+@xp2*ph2*c+@xp3*ph3 ph3=ph2 ph2=pz pz=ph1 else ph1=pz^pz^2+pz^f+c+@xp2*ph2+@xp3*ph3 ph3=ph2 ph2=pz pz=ph1 endif f=f-1 return pz endfunc private: int a int f complex c complex ph1 complex ph2 complex ph3 default: title="Onoc Phrouter Xain" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.4,0) visible=@jm==0 endparam param xp2 caption="OPX Parameter 1" default=(-0.5,0) endparam param xp3 caption="OPX Parameter 2" default=(-0.5,0) endparam param xp1 caption="Exponent" default=5 min=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_IsaacsBird2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif a=(0,0) b=(0,0) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 b=(pz-@xp2*(pz^@pow1-1)/(@pow1*pz^(@pow1-1)))^@pow3+c*(pz-@xp3*(pz^@pow2-1)/(@pow2*pz^(@pow2-1)))^@pow4+@xp1*a+c a=pz pz=b return pz endfunc private: complex a complex b complex c default: title="Isaac's Bird 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=@jm==1 endparam param xp1 caption="Phoenix Parameter" default=(-0.5,0) endparam param xp2 caption="Newton Parameter 1" default=(1,0) endparam param xp3 caption="Newton Parameter 2" default=(1,0) endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param pow1 caption="Newton Exponent 1" default=(3,0) endparam param pow2 caption="Newton Exponent 2" default=(3,0) endparam param pow3 caption="Phoenix Exponent 1" default=(2,0) endparam param pow4 caption="Phoenix Exponent 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.00000001 exponential=true endparam } class OM_TetrationCapruq(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==1 pz=@sp c=@pf(fpixel) else pz=@pf(pz) c=@js endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=(pz^2+sqr(pz^pz+@xp1*c*pz)+pz^pz+@xp2*c*sqr(pz))/@xp3 elseif @v==1 pz=(pz^2+sqr(pz^pz+@xp1*c*pz)+pz^(pz-1)+@xp2*c*sqr(pz))/@xp3 elseif @v==2 pz=(pz^2+sqr(pz^pz+@xp1*c*pz)+pz^(pz-2)+@xp2*c*sqr(pz))/@xp3 elseif @v==3 pz=(pz^2+sqr(pz^pz+@xp1*c*pz)+pz^(pz-3)+@xp2*c*sqr(pz))/@xp3 else pz=(pz^2+sqr(pz^pz+@xp1*c*pz)+pz^(pz-4)+@xp2*c*sqr(pz))/@xp3 endif return pz endfunc private: complex c default: title="Tetration Capruq" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3"\ "4"\ "5" endparam param sp caption="Start Parameter" default=(1,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.7,0) visible=@jm==0 endparam param xp1 caption="Capruq Parameter 1" default=(1,0) endparam param xp2 caption="Capruq Parameter 2" default=(1,0) endparam param xp3 caption="Capruq Parameter 3" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_BivarPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) b=(0,0) d=(0,0) b2=(0,0) d2=(0,0) fpixel=pz if @jm==0 z2=@pf(pz) pz=@pf(pz) c=@js else pz=@sp1 z2=@sp2 c=@pf(fpixel) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 b=pz^2+c+@php1*d d=pz pz=b b2=z2^2+c+@php2*d2 d2=z2 z2=b2 a=z2 z2=@bp1*z2/pz+@bp2 pz=pz^2+a^2+c return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex c complex z2 complex b complex d complex b2 complex d2 default: title="Bivar Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp1 caption="Start Parameter (Z)" default=(0.25,0) visible=@jm==1 endparam param sp2 caption="Start Parameter (Z2)" default=(0.25,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-1.075,0) visible=@jm==0 endparam param bp1 caption="Bivar Parameter 1" default=(0.825,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam param php1 caption="Phoenix Parameter 1" default=(0.6,0) endparam param php2 caption="Phoenix Parameter 2" default=(-0.5,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.5,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_Semaberence(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif a=(0,0) b=(0,0) i=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if i==0 b=(pz^@pow1+c)*(@xp1-pz^2)/(@xp1+pz^2)+@xp3*a a=pz pz=b i=i+1 else b=(pz^@pow2+c)*(@xp2-pz^2)/(@xp2+pz^2)+@xp4*a a=pz pz=b i=0 endif return pz endfunc private: complex c complex a complex b int i default: title="Semaberence" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.35,0) visible=@jm==0 endparam param xp1 caption="Semaberence Parameter 1" default=(-1,0) endparam param xp2 caption="Semaberence Parameter 2" default=(1,0) endparam param xp3 caption="Semaberence Parameter 3" default=(-0.5,0) endparam param xp4 caption="Semaberence Parameter 4" default=(0.5,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_Casiwanoten(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=@xp1*(pz^3-@xp2)/(3*pz^2)+1/c return pz endfunc private: complex c default: title="Casiwanoten" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param js caption="Julia Seed" default=(-1.8,0) visible=@jm==0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param xp1 caption="Casiwanoten Parameter 1" default=(1,0) endparam param xp2 caption="Casiwanoten Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_Casiwanoten2(common.ulb:ConvergentFormula) { public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=@zp1*pz+@zp2 pz=@xp1*(pz^3-@xp2)/(3*pz^2)+1/c pz=pz-(pz^3-c)/(3*pz^2) return pz endfunc private: complex c default: title="Casiwanoten 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param js caption="Julia Seed" default=(-1.8,0) visible=@jm==0 endparam param sp caption="Start Parameter" default=(-1,0) visible=@jm==1 endparam param xp1 caption="Casiwanoten Parameter 1" default=(1,0) endparam param xp2 caption="Casiwanoten Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_BlefomJulia(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) c=@js return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=@xp1*pz*(pz+4)/(1+4*pz)+@xp2 pz=((pz+c)^2-c)^3+c return pz endfunc default: title="Blefom Julia" int param version caption="Version" default=100 visible=@version<100 endparam param xp1 caption="Blefom Parameter 1" default=(1,0) endparam param xp2 caption="Blefom Parameter 2" default=(0,0) endparam param js caption="Julia Seed" default=(-0.4,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_BlefomJulia2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) c=@js return pz endfunc private: complex c complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=@xp1*pz^2*(pz+@xp3)/(1+@xp3*pz)+@xp2 pz=((pz+c)^2-c)^2+c return pz endfunc default: title="Blefom Julia 2" int param version caption="Version" default=100 visible=@version<100 endparam param xp1 caption="Blefom Parameter 1" default=(1,0) endparam param xp2 caption="Blefom Parameter 2" default=(0,0) endparam param xp3 caption="Blefom Parameter 3" default=(7.5,0) endparam param js caption="Julia Seed" default=(-0.4,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_AltX13(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif i=0 return pz endfunc private: complex c int i complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 if i==0 pz=pz^2+@xp1*pz*(pz+@xp3)/(1+@xp3*pz)+@xp2+c i=i+1 else pz=@xp1*pz*(pz+@xp3)/(1+@xp3*pz)+@xp2 pz=((pz+c)^2-c)^3+c i=0 endif else if i==0 pz=@xp1*pz*(pz+@xp3)/(1+@xp3*pz)+@xp2 pz=((pz+c)^2-c)^3+c i=i+1 else pz=pz^2+@xp1*pz*(pz+@xp3)/(1+@xp3*pz)+@xp2+c i=0 endif endif return pz endfunc default: title="Alt X 13" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1""2" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.55,0) visible=@jm==0 endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(0,0) endparam param xp3 caption="X Parameter 3" default=(4,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_Kaxabak(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz^4*(pz^4-@xp1*pz^2+@xp2)/(@xp2*pz^2-@xp1/4)^2+c return pz endfunc private: complex c default: title="Kaxabak" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.75,0) visible=@jm==0 endparam param xp1 caption="Kaxabak Parameter 1" default=(3,0) endparam param xp2 caption="Kaxabak Parameter 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltAleatorX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==1 pz=@sp c=@pf(fpixel) else pz=@pf(pz) c=@js endif i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @alv==0 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==1 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c-@ap*@af(values[i2]) i3=0 endif elseif @alv==2 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c-@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==3 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==4 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=(pz-@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==5 if i3==0 pz=(pz-@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==6 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==7 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=pz^2*((pz-@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz-@ap*@af(values[i2])))+c i3=0 endif elseif @alv==8 if i3==0 pz=pz^2*((pz-@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz-@ap*@af(values[i2])))+c i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==9 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==10 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*((pz-@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz-@ap*@af(values[i2])))+c-@ap*@af(values[i2]) i3=0 endif elseif @alv==11 if i3==0 pz=pz^2*((pz-@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz-@ap*@af(values[i2])))+c-@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==12 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==13 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=(pz-@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c-@ap*@af(values[i2]) i3=0 endif elseif @alv==14 if i3==0 pz=(pz-@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c-@ap*@af(values[i2]) i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==15 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==16 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=(pz-@ap*@af(values[i2]))^2*((pz-@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz-@ap*@af(values[i2])))+c i3=0 endif elseif @alv==17 if i3==0 pz=(pz-@ap*@af(values[i2]))^2*((pz-@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz-@ap*@af(values[i2])))+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==18 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==19 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==20 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==21 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==22 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==23 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==24 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==25 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==26 if i3==0 pz=pz^2*((pz+@ap*@af(values[i2]))-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==27 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*(pz+@ap*@af(values[i2])))+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==28 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*((pz+@ap*@af(values[i2]))-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==29 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*(pz+@ap*@af(values[i2])))+c i3=0 endif elseif @alv==30 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+@ap*@af(values[i2])*c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+c i3=0 endif elseif @alv==31 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+@ap*@af(values[i2])*c i3=0 endif elseif @alv==32 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+@ap*@af(values[i2])*c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+@ap*@af(values[i2])*c i3=0 endif elseif @alv==33 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)+@ap*@af(values[i2])*c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)-@ap*@af(values[i2])*c i3=0 endif elseif @alv==34 if i3==0 pz=pz^2*(pz-@xp1)/(1-@xp2*pz)-@ap*@af(values[i2])*c i3=i3+1 else pz=pz^2*(pz-@xp3)/(1-@xp4*pz)+@ap*@af(values[i2])*c i3=0 endif elseif @alv==35 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+@ap*@af(values[i2])*c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+@ap*@af(values[i2])*c i3=0 endif elseif @alv==36 if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)+@ap*@af(values[i2])*c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)-@ap*@af(values[i2])*c i3=0 endif else if i3==0 pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp1)/(1-@xp2*pz)-@ap*@af(values[i2])*c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2*(pz-@xp3)/(1-@xp4*pz)+@ap*@af(values[i2])*c i3=0 endif endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="Alt Aleator X 1" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param alv caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(0.15,0) visible=@jm==0 endparam param xp1 caption="X Parameter 1" default=(-1.65,0) endparam param xp2 caption="X Parameter 2" default=(-1.35,0) endparam param xp3 caption="X Parameter 3" default=(-2,0) endparam param xp4 caption="X Parameter 4" default=(2.5,0) endparam param ap caption="Aleator Parameter" default=(0.5,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AltAleatorDevaney(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==1 pz=@sp c=@pf(fpixel) else pz=@pf(pz) c=@js endif i2=0 i3=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @alv==0 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==1 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c-@ap*@af(values[i2]) i3=0 endif elseif @alv==2 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c+@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==3 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c+@ap*@af(values[i2]) i3=0 endif elseif @alv==4 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==5 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=(pz-@ap*@af(values[i2]))^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==6 if i3==0 pz=(pz+@ap*@af(values[i2]))^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==7 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=(pz+@ap*@af(values[i2]))^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==8 if i3==0 pz=pz^2+@xp1/((pz+@ap*@af(values[i2]))-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/((pz+@ap*@af(values[i2]))-@xp4)+c i3=0 endif elseif @alv==9 if i3==0 pz=pz^2+@xp1/((pz+@ap*@af(values[i2]))-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/((pz-@ap*@af(values[i2]))-@xp4)+c i3=0 endif elseif @alv==10 if i3==0 pz=pz^2+@xp1/((pz+@ap*@af(values[i2]))-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==11 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/((pz+@ap*@af(values[i2]))-@xp4)+c i3=0 endif elseif @alv==12 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c*@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c*@ap*@af(values[i2]) i3=0 endif elseif @alv==13 if i3==0 pz=pz^2+@xp1/(pz-@xp3-0.5)+c*@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)-c*@ap*@af(values[i2]) i3=0 endif elseif @alv==14 if i3==0 pz=pz^2+@xp1/(pz-@xp3-0.5)+c*@ap*@af(values[i2]) i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c i3=0 endif elseif @alv==15 if i3==0 pz=pz^2+@xp1/(pz-@xp3)+c i3=i3+1 else pz=pz^2+@xp2/(pz-@xp4)+c*@ap*@af(values[i2]) i3=0 endif endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 int i3 complex c default: title="Alt Aleator Devaney" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" default=1 endparam param alv caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16" endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-2,0) visible=@jm==0 endparam param xp1 caption="Devaney Parameter 1" default=(1,0) endparam param xp2 caption="Devaney Parameter 2" default=(1,0) endparam param xp3 caption="Devaney Parameter 3" default=(0,0) endparam param xp4 caption="Devaney Parameter 4" default=(0,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorDasDebataBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@pf(pz) fz=(0,0) fu=(0,0) i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==1 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=((pz+@ap*@af(values[i2]))-@p2a)*@p1a else fz=((pz+@ap*@af(values[i2]))+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==2 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a+@ap*@af(values[i2]) else fz=(pz+@p2a)*@p1a+@ap*@af(values[i2]) endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==3 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b+@ap*@af(values[i2]) else fu=(u+@p2b)*@p1b+@ap*@af(values[i2]) endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==4 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u+@ap*@af(values[i2])-@p2b)*@p1b else fu=(u+@ap*@af(values[i2])+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==5 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=((pz-@ap*@af(values[i2]))-@p2a)*@p1a else fz=((pz+@ap*@af(values[i2]))+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==6 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a-@ap*@af(values[i2]) else fz=(pz+@p2a)*@p1a+@ap*@af(values[i2]) endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b else fu=(u+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu elseif @alp==7 pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@p2b)*@p1b-@ap*@af(values[i2]) else fu=(u+@p2b)*@p1b+@ap*@af(values[i2]) endif pz=(1-@ddp2)*pz+@ddp2*fu else pz=@zp1*pz+@zp2 if real(@f1a(pz))*imag(@p3a)+real(@p3a)*imag(@f1a(pz))>=0 fz=(pz-@p2a)*@p1a else fz=(pz+@p2a)*@p1a endif u=(1-@ddp1)*pz+@ddp1*fz if real(@f1b(u))*imag(@p3b)+real(@p3b)*imag(@f1b(u))>=0 fu=(u-@ap*@af(values[i2])-@p2b)*@p1b else fu=(u+@ap*@af(values[i2])+@p2b)*@p1b endif pz=(1-@ddp2)*pz+@ddp2*fu endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex fz complex fu default: title="Aleator Das-Debata Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param ddp1 caption="Das-Debata Parameter 1" default=(-0.11,0.33) endparam param ddp2 caption="Das-Debata Parameter 2" default=(0.34,0.01) endparam param p1a caption="Barnsley Parameter 1a" default=(4.19,-0.3) endparam param p1b caption="Barnsley Parameter 1b" default=(1.95,3.02) endparam param p2a caption="Barnsley Parameter 2a" default=(0.95,1.31) endparam param p2b caption="Barnsley Parameter 2b" default=(1.2,-0.23) endparam param p3a caption="Barnsley Parameter 3a" default=(1,1) endparam param p3b caption="Barnsley Parameter 3b" default=(1,1) endparam func f1a caption="Barnsley Function a" default=ident() endfunc func f1b caption="Barnsley Function b" default=ident() endfunc func sf caption="Pixel Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AleatorX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=@pf(pz) if @alp==2 || @alp==3 c=@js-0.2 elseif @alp==4 c=@js+0.05 elseif @alp==5 || @alp==3 c=@js-0.7 elseif @alp==7 c=@js-0.55 elseif @alp==9 c=@js+0.35 elseif @alp==13 c=@js-1.1 else c=@js endif else if @alp==1 || @alp==2 || @alp==4 pz=@sp+0.75 elseif @alp==6 pz=@sp+0.5 elseif @alp==8 pz=@sp-1.35 elseif @alp==12 || @alp==13 pz=@sp+0.15 else pz=@sp endif c=@pf(fpixel) endif i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 pz=cosh(@xp1/pz)*pz^2+c+@ap*@af(values[i2]) elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/pz)*pz^2+c elseif @alp==2 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/pz)*pz^2+c+@ap*@af(values[i2]) elseif @alp==3 pz=@zp1*pz+@zp2 pz=cosh(@xp1/pz+@ap*@af(values[i2]))*pz^2+c elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/pz+@ap*@af(values[i2]))*pz^2+c elseif @alp==5 pz=(@zp1-0.375)*pz+@zp2 pz=cosh(@xp1/pz)*(pz+@ap*@af(values[i2]))^2+c elseif @alp==6 pz=@zp1*pz++@zp2 pz=cosh((@xp1+@ap*@af(values[i2]))/pz)*pz^2+c elseif @alp==7 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=cosh((@xp1+@ap*@af(values[i2]))/pz)*pz^2+c elseif @alp==8 pz=@zp1*pz+@zp2 pz=cosh(@xp1/(pz+@ap*@af(values[i2])))*pz^2+c elseif @alp==9 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/(pz+@ap*@af(values[i2])))*pz^2+c elseif @alp==10 pz=(@zp1-0.3)*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/pz)*pz^2+c-@ap*@af(values[i2]) elseif @alp==11 pz=(@zp1-0.15)*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/pz-@ap*@af(values[i2]))*pz^2+c elseif @alp==12 pz=@zp1*pz+@zp2-@ap*@af(values[i2]) pz=cosh((@xp1+@ap*@af(values[i2]))/pz)*pz^2+c else pz=(@zp1-0.35)*pz+@zp2+@ap*@af(values[i2]) pz=cosh(@xp1/(pz-@ap*@af(values[i2])))*pz^2+c endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 1" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="j""M" default=1 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.65,0) visible=@jm==0 endparam param xp1 caption="X Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AleatorX-Plog(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+@ap*@af(values[i2]) elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @alp==2 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))+@ap*@af(values[i2]) elseif @alp==3 pz=@zp1*pz+@zp2 pz=(pz+@ap*@af(values[i2]))^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=(pz+@ap*@af(values[i2]))^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @alp==5 pz=@zp1*pz+@zp2 pz=pz^2+exp(log(pz+@ap*@af(values[i2]))^2+@xp1*log(pz)+log(c)) elseif @alp==6 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz+@ap*@af(values[i2]))^2+@xp1*log(pz)+log(c)) elseif @alp==7 pz=@zp1*pz+@zp2 pz=pz^2+exp(log(pz)^2+@xp1*log(pz+@ap*@af(values[i2]))+log(c)) elseif @alp==8 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz+@ap*@af(values[i2]))+log(c)) elseif @alp==9 pz=@zp1*pz+@zp2 pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c+@ap*@af(values[i2]))) elseif @alp==10 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c+@ap*@af(values[i2]))) elseif @alp==11 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c))-@ap*@af(values[i2]) elseif @alp==12 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=(pz-@ap*@af(values[i2]))^2+exp(log(pz)^2+@xp1*log(pz)+log(c)) elseif @alp==13 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz-@ap*@af(values[i2]))^2+@xp1*log(pz)+log(c)) elseif @alp==14 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz-@ap*@af(values[i2]))+log(c)) else pz=@zp1*pz+@zp2+@ap*@af(values[i2]) pz=pz^2+exp(log(pz)^2+@xp1*log(pz)+log(c-@ap*@af(values[i2]))) endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X-Plog" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="j""M" default=1 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(0.5,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.65,0) visible=@jm==0 endparam param xp1 caption="X-Plog Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_AleatorIFB(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@pf(pz) i2=0 return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if real(pz)<@p4 pz=pz*fn3(@p1)+@p2 elseif @p5<=real(pz) pz=pz*fn4(@p1)+@p3 endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 default: title="Aleator IFB" int param version caption="Version" default=100 visible=@version<100 endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param p1 caption="IFB Parameter a1" default=(1.29,0) endparam param p2 caption="IFB Parameter a2" default=(2.68,0.55) endparam param p3 caption="IFB Parameter a3" default=(1.92,0) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam func pf caption="Pixel function" default=ident() endfunc func fn3 caption="IFB Function 1" default=conj() endfunc func fn4 caption="IFB Function 2" default=flip() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000000.0 exponential=true endparam } class OM_AleatorMBivar2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp pk=pz i2=0 c=@pf(fpixel) return pz return pk endfunc private: float values[#maxiter] int i int seed complex pk int i2 complex c complex func Iterate(complex pz) if @av==0 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+@ap*@af(values[i2])+c elseif @av==1 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+a^2+c elseif @av==2 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==3 pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 a=pk pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+a^2+c elseif @av==4 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+@ap*@af(values[i2])+c elseif @av==5 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2+@ap*@af(values[i2]) pz=pz^2+pk^2+c elseif @av==6 pz=@pzp1*pz+@pzp2 pk=@pkp1*pk+@pkp2+@ap*@af(values[i2]) pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c else pz=@pzp1*pz+@pzp2+@ap*@af(values[i2]) pk=@pkp1*pk+@pkp2 pk=@bp1*fn3(pk/pz)+@bp2 pz=pz^2+pk^2+c endif i2=i2+1 return pz return pk endfunc default: title="Aleator M Bivar 2" int param version caption="Version" default=100 visible=@version<100 endparam param av caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param sp caption="Start Parameter" default=(0.1,0) endparam param bp1 caption="Bivar Parameter 1" default=(1,0) endparam param bp2 caption="Bivar Parameter 2" default=(0,0) endparam func fn3 caption="Bivar Function" default=ident() endfunc func pf caption="Pixel Function" default=ident() endfunc param pzp1 caption="Z Parameter 1" default=(0.7,0) endparam param pzp2 caption="Z Parameter 2" default=(-0.7,0) endparam param pkp1 caption="K Parameter 1" default=(0.7,0) endparam param pkp2 caption="K Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorVorfumglace(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @mj==0 fPixel=pz c=@pf(fpixel) pz=@sp else pz=@pf(pz) c=@p4 endif i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c elseif @alp==1 pz=@zp1*pz+@zp2-@ap*@af(values[i2]) pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c elseif @alp==2 pz=@zp1*pz+@zp2 pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2-@ap*@af(values[i2]) pz=(pz+@ap*@af(values[i2])^2)+c elseif @alp==3 pz=@zp1*pz+@zp2 pz=@p1*(pz-@ap*@af(values[i2]))^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c elseif @alp==4 pz=@zp1*pz+@zp2 pz=@p1*pz^2*((pz-@ap*@af(values[i2]))^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c elseif @alp==5 pz=@zp1*pz+@zp2 pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*(pz-@ap*@af(values[i2]))^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c else pz=@zp1*pz+@zp2 pz=@p1*pz^2*(pz^@p5-@p3)/(1-@p3*pz^@p5)+@p2 pz=(pz+@ap*@af(values[i2])^2)+c-@ap*@af(values[i2]) endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator Vorfumglace" int param version caption="Version" default=100 visible=@version<100 endparam param mj caption="M/J" enum="M""J" endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=12345678 endparam param sp caption="Start Parameter" default=(0,0) visible=@mj==0 endparam param p1 caption="Vorfumglace Parameter 1" default=(1,0) endparam param p2 caption="Vorfumglace Parameter 2" default=(0,0) endparam param p3 caption="Vorfumglace Parameter 3" default=(1.5,0) endparam param p5 caption="Vorfumglace Parameter 4" default=3 endparam param p4 caption="Julia Seed" default=(0.4,0) visible=@mj==1 endparam func pf caption="Pixel function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_AleatorX2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c) endif elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c) endif elseif @alp==2 pz=@zp1*pz+@zp2 if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif elseif @alp==3 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js)+@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c)+@ap*@af(values[i2]) endif elseif @alp==5 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js)+@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c)+@ap*@af(values[i2]) endif else pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1i)/(pz+1i))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1i)/(u+1i))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="j""M" default=1 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1.67,0) visible=@jm==0 endparam param p1 caption="X Parameter 1" default=(0.85,0) endparam param p2 caption="X Parameter 2" default=(0.4,0) endparam param cp1 caption="Pixel Parameter 1" default=(1,0) visible=@jm==1 endparam param cp2 caption="Pixel Parameter 2" default=(1,0) visible=@jm==1 endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile if @jm==0 pz=@pf(pz) c=@js else pz=@sp c=@pf(fpixel) endif i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c) endif elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c) endif elseif @alp==2 pz=@zp1*pz+@zp2 if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif elseif @alp==3 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js)+@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c)+@ap*@af(values[i2]) endif elseif @alp==5 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js)+@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c)+@ap*@af(values[i2]) endif else pz=@zp1*pz+@zp2+@ap*@af(values[i2]) if @jm==0 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@js) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@Js)-@ap*@af(values[i2]) else u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+@cp1*c) pz=(1-@p2)*pz+@p2*(pz^2*((u-1)/(u+1))^@pow2+@cp2*c)-@ap*@af(values[i2]) endif endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="j""M" default=1 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(1.67,0) visible=@jm==0 endparam param p1 caption="X Parameter 1" default=(-2.43,0) endparam param p2 caption="X Parameter 2" default=(0.63,0) endparam param cp1 caption="Pixel Parameter 1" default=(1,0) visible=@jm==1 endparam param cp2 caption="Pixel Parameter 2" default=(1,0) visible=@jm==1 endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@pf(pz) c=@js i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c) elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c) elseif @alp==2 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)-@ap*@af(values[i2]) elseif @alp==3 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)-@ap*@af(values[i2]) elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)+@ap*@af(values[i2]) elseif @alp==5 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)+@ap*@af(values[i2]) elseif @alp==6 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)+@ap*@af(values[i2]) elseif @alp==7 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz+@ap*@af(values[i2]))^2*((pz-1)/(pz+1))^@pow1+c) pz=(1-@p2)*pz+@p2*((pz-@ap*@af(values[i2]))^2*((u-@p3)/(1-@p3*u))^@pow2+c) elseif @alp==8 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz+@ap*@af(values[i2]))^2*((pz-1)/(pz+1))^@pow1+c) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c) elseif @alp==9 pz=@zp1*pz+@zp2-@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)-@ap*@af(values[i2]) elseif @alp==10 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)+@ap*@af(values[i2]) elseif @alp==11 pz=@zp1*pz-@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c)+@ap*@af(values[i2]) else pz=@zp1*pz-@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*(pz^2*((pz-1)/(pz+1))^@pow1+c)+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*(pz^2*((u-@p3)/(1-@p3*u))^@pow2+c) endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 4" int param version caption="Version" default=100 visible=@version<100 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12""13" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param js caption="Julia Seed" default=(1.67,0) endparam param p1 caption="X Parameter 1" default=(-0.33,0) endparam param p2 caption="X Parameter 2" default=(0.63,0) endparam param p3 caption="X Parameter 3" default=(1.67,0) endparam param pow1 caption="Exponent 1" default=2 endparam param pow2 caption="Exponent 2" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorX5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp c=@pf(fpixel) i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=1+@zp1*pz+@zp2 u=1.33*pz-0.33*(pz^2+c)+@ap*@af(values[i2]) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c) elseif @alp==1 pz=1+@zp1*pz+@zp2+@ap*@af(values[i2]) u=1.33*pz-0.33*(pz^2+c) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c) elseif @alp==2 pz=1+@zp1*pz+@zp2 u=1.33*pz-0.33*(pz^2+c)+@ap*@af(values[i2]) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c)-@ap*@af(values[i2]) elseif @alp==3 pz=1+@zp1*pz+@zp2+@ap*@af(values[i2]) u=1.33*pz-0.33*(pz^2+c)+@ap*@af(values[i2]) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c)-@ap*@af(values[i2]) elseif @alp==4 pz=1+@zp1*pz+@zp2+@ap*@af(values[i2]) u=1.33*pz-0.33*(pz^2+c)+@ap*@af(values[i2]) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c)+@ap*@af(values[i2]) elseif @alp==5 pz=1+@zp1*pz+@zp2+@ap*@af(values[i2]) u=1.33*pz-0.33*(pz^2+c) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c)+@ap*@af(values[i2]) else pz=1+@zp1*pz+@zp2 u=1.33*pz-0.33*(pz^2+c) pz=1.55*pz-0.55*(pz^2*((u-1.67)/(1-1.67*u))^2+c)+@ap*@af(values[i2]) endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 5" int param version caption="Version" default=100 visible=@version<100 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(0,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_AleatorX6(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=@sp c=@pf(fpixel) i2=0 return pz endfunc complex func Iterate(complex pz) if @alp==0 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u)) elseif @alp==1 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz)) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u)) elseif @alp==2 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))-@ap*@af(values[i2]) elseif @alp==3 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))-@ap*@af(values[i2]) elseif @alp==4 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+(@p3+1)*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))+@ap*@af(values[i2]) elseif @alp==5 pz=@zp1*pz+@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz)) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))+@ap*@af(values[i2]) elseif @alp==6 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*((pz^2+(@p3+0.6)*c/pz)) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))+@ap*@af(values[i2]) elseif @alp==7 pz=@zp1*pz+@zp2-@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))-@ap*@af(values[i2]) elseif @alp==8 pz=@zp1*pz+@zp2 u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))+@ap*@af(values[i2]) elseif @alp==9 pz=@zp1*pz+@zp2-@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+@p3*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u))+@ap*@af(values[i2]) else pz=@zp1*pz-@zp2+@ap*@af(values[i2]) u=(1-@p1)*pz+@p1*((pz^2+(@p3+0.6)*c/pz))+@ap*@af(values[i2]) pz=(1-@p2)*pz+@p2*((u^2+@p4*c/u)) endif i2=i2+1 return pz endfunc private: float values[#maxiter] int i int seed int i2 complex c default: title="Aleator X 6" int param version caption="Version" default=100 visible=@version<100 endparam param alp caption="Aleator Variant" enum="1""2""3""4""5""6""7""8""9""10""11" endparam param ap caption="Aleator Parameter" default=(1,0) endparam func af caption="Aleator Function" default=ident() endfunc param seed caption="Random Seed" default=1234567 endparam param sp caption="Start Parameter" default=(-1,0) endparam param p1 caption="X Parameter 1" default=(0.5,0) endparam param p2 caption="X Parameter 2" default=(0.5,0) endparam param p3 caption="X Parameter 3" default=(0.5,0) endparam param p4 caption="X Parameter 4" default=(1.25,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_Exp(-|z|)Variations(common.ulb:GradientColoring) { ;Try log, sin or arctan transfer functions public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 fpixel=pz endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) if @Fs=="sin" pz=sin(pz) elseif @Fs=="sinh" pz=sinh(pz) elseif @Fs=="asin" pz=asin(pz) elseif @Fs=="asinh" pz=asinh(pz) elseif @Fs=="cos" pz=cos(pz) elseif @Fs=="cosh" pz=cosh(pz) elseif @Fs=="acos" pz=acos(pz) elseif @Fs=="acosh" pz=acosh(pz) elseif @Fs=="tan" pz=tan(pz) elseif @Fs=="tanh" pz=tanh(pz) elseif @Fs=="atan" pz=atan(pz) elseif @Fs=="atanh" pz=atanh(pz) elseif @Fs=="cotan" pz=cotan(pz) elseif @Fs=="cotanh" pz=cotanh(pz) elseif @Fs=="sqr" pz=sqr(pz) elseif @Fs=="sqrt" pz=sqrt(pz) elseif @Fs=="log" pz=log(pz) elseif @Fs=="exp" pz=exp(pz) elseif @Fs=="abs" pz=abs(pz) elseif @Fs=="cabs" pz=cabs(pz) elseif @Fs=="conj" pz=conj(pz) elseif @Fs=="flip" pz=flip(pz) elseif @Fs=="ident" pz=ident(pz) elseif @Fs=="recip" pz=recip(pz) elseif @Fs=="versin" pz=1-cos(pz) elseif @Fs=="aversin" pz=acos(1-pz) elseif @Fs=="haversin" pz=(1-cos(pz))/2 elseif @Fs=="ahaversin" pz=2*asin(sqrt(pz)) elseif @Fs=="coversin" pz=1-sin(pz) elseif @Fs=="acoversin" pz=asin(1-pz) elseif @Fs=="hacoversin" pz=(1-sin(pz))/2 elseif @Fs=="vercos" pz=1+cos(pz) elseif @Fs=="avercos" pz=acos(1+pz) elseif @Fs=="havercos" pz=(1+cos(pz))/2 elseif @Fs=="ahavercos" pz=2*acos(sqrt(pz)) elseif @Fs=="covercos" pz=1+sin(pz) elseif @Fs=="acovercos" pz=asin(1+pz) elseif @Fs=="hacovercos" pz=(1+sin(pz))/2 elseif @Fs=="acotan" pz=atan(1/(pz)) elseif @Fs=="acotanh" pz=atanh(1/(pz)) elseif @Fs=="sec" pz=1/cos(pz) elseif @Fs=="sech" pz=1/cosh(pz) elseif @Fs=="asec" pz=acos(1/pz) elseif @Fs=="asech" pz=acosh(1/pz) elseif @Fs=="cosec" pz=1/sin(pz) elseif @Fs=="cosech" pz=1/sinh(pz) elseif @Fs=="acosec" pz=asin(1/pz) elseif @Fs=="acosech" pz=asinh(1/pz) elseif @Fs=="exsec" pz=1/cos(pz)-1 elseif @Fs=="aexsec" pz= acos(1/(pz+1)) elseif @Fs=="excosec" pz=1/sin(pz)-1 elseif @Fs=="aexcosec" pz=asin(1/(pz+1)) elseif @Fs=="crd" pz=2*sin(pz/2) elseif @Fs=="acrd" pz=2*asin(pz/2) elseif @Fs=="gd" pz=asin(tanh(pz)) elseif @Fs=="agd" pz=asinh(tan(pz)) elseif @Fs=="sinc" pz=sin(pz)/(pz) elseif @Fs=="sinhc" pz=sinh(pz)/(pz) elseif @Fs=="cosc" pz=cos(pz)/(pz) elseif @Fs=="coshc" pz=cosh(pz)/(pz) elseif @Fs=="tanc" pz=tan(pz)/(pz) elseif @Fs=="tanhc" pz=tanh(pz)/(pz) elseif @Fs=="cotanc" pz=cotan(pz)/(pz) elseif @Fs=="cotanhc" pz=cotanh(pz)/(pz) elseif @Fs=="secc" pz=1/(pz*cos(pz)) elseif @Fs=="sechc" pz=1/(pz*cosh(pz)) elseif @Fs=="cosecc" pz= 1/(pz*sin(pz)) elseif @Fs=="cosechc" pz=1/(pz*sinh(pz)) elseif @Fs=="cube" pz=pz^3 elseif @Fs=="cuberoot" pz=pz^(1/3) elseif @Fs=="colog" pz=-log(pz) elseif @Fs=="logit" pz= log(pz/(1-pz)) elseif @Fs=="expit" pz=1/(1+exp(-pz)) elseif @Fs=="gauss" pz=exp(-sqr(pz)) elseif @Fs=="softplus" pz=log(1+exp(pz)) elseif @Fs=="primecount" pz=pz/log(pz) elseif @Fs=="sqr+" pz=sqr(pz)+pz elseif @Fs=="cube+" pz=pz^3+sqr(pz)+pz elseif @Fs=="sin+" pz=sin(pz)+pz elseif @Fs=="cos+" pz=cos(pz)+pz elseif @Fs=="tan+" pz=tan(pz)+pz elseif @Fs=="cotan+" pz=cotan(pz)+pz elseif @Fs=="sec+" pz=1/cos(pz)+pz elseif @Fs=="cosec+" pz=1/sin(pz)+pz elseif @Fs=="sin*" pz=sin(pz)*pz elseif @Fs=="cos*" pz=cos(pz)*pz elseif @Fs=="tan*" pz=tan(pz)*pz elseif @Fs=="cotan*" pz=cotan(pz)*pz elseif @Fs=="sec*" pz=pz/cos(pz) elseif @Fs=="cosec*" pz=pz/sin(pz) elseif @Fs=="loglog" pz=log(log(pz)) elseif @Fs=="sinsin" pz=sin(sin(pz)) elseif @Fs=="coscos" pz=cos(cos(pz)) elseif @Fs=="+pixel" pz=pz+fpixel elseif @Fs=="-pixel" pz=pz-fpixel elseif @Fs=="*pixel" pz=pz*fpixel elseif @Fs=="/pixel" pz=pz/fpixel elseif @Fs=="(sqr-pixel)/(+pixel)" pz=(sqr(pz)-pixel)/(pz+pixel) elseif @Fs=="(sqr+pixel)/(-pixel)" pz=(sqr(pz)+pixel)/(pz-pixel) elseif @Fs=="(sqr-pixel)/(+pixel)+pixel" pz=(sqr(pz)-pixel)/(pz+pixel)+pixel elseif @Fs=="(sqr+pixel)/(-pixel)+pixel" pz=(sqr(pz)+pixel)/(pz-pixel)+pixel elseif @Fs=="(sqr-pixel)/(+pixel)-pixel" pz=(sqr(pz)-pixel)/(pz+pixel)-pixel elseif @Fs=="(sqr+pixel)/(-pixel)-pixel" pz=(sqr(pz)+pixel)/(pz-pixel)-pixel elseif @Fs=="+pixel+sqr(pixel)" pz=pz+pixel+sqr(pixel) elseif @Fs=="+pixel-sqr(pixel)" pz=pz+pixel-sqr(pixel) elseif @Fs=="-pixel+sqr(pixel)" pz=pz-pixel+sqr(pixel) elseif @Fs=="-pixel-sqr(pixel)" pz=pz-pixel-sqr(pixel) elseif @Fs=="ceil" pz=ceil(pz) elseif @Fs=="floor" pz=floor(pz) elseif @Fs=="trunc" pz=trunc(pz) else pz=round(pz) endif if @S==true pz=abs(pz) else pz=pz endif pz=@zp1*pz+@zp2 float x=real(pz) float y=imag(pz) if @V=="Astroid" pz=x^(2/3)+y^(2/3)-@p1^(2/3) elseif @V=="Bean Curve" pz=x^4+x^2*y^2+y^4-x*(x^2+y^2) elseif @V=="Bicorn" pz=y^2*(@p1^2-x^2)-(x^2+2*@p1*y-@p1^2)^2 elseif @V=="Bifolium" pz=(x^2+y^2)^2-4*@p1*x*y^2 elseif @V=="Bow Curve" pz=x^4-x^2*y+y^3 elseif @V=="Butterfly Curve" pz=x^6+y^6-x^2 elseif @V=="Cardioid" pz=(x^2+y^2-2*@p1*x)^2-4*@p1^2*(x^2+y^2) elseif @V=="Cartesian Oval" pz=((1-@p1^2)*(x^2+y^2)+2*@p1^2*@p1*x+@p3^2-@p1^2*@p1^2)^2-4*@p3^2*(x^2+y^2) elseif @V=="Cassinian Oval" pz=((x-@p1)^2+y^2)*((x+@p1)^2+y^2)-@p1^4 elseif @V=="Catenary" pz=y-@p1*cosh(x/@p1) elseif @V=="Cayley's Sextic" pz=4*(x^2+y^2-@p1*x)^3-27*@p1^2*(x^2+y^2)^2 elseif @V=="Cissoid of Diocles" pz=(x^2+y^2)*x-2*@p1*y^2 elseif @V=="Cochleoid" pz=(x^2+y^2)*atan(y/x)-@p1*y elseif @V=="Conchoid of de Sluze" pz=@p1*(x-@p1)*(x^2+y^2)-@p1*x^2 elseif @V=="Conchoid of Nicomedes" pz=(x-@p1)^2*(x^2+y^2)-@p1^2*x^2 elseif @V=="Cornoid" pz=-4*@p1^6+3*@p1^2*x^4+x^6+8*@p1^4*y^2-6*@p1^2*x^2*y^2+3*x^4*y^2-5*@p1^2*y^4+3*x^2*y^4+y^6 elseif @V=="Deltoid" pz=(x^2+y^2)^2-8*(@p1-0.5)*x*(x^2-3*y^2)+18*(@p1-0.5)^2*(x^2+y^2)-27*(@p1-0.5)^4 elseif @V=="Devil's Curve" pz=y^2*(y^2-@p1^2)-x^2*(x^2-@p1^2) elseif @V=="Durer's Conchoid" pz=2*y^2*(x^2+y^2)-2*@p1*y^2*(x+y)+y^2*(@p1^2-3*@p1^2)-@p1^2*x^2+2*@p1^2*@p1*(x+y)+@p1^2*(@p1^2-@p1^2) elseif @V=="Eight Curve" pz=x^4-@p1^2*(x^2-y^2) elseif @V=="Ellipse" pz=x^2/@p1^2+y^2/@p1^2-1 elseif @V=="Folium" pz=(x^2+y^2)*(x*(x+@p1)+y^2)-4*@p1*x*y^2 elseif @V=="Folium of Descartes" pz=x^3+y^3-3*@p1*x*y elseif @V=="Hyperbola" pz=x^2/@p1^2-y^2/@p1^2-1 elseif @V=="Kampyle of Eudoxus" pz=@p1^2*x^4-@p1^4*(x^2+y^2) elseif @V=="Kappa Curve" pz=x^2*(x^2+y^2)-@p1^2*y^2 elseif @V=="Kieroid" pz=y^2*(x-@p1)^2+x^2*(x-@p1)^2-@p3^2*x^2 elseif @V=="Lemniscate of Bernoulli" pz=(x^2+y^2)^2-2*@p1^2*(x^2-y^2) elseif @V=="Limacon of Pascal" pz=(x^2+y^2-2*@p1*x)^2-@p1^2*(x^2+y^2) elseif @V=="Nephroid" pz=(x^2+y^2-4*(@p1-0.5)^2)^3-108*(@p1-0.5)^4*y^2 elseif @V=="Newton's Diverging Parabolas" pz=@p1*y^2-x*(x^2-2*@p1*x+@p3) elseif @V=="Oblique Strophoid" pz=y*(x^2+y^2)-@p1*(x^2-y^2)-2*@p1*x*y elseif @V=="Parabola" pz=y-@p1*x^2-@p1*x-@p3 elseif @V=="Pear-Shaped Quartic" pz=@p1^2*y^2-x^3*(@p1-x) elseif @V=="Pearls of Sluze" pz=y^@p1-@p1*x^@p3*(@p4-x)^@p5 elseif @V=="Quadrifolium" pz=(x^2+y^2)^3-4*@p1^2*x^2*y^2 elseif @V=="Right Strophoid" pz=y^2-x^2*(@p1-x)/(@p1+x) elseif @V=="Serpentine Curve" pz=x^2*y+@p1^2*y-@p1*@p1*x elseif @V=="Spiric Section" pz=(x^2+y^2-@p1^2+@p1^2+@p3^2)^2-4*@p1^2*(x^2+@p3^2) elseif @V=="Superellipse" pz=cabs(x/@p1)^@p3+cabs(y/@p1)^@p3-1 elseif @V=="Trident Curve" pz=@p1*x^3+@p1*x^2+@p3*x+@p4-x*y elseif @V=="Trifolium" pz=(x^2+y^2)*(y^2+x*(x+@p1))-4*@p1*x*y^2 elseif @V=="Trisectrix of Maclaurin" pz=y^2*(@p1+x)-x^2*(3*@p1-x) elseif @V=="Tschirnhaus’s Cubic" pz=3*@p1*y^2-x*(x-@p1)^2 elseif @V=="Witch of Agnesi" pz=y*(x^2+@p1^2)-@p1^3 elseif @V=="Cat Map" pz=(2*x+y)%1+flip((x+y)%1) elseif @V=="Chip" pz=y-(x/cabs(x))*cos(sqr(log(abs(@p1*x-@p3))))*atan(sqr(log(abs(@p3*x-@p1))))+flip(@p1-x) elseif @V=="Clifford" pz=sin(@p1*y)+@p3*cos(@p1*x)+flip(sin(@p1*x)+@p4*cos(@p1*y)) elseif @V=="de Jong" pz=sin(@p1*y)-cos(@p1*x)+flip(sin(@p3*x)-cos(@p4*y)) elseif @V=="Duffing" pz=y+flip(-@p1*x+@p1*y-y^3) elseif @V=="Gingerbread" pz=1-y+cabs(x)+flip(x) elseif @V=="Gumowski-Mira" pz=y+@p1*(1-0.05*y^2)*y+@p1*x+2*(1-@p1)*x^2/(1+x^2)\ +flip(-x+@p1*(y+@p1*(1-0.05*y^2)*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))\ +2*(1-@p1)*(y+@p1*(1-0.05*y^2)*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))^2/\ (1+(y+@p1*(1-0.05*y^2)*y+@p1*x+2*(1-@p1)*x^2/(1+x^2))^2)) elseif @V=="Hamilton" pz=x+@p1*@p1*sin(2*pi*y)+flip(y-(@p1/@p1)*sin(2*pi*(x+@p1*@p1*sin(2*pi*y)))) elseif @V=="Henon" pz=1-@p1*x^2+y+flip(@p1*x) elseif @V=="Henon-Heiles" pz=-@p1*x-@p1*x*y+flip(-@p3*y-@p4*x^2+@p5*y^2) elseif @V=="Hopalong" pz=y-sqrt(cabs(@p1*x-@p3))*x/cabs(x)+flip(@p1-x) elseif @V=="Ikeda" pz=@p1+@p1*(x*cos(@p3-@p4/(x^2+y^2+1))-y*sin(@p3-@p4/(x^2+y^2+1))) \ +flip(@p1*(x*sin(@p3-@p4/(x^2+y^2+1))+y*cos(@p3-@p4/(x^2+y^2+1)))) elseif @V=="Kam Torus" pz=x*cos(@p1)+(x^2-y)*sin(@p1)+flip(x*sin(@p1)-(x^2-y)*cos(@p1)) elseif @V=="Kaplan-Yorke" pz=real(@p1)*x%1+flip(-@p1*y+cos(2*pi*x)) elseif @V=="Latoocarfian" pz=sin(@p1*y)+@p1*sin(@p1*x)+flip(sin(@p3*x)+@p4*sin(@p3*y)) elseif @V=="Lozi" pz=1-@p1*cabs(x)+y+flip(@p1*x) elseif @V=="Martin" pz=y+sin(x)+flip(@p1-x) elseif @V=="Popcorn" pz=x-@p1*sin(y+tan(@p1*y))+flip(y-@p1*sin(x+tan(@p1*x))) elseif @V=="Quadruptwo" pz=y-(x/cabs(x))*sin(log(abs(@p1*x-@p3)))*atan(sqr(log(abs(@p3*x-@p1))))+flip(@p1-x) elseif @V=="Standard Map" pz=x+@p1*y-@p1+(@p3/(2*pi))*sin(2*pi*x)+flip(@p1*y-@p1+(@p3/(2*pi))*sin(2*pi*x)) elseif @V=="Threeply" pz=y-(x/cabs(x))*(abs(sin(x)*cos(@p1)+@p1-x*sin(@p1+@p1+@p3)))+flip(@p3-x) elseif @V=="Tinkerbell" pz=x^2-y^2+@p1*x+@p1*y+flip(2*x*y-@p3*x+@p4*y) elseif @V=="Ushiki" pz=(@p1-x-@p1*y)*x+flip((@p3-y-@p4*x)*y) elseif @V=="Van der Pol" pz=@p1*(x-x^3/3-y)+flip(x/@p1) elseif @V=="Volterra-Lotka" pz=@p1*x-@p1*x*y+flip(-@p3*y+@p4*x*y) elseif @V=="OM1" pz=(x^2-y^2)*(x^2+y^2)^2-2*@p1*x*y*(x-@p1^2) elseif @V=="OM2" pz=@p1*sin(x^2+y^2)+@p1*x*(x^2-y^2)-2*@p1*x*y*(@p1^2-@p1^2) elseif @V=="OM3" pz=sin(x)^3+sin(y)^3-@p1 elseif @V=="OM4" pz=((@p1*@p1-x)^2+(@p1-y)^2)/@p3^2-1 elseif @V=="OM5" pz=@p1*y-@p1/(x*cos(x))+@p3/(x*cos(y)) elseif @V=="OM6" pz=((@p1*@p1-x*y)^3+(@p1*@p3-(X^2+y^2)^2)) elseif @V=="OM7" pz=y^2+x^2-((x+(@p3*(x-@p1))/sqrt((x-@p1)^2+(y-@p1)^2))-(y+(@p3*(y-@p1))/sqrt((x-@p1)^2+(y-@p1)^2))) elseif @V=="OM8" pz=x^2-4*@p1*y*(x^2+y^2)+y^3*@p1^2*(x^2-y^2)^4 elseif @V=="OM9" pz=y-x*(x^4-@p1)*(x^2+y^2)^2 elseif @V=="OM10" pz=(x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))+flip((x%(2*pi))+(y%(2*pi))+@p1*sin(2*pi*(x%(2*pi)))-(x%(2*pi))) elseif @V=="OM11" pz=x-y-cotan(x)*(@p1*x^2+@p1*y^2)+flip(x+y-cotan(y)*(@p3*x^2+@p4*y^2)) elseif @V=="OM12" pz=x+@p1*@p1*sin(2*pi*y)+flip(y-(@p1/@p1)*sin(2*pi*(x+@p1*@p1*2*pi*y))) elseif @V=="OM13" pz=x+@p1*@p1*cotan(2*pi*y)+flip(y-(@p1/@p1)*cotan(2*pi*(x+@p1*@p1*cotanh(2*pi*y)))) elseif @V=="OM14" pz=x+@p1*@p1*cos(2*pi*y)+flip(y-(@p1/@p1)*cos(2*pi*(x+@p1*@p1*asinh(2*pi*y)))) elseif @V=="OM15" pz=x+y+(@p1/2*pi)*sin(2*pi*x)+flip(x+y+(@p1/2*pi)*sin(2*pi*x)-x) elseif @V=="OM16" pz=sin(y)+flip(sin(x)+y*(@p1-y^2)) elseif @V=="OM17" pz=sin(@p1*y)+(sin(@p1*x))^2+(sin(@p1*y))^3+flip(sin(@p1*x)+(sin(@p1*y))^2+(sin(@p1*x))^3) elseif @V=="OM18" pz=sin(@p1*x)-tan(@p1*y)+flip(tan(@p3*x)+sin(@p4*y)) elseif @V=="OM19" pz=(@p1*tan(y)-@p1)/(@p1*tan(x)+@p1)+flip((@p1*tan(x)-@p1)/(@p1*tan(y)+@p1)) elseif @V=="OM20" pz=sin(@p1*y)-@p3*tan(@p1*x)+flip(sin(@p1*x)-@p4*tan(@p1*y)) endif a=a+exp(-cabs(pz)) endfunc float func ResultIndex(complex pz) ;m_Solid=true if@solid if @invert if a<@sca index=@adj*a else m_Solid=true endif else if a>=@sca index=@adj*a else m_Solid=true endif endif else index=@adj*a endif return index endfunc private: float a complex fpixel float index default: title="Exp(-|z|) Variations" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" enum="Astroid""Bean Curve""Bicorn""Bifolium""Bow Curve""Butterfly Curve""Cardioid""Cartesian Oval""Cassinian Oval""Catenary"\ "Cayley's Sextic""Cissoid of Diocles""Cochleoid""Conchoid of de Sluze""Conchoid of Nicomedes""Cornoid""Deltoid"\ "Devil's Curve""Durer's Conchoid""Eight Curve""Ellipse""Folium""Folium of Descartes""Hyperbola""Kampyle of Eudoxus""Kappa Curve""Kieroid"\ "Lemniscate of Bernoulli""Limacon of Pascal""Nephroid""Newton's Diverging Parabolas""Oblique Strophoid""Parabola""Pear-Shaped Quartic"\ "Pearls of Sluze""Quadrifolium""Right Strophoid""Serpentine Curve""Spiric Section""Superellipse""Trident Curve""Trifolium"\ "Trisectrix of Maclaurin""Tschirnhaus’s Cubic""Witch of Agnesi""Cat Map""Chip""Clifford""de Jong""Duffing""Gingerbread""Gumowski-Mira""Hamilton"\ "Henon""Henon-Heiles""Hopalong""Ikeda""Kam Torus""Kaplan-Yorke""Latoocarfian""Lozi""Martin""Popcorn"\ "Quadruptwo""Standard Map""Threeply""Tinkerbell""Ushiki""Van der Pol""Volterra-Lotka""OM1""OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15"\ "OM16""OM17""OM18""OM19""OM20" endparam param p1 caption="Variant Parameter 1" default=(1,0) visible=@V=="Astroid" || @V=="Bicorn" || @V=="Bifolium" || @V=="Cardioid" || @V=="Catenary" || @V=="Cartesian Oval" || @V=="Cassinian Oval" \ || @V=="Cayley's Sextic" || @V=="Cissoid of Diocles" || @V=="Cochleoid" || @V=="Conchoid of de Sluze" || @V=="Conchoid of Nicomedes" \ || @V=="Cornoid" || @V=="Deltoid" || @V=="Devil's Curve" || @V=="Durer's Conchoid" || @V=="Eight Curve" || @V=="Ellipse" || @V=="Folium" \ || @V=="Folium of Descartes" || @V=="Hyperbola" || @V=="Kampyle of Eudoxus" || @V=="Kappa Curve" || @V=="Kieroid" || @V=="Lemniscate of Bernoulli" \ || @V=="Limacon of Pascal" || @V=="Nephroid" || @V=="Newton's Diverging Parabolas" || @V=="Oblique Strophoid" || @V=="Parabola" \ || @V=="Pear-Shaped Quartic" || @V=="Pearls of Sluze" || @V=="Quadrifolium" || @V=="Right Strophoid" \ || @V=="Serpentine Curve" || @V=="Spiric Section" || @V=="Superellipse" || @V=="Trident Curve" \ || @V=="Trifolium" || @V=="Trisectrix of Maclaurin" || @V=="Tschirnhaus’s Cubic" || @V=="Witch of Agnesi" || @V=="Chip" || @V=="Clifford" || @V=="de Jong" || @V=="Duffing" || @V=="Gumowski-Mira" \ || @V=="Hamilton" || @V=="Henon" || @V=="Henon-Heiles" || @V=="Hopalong" || @V=="Ikeda" || @V=="Kam Torus" || @V=="Kaplan-Yorke" || @V=="Latoocarfian" || @V=="Lozi" || @V=="Martin" || @V=="Popcorn" || @V=="Quadruptwo" \ || @V=="Standard Map" || @V=="Threeply" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Van der Pol" || @V=="Volterra-Lotka" || @V=="OM1" || @V=="OM2" || @V=="OM3" || @V=="OM4" || @V=="OM5" \ || @V=="OM6" || @V=="OM7" || @V=="OM8" || @V=="OM9" || @V=="OM10" || @V=="OM11" || @V=="OM12" || @V=="OM13" || @V=="OM14" || @V=="OM15" \ || @V=="OM16" || @V=="OM17" || @V=="OM18" || @V=="OM19" || @V=="OM20" endparam param p2 caption="Variant Parameter 2" visible=@V=="Cartesian Oval" || @V=="Cassinian Oval" || @V=="Conchoid of de Sluze" || @V=="Conchoid of Nicomedes" || @V=="Devil's Curve" \ || @V=="Durer's Conchoid" || @V=="Ellipse" || @V=="Folium" || @V=="Gumowski-Mira" || @V=="Hyperbola" \ || @V=="Kampyle of Eudoxus" || @V=="Kieroid" || @V=="Limacon of Pascal" || @V=="Newton's Diverging Parabolas" \ || @V=="Oblique Strophoid" || @V=="Parabola" || @V=="Pear-Shaped Quartic" || @V=="Serpentine Curve" \ || @V=="Spiric Section" || @V=="Superellipse" || @V=="Trident Curve" \ || @V=="Chip" || @V=="Clifford" || @V=="de Jong" || @V=="Duffing" || @V=="Hamilton" || @V=="Henon" || @V=="Henon-Heiles" || @V=="Hopalong" \ || @V=="Ikeda" || @V=="Kaplan-Yorke" || @V=="Latoocarfian" || @V=="Lozi" || @V=="Pearls of Sluze" || @V=="Popcorn" || @V=="Quadruptwo" \ || @V=="Standard Map" || @V=="Threeply" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="OM2" || @V=="OM4" || @V=="OM5" || @V=="OM6" \ || @V=="OM7" || @V=="OM11" || @V=="OM12" \ || @V=="OM13" || @V=="OM14" || @V=="OM17" || @V=="OM18" || @V=="OM19" || @V=="OM20" endparam param p3 caption="Variant Parameter 3" visible=@V=="Cartesian Oval" || @V=="Kieroid" || @V=="Newton's Diverging Parabolas" || @V=="Parabola" || @V=="Pearls of Sluze" \ || @V=="Spiric Section" || @V=="Superellipse" || @V=="Trident Curve" || @V=="Chip" || @V=="Clifford" || @V=="de Jong" || @V=="Henon-Heiles" \ || @V=="Hopalong" || @V=="Ikeda" || @V=="Latoocarfian" || @V=="Quadruptwo" \ || @V=="Standard Map" || @V=="Threeply" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="OM4" || @V=="OM5" || @V=="OM6" \ || @V=="OM7" || @V=="OM11" || @V=="OM18" || @V=="OM20" endparam param p4 caption="Variant Parameter 4" visible=@V=="Trident Curve" || @V=="Clifford" || @V=="de Jong" || @V=="Ikeda" || @V=="Latoocarfian" || @V=="Pearls of Sluze" \ || @V=="Henon-Heiles" || @V=="Tinkerbell" || @V=="Ushiki" || @V=="Volterra-Lotka" || @V=="OM11" || @V=="OM18" || @V=="OM20" endparam param p5 caption="Variant Parameter 5" default=(1,0) visible=@V=="Pearls of Sluze" || @V=="Henon-Heiles" endparam param Fs caption="Z Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel"\ "*pixel""/pixel""(sqr-pixel)/(+pixel)""(sqr+pixel)/(-pixel)""(sqr-pixel)/(+pixel)+pixel"\ "(sqr+pixel)/(-pixel)+pixel""(sqr-pixel)/(+pixel)-pixel""(sqr+pixel)/(-pixel)-pixel"\ "+pixel+sqr(pixel)""+pixel-sqr(pixel)""-pixel+sqr(pixel)""-pixel-sqr(pixel)""ceil""floor""trunc""round" default=22 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param adj caption="Adjustment" default=1.0 endparam param S caption="Symmetrize" default=false endparam param solid caption="Solid Color" default=false endparam param sca caption="Solid Color Adjustment" default=0.21 visible=@solid==true endparam param invert caption="Invert" default=false visible=@solid==true endparam } class OM_Attraktoren(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*@zf(pz)+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ac*(pz-1i)/(pz+1i) if @v=="Bedhead" x=sin(real(pz)*imag(pz)/(-@p2))*imag(pz)+cos(@p1*real(pz)-imag(pz)) y=real(pz)+sin(imag(pz))/(-@p2) elseif @v=="Belykh 1" float d=real(@p3)*(2*real(pz)-1)+2*imag(pz)-1 if d<=0 x=(@p1+0.65+0.65i)*real(pz) y=(@p2-2.65-0.65i)*imag(pz) else x=(@p1+0.65+0.65i)*(real(pz)-1)+1 y=(@p2-2.65-0.65i)*(imag(pz)-1)+1 endif elseif @v=="Belykh 2" if real(pz)>=0 x=1-(@p1-0.35+2i)*real(pz)+@p2*imag(pz) else x=-1-(@p1-0.35+2i)*real(pz)+@p2*imag(pz) endif y=real(pz) elseif @v=="Bogdanov" y=imag(pz)+@p1*imag(pz)+@p2*real(pz)*(real(pz)-1)+(@p3-1.25-1i)*real(pz)*imag(pz) x=real(pz)+y elseif @v=="Bogdanov-Takens" x=imag(pz) y=-@p1-@p2*real(pz)+real(pz)^2-real(pz)*imag(pz) elseif @v=="Borrelli" x=real(pz)-imag(pz)-(@p1-0.3+1i)*real(pz)*(real(pz)^2+imag(pz)^2)+(@p2-1+1i) y=real(pz)+imag(pz)-@p3*imag(pz)*(real(pz)^2+imag(pz)^2)+(@p4-1) elseif @v=="Brusselator" x=1-(@p2+1)*real(pz)+@p1*imag(pz)*real(pz)^2 y=@p2*real(pz)-@p1*imag(pz)*real(pz)^2 elseif @v=="Buckling Column Model" x=imag(pz) y=(@p1*real(pz)^3+@p2*real(pz)+@p3*imag(pz))/@p4 elseif @v=="Burgers" x=@p1*real(pz)-imag(pz)^2 y=@p2*imag(pz)+real(pz)*imag(pz) elseif @v=="Business Cycle" x=real(pz)+imag(pz) y=@p1*imag(pz)-(@p1+1)*imag(pz)^3-(@p2-2+0.5i)*real(pz) elseif @v=="Cathala 1" x=@p1*real(pz)+imag(pz) y=-@p2+real(pz)^2 elseif @v=="Cathala 2" x=(1-(@p1+1))*real(pz)+imag(pz) y=(@p1+1)*@p2*real(pz)+@p3*imag(pz)-(@p1+1)*real(pz)^3 elseif @v=="Cathala 3" x=imag(pz) y=@p1*real(pz)+imag(pz)-real(pz)^3 elseif @v=="Chip" x=imag(pz)-(real(pz)/cabs(real(pz)))*cos(sqr(log(abs((@p2-0.5+1i)*real(pz)-@p3))))\ *atan(sqr(log(abs(@p3*real(pz)-(@p2-0.5+1i))))) y=@p1-real(pz) elseif @v=="Cremona 1" x=real(pz)*cos(@p1+0.15+1i)-(imag(pz)-real(pz)^2)*sin(@p1+0.15+1i) y=real(pz)*sin(@p1+0.15+1i)-(imag(pz)-real(pz)^2)*cos(@p1+0.15+1i) elseif @v=="Cremona 2" x=real(pz)*cos(@p1)+imag(pz)*sin(@p1) y=-real(pz)*sin(@p1)+imag(pz)*cos(@p1)+(real(pz)*cos(@p1)+imag(pz)*sin(@p1))^2 elseif @v=="Cross Chaotic" x=1-(@p1+1.5+0.5i)*imag(pz)^2 y=cos(@p2*acos(real(pz))) elseif @v=="Damped Pendulum" x=imag(pz) y=-@p1*sin(real(pz))-@p2*imag(pz) elseif @v=="de Jong" x=sin((@p1+1i)*imag(pz))-cos((@p2+1.25i)*real(pz)) y=sin(@p3*real(pz))-cos(@p4*imag(pz)) elseif @v=="Dissipative Standard Map" x=real(pz)+(@p1-1.65-0.4i)*imag(pz)+(@p2-1)+(@p3-0.8)*sin(2*pi*real(pz)) y=(@p1-1.65-0.4i)*imag(pz)+(@p2-1)+(@p3-0.8)*sin(2*pi*real(pz)) elseif @v=="Duffing 1" x=imag(pz) y=real(pz)-real(pz)^3-@p1*imag(pz)+@p2 elseif @v=="Duffing 2" x=imag(pz) y=-@p1*real(pz)-@p2*real(pz)^3+@p3 elseif @v=="Duffing 3" x=imag(pz) y=-(@p1-2+1i)*real(pz)-((@p2-(@p1-2+1i))/2)*(cabs(real(pz)+1)-cabs(real(pz)-1))-@p3*imag(pz)+@p4 elseif @v=="Duffing Parametric" x=imag(pz) y=-real(pz)-real(pz)^3+(-@p1+@p2*real(pz)^2+@p3*@p4*real(pz))*imag(pz)+@p4*@p5 elseif @v=="Duffing Quintic 1" x=imag(pz) y=@p1*real(pz)-@p2*real(pz)^3-@p3*real(pz)^5+@p4 elseif @v=="Duffing Quintic 2" x=imag(pz) y=-@p1*real(pz)-@p2*real(pz)^3-@p3*real(pz)^5+@p4*((@p5-2-0.5i)*(1-real(pz)^2)*imag(pz)+@p6) elseif @v=="Duffing Septic" x=imag(pz) y=-(@p1+1i)*real(pz)+@p2*real(pz)^3-@p3*real(pz)^5-@p4*real(pz)^7+@p5 elseif @v=="Fitzhugh-Nagumo 1" x=@p1*real(pz)*(real(pz)-@p2)*(1-real(pz))-imag(pz)+@p3 y=@p4*(real(pz)-imag(pz)) elseif @v=="Fitzhugh-Nagumo 2" x=real(pz)-real(pz)^3/3-imag(pz)+@p1 y=@p2*(real(pz)-@p3*imag(pz)-@p4) elseif @v=="Garrote-Mira" x=imag(pz)+@p1*(1-0.05*imag(pz)^2)+(@p2-4)*real(pz)+2*(5-@p2)*real(pz)^2/(1+real(pz)^2) y=-real(pz)+(@p2-4)*x+2*(5-@p2)*x^2/(1+x^2) elseif @v=="Ghost" x=sin(@p1*imag(pz))-@p2*real(pz) y=@p3*real(pz)-cos(@p4*imag(pz)) elseif @v=="Gingerbread" x=1-(@p1+0.2)*imag(pz)+@p2*cabs(real(pz)) y=real(pz) elseif @v=="Grebogi" x=real(pz)+(@p1-2+1i)*sin(2*real(pz))-@p2*sin(4*real(pz))-imag(pz)*sin(real(pz)) y=(@p3+2)*cos(real(pz)) elseif @v=="Gumowski-Mira 1" x=imag(pz)+(@p2-1)*imag(pz)*(1-(@p3-0.95)*imag(pz)^2)+(@p1+0.5)*real(pz)+2*(1-(@p1+0.5))*real(pz)^2/(1+real(pz)^2) y=-real(pz)+(@p1+0.5)*x+2*(1-(@p1+0.5))*x^2/(1+x^2) elseif @v=="Gumowski-Mira 2" x=imag(pz)+(@p2-1)*imag(pz)*(1-(@p3-0.95)*imag(pz)^2)+(@p1+1)*real(pz)+(1-(@p1+1))*real(pz)^2*exp((1-real(pz)^2)/4) y=-real(pz)+(@p1+1)*x+(1-(@p1+1))*x^2*exp((1-x^2)/4) elseif @v=="Gumowski-Mira 3" x=(1-@p1)*real(pz)+imag(pz) if real(pz)<-0.5 y=imag(pz)+(-2*@p1*real(pz)-0.9*@p1) elseif cabs(real(pz))<0.5 y=imag(pz)-@p1*real(pz)/5 else y=imag(pz)+(-2*@p1*real(pz)+0.9*@p1) endif elseif @v=="Hamilton" x=real(pz)+(@p1-0.725)*(@p2+0.3)*sin(2*pi*imag(pz)) y=imag(pz)-((@p1-0.725)/(@p2+0.3))*sin(2*pi*(real(pz)+(@p1-0.725)*(@p2+0.3)*sin(2*pi*imag(pz)))) elseif @v=="Henon 1" x=1-@p1*real(pz)^2+imag(pz) y=@p2*real(pz) elseif @v=="Henon 2" x=-(imag(pz)-real(pz)^2)*sin(2*pi/(@p1+0.5))+real(pz)*cos(2*pi/(@p1+0.5)) y=(imag(pz)-real(pz)^2)*cos(2*pi/(@p1+0.5))+real(pz)*sin(2*pi/(@p1+0.5)) elseif @v=="Henon 3" x=imag(pz) y=-(@p2+0.5)^(-1)*(1-@p1*imag(pz)^2-(@p2+0.5)*real(pz)) elseif @v=="Henon 4" x=imag(pz)+@p1*cos(pi*real(pz)/2)-1 y=@p2*real(pz) elseif @v=="Henon Dual" x=@p1*real(pz)-@p2*imag(pz)+@p3*real(pz)^3 y=real(pz) elseif @v=="Henon-Heiles 1" x=-@p1*real(pz)-@p2*real(pz)*imag(pz) y=-@p3*imag(pz)-@p4*real(pz)^2+@p5*imag(pz)^2 elseif @v=="Henon-Heiles 2" x=imag(pz) y=-@p1*real(pz)-@p2*real(pz)^2+@p3 elseif @v=="Hopalong 1" x=imag(pz)-sqrt(cabs((@p2+0.5i)*real(pz)-(@p3-1)))*((real(pz))/cabs(real(pz))) y=(@p1-1)-real(pz) elseif @v=="Hopalong 2" x=imag(pz)+sqrt(cabs((@p2+0.5i)*real(pz)-(@p3-1))) y=(@p1-1)-real(pz) elseif @v=="Hopalong 3" x=imag(pz)+sin((@p2+0.5i)*real(pz)-(@p3-1)) y=(@p1-1)-real(pz) elseif @v=="Hopalong 4" x=imag(pz)-sqrt(abs((@p2+0.5i)*real(pz)-(@p3-1)))*((real(pz))/cabs(real(pz))) y=(@p1-1)-real(pz) elseif @v=="Hopalong 5" x=imag(pz)+sqrt(abs((@p2+0.5i)*real(pz)-(@p3-1))) y=(@p1-1)-real(pz) elseif @v=="Hopalong 6" x=imag(pz)+sqrt(cabs(@p2*real(pz)-@p3))*((real(pz))/cabs(real(pz))) y=@p1-real(pz) elseif @v=="Hopalong 7" x=imag(pz)-1-sqrt(abs(@p2*real(pz)-1-@p3))*((real(pz)-1)/cabs(real(pz)-1)) y=@p1-real(pz)-1 elseif @v=="Horsthemke-Lefever" x=@p1*real(pz)*(1-real(pz)/@p3)-@p2*real(pz)*imag(pz) y=-@p2*real(pz)*imag(pz)+@p4*(@p5-imag(pz)) elseif @v=="Ikeda" x=@p1+@p2*(real(pz)*cos((@p3+1.35-0.6i)-@p4/(real(pz)^2+imag(pz)^2+1))-imag(pz)*sin((@p3+1.35-0.6i)-@p4/(real(pz)^2+imag(pz)^2+1))) y=@p2*(real(pz)*sin((@p3+1.35-0.6i)-@p4/(real(pz)^2+imag(pz)^2+1))+imag(pz)*cos((@p3+1.35-0.6i)-@p4/(real(pz)^2+imag(pz)^2+1))) elseif @v=="Ilhem-Amel 1" x=real(pz)^3+(@p1-3)*real(pz)+@p2+imag(pz) y=-@p3*real(pz) elseif @v=="Ilhem-Amel 2" x=(@p4-2.5-0.75i)*real(pz)^3+@p1*real(pz)+@p2+@p5*imag(pz) y=(@p3-1.5)*real(pz)+@p6*imag(pz) elseif @v=="Jiang" x=imag(pz) y=real(pz)+(@p1+0.5+0.5i)*real(pz)^2+@p2*imag(pz)^2-@p3*real(pz)*imag(pz)-@p4 elseif @v=="Jiang-Liu-Wei-Zhang" x=imag(pz) y=@p1*real(pz)+(@p2-1.667-1.198i)*imag(pz)+(@p3-1.64-0.47i)*real(pz)^2+(@p4-0.013-0.2344i)*imag(pz)^2+(@p5-1.615+0.04i)*real(pz)*imag(pz)+@p6 elseif @v=="Joshi-Blackmore" x=@p1*exp(-real(pz)^2-imag(pz)^2)*(real(pz)*cos(2*pi*(@p2-3.1+0.05i))-imag(pz)*sin(2*pi*(@p2-3.1+0.05i))) y=@p1*exp(-real(pz)^2-imag(pz)^2)*(real(pz)*sin(2*pi*(@p2-3.1+0.05i))+imag(pz)*cos(2*pi*(@p2-3.1+0.05i))) elseif @v=="Kam Torus" x=real(pz)*cos(@p1+0.5+0.5i)+(real(pz)^2-imag(pz))*sin(@p1+0.5+0.5i) y=real(pz)*sin(@p1+0.5+0.5i)-(real(pz)^2-imag(pz))*cos(@p1+0.5+0.5i) elseif @v=="Kan" x=@p3*sin(imag(pz)+sin(@p1*imag(pz))) y=@p4*sin(real(pz)+sin((@p2-0.4-1.4i)*real(pz))) elseif @v=="Khovanov-Luchinsky" x=imag(pz) y=-@p1*real(pz)+@p2*imag(pz)-imag(pz)^3+@p3 elseif @v=="Kolmogorov-Volterra" x=(real(pz)*((@p1-2.1)-real(pz)^2)-(@p2+2)*real(pz)*imag(pz))/(1+real(pz)^2) y=(@p3*real(pz)^2-1)*imag(pz)/(1+real(pz)^2) elseif @v=="Limit Cycle" x=real(pz)-imag(pz)-(@p1+0.4+0.35i)*real(pz)*(real(pz)^2+imag(pz)^2)+(@p3-1.7-0.6i) y=real(pz)+imag(pz)-@p2*imag(pz)*(real(pz)^2+imag(pz)^2)+@p4 elseif @v=="Lozi" x=1+imag(pz)-@p1*cabs(real(pz)) y=@p2*real(pz) elseif @v=="Lozi Mod" x=1+(@p1+1)*(cabs(real(pz))-imag(pz)^2)+imag(pz) y=(@p2-2i)*real(pz) elseif @v=="MacMillan" x=imag(pz) y=-real(pz)-2*@p1*imag(pz)/(1-imag(pz)^2)+@p2*imag(pz) elseif @v=="Marotto-Lorenz" x=(1-@p1*real(pz)-@p2*imag(pz))*(@p1*real(pz)+@p2*imag(pz)) y=real(pz) elseif @v=="Martin" x=imag(pz)+sin(real(pz)) y=@p1-real(pz) elseif @v=="Maynard Smith" x=imag(pz) y=-@p1*imag(pz)+(@p2+0.5)-real(pz)^2 elseif @v=="Mira 1" x=(1-(@p1+0.6))*real(pz)+imag(pz) y=(@p1+0.6)*@p2*real(pz)+@p3*imag(pz)-(@p1+0.6)*real(pz)^3 elseif @v=="Mira 2" x=real(pz)^2-imag(pz)^2+@p1*real(pz)+@p2 y=2*real(pz)*imag(pz)-5*@p1*imag(pz)/2+(@p3+0.75-0.75i) elseif @v=="Mira 3" x=@p2*imag(pz)-@p1*real(pz)+2*(1+@p1)*real(pz)^2/(1+real(pz)^2) y=-real(pz)-@p1*(@p2*imag(pz)-@p1*real(pz)+2*(1+@p1)*real(pz)^2/(1+real(pz)^2))\ +2*(1+@p1)*(@p2*imag(pz)-@p1*real(pz)+2*(1+@p1)*real(pz)^2/(1+(@p2*imag(pz)\ -@p1*real(pz)+2*(1+@p1)*real(pz)^2/(1+real(pz)^2))^2))^2/(1+real(pz)^2) elseif @v=="Mira 4" x=@p1*real(pz)+imag(pz) y=-@p2+real(pz)^2 elseif @v=="Mira Mod" x=(@p2-1i)*imag(pz)+(@p1+1i)*real(pz)-(3-(@p1+1i))/((@p1+1i)+exp((@p2-1i)*real(pz))) y=-real(pz)+(@p1+1i)*x-(3-(@p1+1i))/((@p1+1i)+exp((@p2-1i)*x)) elseif @v=="Nowicki-Swirszcz" x=3*real(pz)*((real(pz)-imag(pz))^2-(@p1-1-3i))/((3*real(pz)-imag(pz))^2+@p2) y=imag(pz)*(imag(pz)^2+2*real(pz)*imag(pz)-3*real(pz)^2-@p3)/((3*real(pz)-imag(pz))^2-@p4) elseif @v=="Multifold Henon" x=1-@p1*sin(real(pz))-@p2*imag(pz) y=real(pz) elseif @v=="Oscillating Chemical Reaction" x=((@p1-1-1i)-real(pz)-4*real(pz)*imag(pz))/(1+real(pz)^2) y=@p2*real(pz)*(1-imag(pz))/(1+real(pz)^2) elseif @v=="Pendulum" x=imag(pz) y=-sin(real(pz))+@p1 elseif @v=="Pendulum Morozov" x=imag(pz) y=-sin(real(pz))+imag(pz)*(@p1+@p2*cos(@p3*real(pz)))*(-@p4) elseif @v=="Pharaoh" x=-imag(pz)-@p1*cos(real(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p3 y=real(pz)+@p2*cos(imag(pz))*sin(1-real(pz)^2-imag(pz)^2)+@p4 elseif @v=="Pickover 1 (Latoocarfian)" x=sin(@p1*imag(pz))+@p2*sin(@p1*real(pz)) y=sin(@p3*real(pz))+@p4*sin(@p3*imag(pz)) elseif @v=="Pickover 2" x=sin(@p1*imag(pz))+sqr(sin(@p1*real(pz))) y=sin(@p2*real(pz))+sqr(sin(@p2*imag(pz))) elseif @v=="Pickover 3" x=sin(@p1*imag(pz))+(sin(@p1*real(pz)))^2+(sin(@p1*real(pz)))^3 y=sin(@p2*real(pz))+(sin(@p2*imag(pz)))^2+(sin(-@p3*imag(pz)))^3 elseif @v=="Pickover 4" x=abs(sin((@p1-1.75)*imag(pz)))+(sin((@p1-1.75)*real(pz)))^2 y=abs(sin((@p2-1i)*real(pz)))+(sin((@p2-1i)*imag(pz)))^2 elseif @v=="Pickover 5" x=sin((@p1+1i)*imag(pz))+@p2*cos((@p1+1i)*real(pz)) y=sin(@p3*real(pz))+@p4*cos(@p3*imag(pz)) elseif @v=="Pickover 6 (Popcorn 1)" x=real(pz)-@p1*sin(imag(pz)+tan((@p2-1+1i)*imag(pz))) y=imag(pz)-@p1*sin(real(pz)+tan((@p2-1+1i)*real(pz))) elseif @v=="Pickover 7 (Popcorn 2)" x=@p1*sin(imag(pz)+tan((@p2-1+1i)*imag(pz))) y=@p1*sin(real(pz)+tan((@p2-1+1i)*real(pz))) elseif @v=="Plaid" x=(@p1-2)+(@p2-2)*imag(pz)+(@p3-0.54)*imag(pz)^2+@p4*imag(pz)^3+@p5*imag(pz)^4 y=@p6+@p7*real(pz)+@p8*real(pz)^2+@p9*real(pz)^3+@p10*real(pz)^4 elseif @v=="Polyharmonic Pendulum" x=imag(pz) y=-@p1*sin(real(pz))-@p2*sin(3*real(pz))+@p3*sin(@p4) elseif @v=="Provenzale-Balmforth" x=(@p1*imag(pz)+@p2)*real(pz)*(1-real(pz)) y=4*imag(pz)*(1-imag(pz)) elseif @v=="Quadruptwo" x=imag(pz)-(real(pz)/cabs(real(pz)))*sin(log(abs(@p2*real(pz)-@p3)))*atan(sqr(log(abs(@p3*real(pz)-@p2)))) y=-@p1-real(pz) elseif @v=="Rayleigh" x=imag(pz) y=-(real(pz)+@p2*imag(pz)^3-@p1*imag(pz))/@p3 elseif @v=="Rulkov" x=@p1/(1+real(pz)^2)+imag(pz) y=imag(pz)-@p2*real(pz)-(@p3-0.85+0.5i) elseif @v=="Separatrix" x=real(pz)+sin(2*pi*imag(pz)) y=(imag(pz)+real(@p1-0.5)*log(cabs(real(pz)))/(2*pi))%1 elseif @v=="Sine-Sine" x=(@p1+0.9i)*sin(real(pz))-@p2*sin(2*imag(pz)) y=@p3*real(pz) elseif @v=="Sprott 1" x=(@p1-2-1i)+(@p2-1+0.5i)*real(pz)+(@p3-0.5i)*real(pz)^2+(@p4-1-0.5i)*real(pz)*imag(pz)+@p5*imag(pz)+@p6*imag(pz)^2 y=@p7+@p8*real(pz)+@p9*real(pz)^2+@p10*real(pz)*imag(pz)+@p11*imag(pz)+@p12*imag(pz)^2 elseif @v=="Sprott 2" x=(1+(@p1+0.25-0.4i)*(@p2-0.75-0.4i))*real(pz)-(@p2-0.75-0.4i)*real(pz)*imag(pz) y=(1-(@p2-0.75-0.4i))*imag(pz)+(@p2-0.75-0.4i)*real(pz)^2 elseif @v=="Sprott-Elhadj" x=(@p1-0.5-1.5i)*real(pz)/(1+imag(pz)^2) y=real(pz)+(@p2+1i)*imag(pz) elseif @v=="Standard Map" x=real(pz)+(@p1-0.6-2.6i)*sin(imag(pz)) y=imag(pz)+x elseif @v=="Stommel Thermohaline 1" x=(@p1-0.1+0.25i)-real(pz)-real(pz)*(real(pz)-imag(pz)) y=@p2-(@p3-0.15-0.7i)*imag(pz)-imag(pz)*(real(pz)-imag(pz)) elseif @v=="Stommel Thermohaline 2" x=@p1*(1-real(pz))-(@p2-1+1.5i)*real(pz)*cabs(imag(pz)-(@p3+0.05)*real(pz)) y=1-imag(pz)-(@p2-1+1.5i)*imag(pz)*cabs(imag(pz)-(@p3+0.05)*real(pz)) elseif @v=="Strelkova-Anishchenko" x=1-@p1*real(pz)^2+@p2*(imag(pz)-real(pz)) y=1-@p1*imag(pz)^2+@p2*(real(pz)-imag(pz)) elseif @v=="Svensson" x=(@p1+1i)*sin((@p2+1i)*real(pz))-sin(@p3*imag(pz)) y=@p4*cos((@p2+1i)*real(pz))-cos(@p3*imag(pz)) elseif @v=="Symplectic" x=(@p1-1.05-0.9i)+(@p2-2)*real(pz)+(@p3-2)*real(pz)^2+(@p4-2)*real(pz)^3+@p5*real(pz)^4+@p6*real(pz)^5+imag(pz) y=@p7-real(pz) elseif @v=="Tartan" x=-@p1*imag(pz)-(@p2-0.25) y=@p3-real(pz)^2 elseif @v=="Threeply" x=imag(pz)-(real(pz)/cabs(real(pz)))*(abs(sin(real(pz))*cos(@p1)+(@p2-1.5)-real(pz)*sin(@p1+(@p2-1.5)+@p3))) y=@p3-real(pz) elseif @v=="Tinkerbell" x=real(pz)^2-imag(pz)^2+@p1*real(pz)+@p2*imag(pz) y=2*real(pz)*imag(pz)-@p3*real(pz)-@p4*imag(pz) elseif @v=="Ushiki" x=(@p1-real(pz)-@p2*imag(pz))*real(pz) y=(@p3-imag(pz)+@p4*real(pz))*imag(pz) elseif @v=="Van der Pol 1" x=@p1*(real(pz)-real(pz)^3/3-imag(pz)) y=real(pz)/@p1 elseif @v=="Van der Pol 2" x=imag(pz) y=@p1*(1-real(pz)^2)*imag(pz)-real(pz) elseif @V=="Volterra" x=exp(imag(pz))-1+@p2*(exp(real(pz))-1)*exp(imag(pz))/(@p2+exp(2*real(pz))) y=@p1*(1-exp(real(pz)))-@p1*@p2*(exp(real(pz))-1)*exp(real(pz))/(@p2+exp(2*real(pz))) elseif @V=="Volterra-Lotka 1" x=@p1*real(pz)-@p2*real(pz)*imag(pz) y=-@p3*imag(pz)+@p4*real(pz)*imag(pz) elseif @V=="Volterra-Lotka 2" x=-@p1*real(pz)*(1-real(pz)+@p2*imag(pz)) y=@p3*imag(pz)*(1-imag(pz)-@p4*real(pz)) elseif @V=="Zaslavsky" x=(real(pz)+@p1*sin(imag(pz)))*cos(2*pi/(@p2-0.2))+imag(pz)*sin(2*pi/(@p2-0.2)) y=-(real(pz)+@p1*sin(imag(pz)))*sin(2*pi/(@p2-0.2))+imag(pz)*cos(2*pi/(@p2-0.2)) elseif @v=="Zaslavsky 2" float u=(1-exp(-real(@p3-1.4+0.75i)))/real(@p3-1.4+0.75i) x=(real(pz)+real(@p1-0.3)*(1+u*imag(pz))+real(@p2)*real(@p1-0.3)*u*cos(2*pi*real(pz)))%1 y=exp(-(@p3-1.4+0.75i))*(imag(pz)+@p2*cos(2*pi*real(pz))) elseif @v=="Zito" x=real(pz)*imag(pz)+@p1*real(pz)-imag(pz) y=real(pz)+imag(pz) elseif @v=="OM 1" x=@p1+imag(pz) y=@p2*real(pz)*(@p3+imag(pz)^2-real(pz)^2) elseif @v=="OM 2" x=(@p1-1-1i)+real(pz)+(@p2+0.9-0.15i)*sin(imag(pz)) y=1+real(pz)*(@p3*imag(pz)-@p4) elseif @v=="OM 3" x=2*imag(pz)-(@p1+0.45+0.1i)*imag(pz)^2+real(pz)^3 y=((@p2+0.25-1.3i)-0.5)*asin(real(pz))*imag(pz)^2+@p3 elseif @v=="OM 4" x=(@p1-2.1-0.85i)*cos(real(pz)-(@p2+0.4)*imag(pz)) y=real(pz)+@p3*exp(imag(pz)-(@p4+1)*cos(real(pz))) elseif @v=="OM 5" x=sin((@p1-2.7+0.2i)*imag(pz))-@p2*sin(real(pz))+(@p3+0.6-0.5i)*real(pz) y=sin((@p1-2.7+0.2i)*real(pz))-@p2*sin(imag(pz))+(@p4-1.2-0.35i)*imag(pz)^2 elseif @v=="OM 6" x=sin((@p1+1.2-0.65i)*imag(pz))-@p2*sin(imag(pz))+(@p3-1.6+0.2i)*real(pz)^2 y=sin((@p1+1.2-0.65i)*real(pz))-@p2*sin(real(pz))+@p4*imag(pz) elseif @v=="OM 7" x=(real(pz)-(@p1-0.6+2.4i)*imag(pz))*cos(pz)-@p2*imag(pz)*sin(pz) y=(real(pz)*(@p3+2.7+0.75i)*imag(pz))*sin(pz)+@p4*imag(pz)*cos(pz) elseif @v=="OM 8" x=1-(@p1-0.15+0.95i)*(real(pz))^2+imag(pz) y=-real(pz)-(real(pz))^3-(@p1-0.15+0.95i)*imag(pz)+(@p2-0.5+0.05i)*cos((@p3+1.75+1i)*imag(pz)) elseif @v=="OM 9" x=@p1*sin(real(pz))-tan(imag((@p3-0.75)*pz))-abs(real(pz)+flip(imag(pz))) y=-(@p2-0.15+0.47i)*tan(real(pz))+sin(imag(@p4*pz))+exp(real(pz)+flip(imag(pz))) elseif @v=="OM 10" x=@p1*imag(pz)*real(pz)+real(pz)^2 y=-@p2*real(pz)^2-@p3*real(pz)^3+imag(pz) elseif @v=="OM 11" x=conj(-(@p1-0.65-1i)*imag(pz)-1) y=-(@p2-1.95-0.6i)*abs((@p3-0.65i)*real(pz)-@p4*imag(pz))-1 elseif @v=="OM 12" x=(@p1+0.15+1.05i)*real(pz)+real(pz)*(imag(pz)-(@p2+0.5-0.585i)) y=abs(imag(pz))+(@p3-0.3-0.13i)*real(pz)*imag(pz)^2+(@p2+0.5-0.585i) elseif @v=="OM 13" x=(@p1-0.25-0.1i)*real(pz)+sqr(real(pz))*(imag(pz)-(@p2-0.55+0.5i)) y=sqr(imag(pz))+(@p3-2.2+0.4i)*real(pz)*imag(pz)^2+(@p2-0.55+0.5i) elseif @v=="OM 14" x=(@p1+0.05+0.25i)*real(pz)+real(pz)*imag(pz)^3 y=(@p2+0.325++0.075i)*sqr(real(pz)-imag(pz))-(@p3-0.5+0.7i)*real(pz)^4*imag(pz) elseif @v=="OM 15" x=(@p1+0.1-0.5i)*sqr(real(pz))+real(pz)*imag(pz)^3 y=(@p2-2.07+0.13i)*sqr(real(pz)-exp(imag(pz)))-(@p3-0.5+1.15i)*real(pz)^4*imag(pz) elseif @v=="OM 16" y=imag(pz)+(@p1-1.6-0.61i)*abs(imag(pz)+2*real(pz)-imag(pz)^2)+(@p2-0.08+1.12i)*real(pz)*(real(pz)-1)+(@p3+1.4+0.9i)*real(pz)*imag(pz)-imag(pz)^2 x=real(pz)+imag(pz) elseif @v=="OM 17" y=imag(pz)+(@p1-1.65+1.325i)*cos(abs(imag(pz)+2*real(pz)-imag(pz)^2))+@p2*real(pz)*(real(pz)-1)+@p3*real(pz)*imag(pz)-imag(pz)^2 x=sin(real(pz))+imag(pz) elseif @v=="OM 18" x=real(pz)-imag(pz)-@p1*real(pz)*(real(pz)^2+imag(pz)^2+real(pz)+imag(pz)) y=real(pz)+imag(pz)-@p3*imag(pz)*(real(pz)^2+imag(pz)^2)+@p2+real(pz)^2 elseif @v=="OM 19" x=(@p1-1.6+1.1i)*(imag(pz)-real(pz))+real(pz)*imag(pz) y=real(pz)*(@p2-real(pz)-imag(pz))-imag(pz)-@p3*(real(pz)+imag(pz)) elseif @v=="OM 20" x=(real(pz)-abs(imag(pz)))+@p3*cos(@p1*real(pz)) y=(@p4-0.425i)*cos((@p2+0.9+0.3i)*imag(pz))-(real(pz)-imag(pz)) elseif @v=="OM 21" x=-imag(pz)+(@p3-0.65-0.25i)*imag(pz)^2 y=(@p1-1.65-0.25i)*imag(pz)-((@p1-1.65-0.25i)+1)*real(pz)^3-(@p2-1.8+0.75i)*real(pz)+@p4*real(pz)^2 elseif @v=="OM 22" x=(@p1+1i)*(imag(pz)-real(pz)) y=real(pz)*((@p2-1+0.5i)-real(pz)*imag(pz)+(@p3-1+1.5i)*(real(pz)+flip(imag(pz))))-imag(pz) elseif @v=="OM 23" x=-imag(pz)-((@p2-1.25+0.5i)+(real(pz)-(@p3-2.2-0.2i))*(real(pz)+flip(imag(pz)))) y=real(pz)+@p1*imag(pz) elseif @v=="OM 24" x=-@p1*abs(real(pz)+imag(pz)) y=-imag(pz)-@p2*real(pz)*(@p3*real(pz)*imag(pz)+(@p4+1i)) elseif @v=="OM 25" x=imag(pz)-(@p1-1.75+1.75i)*real(pz)-abs(real(pz)) y=(@p2-0.5)*(real(pz)-imag(pz)-(@p3+0.3+2.5i)*real(pz)*imag(pz)) elseif @v=="OM 26" x=imag(pz)-@p1*real(pz)+@p2*real(pz)*imag(pz)^2 y=@p3*imag(pz)-real(pz)^2*imag(pz)+real(pz)*imag(pz) elseif @v=="OM 27" x=-@p1*(imag(pz)-real(pz))+@p2*real(pz)^2*imag(pz) y=@p3*real(pz)+(@p4-1.38-0.34i)*imag(pz)+real(pz)^2*imag(pz)+@p5 elseif @v=="OM 28" x=(1/(@p1+0.25i)-(@p2+1.25-1i))*real(pz)+2*real(pz)*imag(pz) y=-(@p1+0.25i)*imag(pz)-real(pz)^2 elseif @v=="OM 29" x=-@p1*real(pz)-(@p2+1+1.5i)*imag(pz)*(@p4*real(pz)-(@p5+0.35+0.3i)*real(pz)*imag(pz)+real(pz)^2*imag(pz)) y=-@p3*imag(pz)+real(pz)*(@p4*real(pz)-(@p5+0.35+0.3i)*real(pz)*imag(pz)+real(pz)^2*imag(pz)) elseif @v=="OM 30" x=-imag(pz)^2-((@p3-3.5+0.5i)*real(pz)*imag(pz)+real(pz)^2*imag(pz))^2-(@p1+0.4-0.025i)*real(pz)+(@p1+0.4-0.025i)*(@p2+1.1+0.43i) y=real(pz)*imag(pz)-(@p3-2.5+0.5i)*real(pz)*((@p3-3.5+0.5i)*real(pz)*imag(pz)+real(pz)^2*imag(pz))-imag(pz)+(@p4-0.95-0.8i) elseif @v=="OM 31" x=-@p1*real(pz)-(@p3-1.45-0.1i)*imag(pz)+(@p3-1.45-0.1i)*((@p2-0.55+1.45i)*real(pz)*imag(pz)\ -(@p3-1.45-0.1i)*real(pz)+(@p3-1.45-0.1i)*imag(pz)-real(pz)^2)+imag(pz)^2 y=-@p1*imag(pz)+(@p3-1.45-0.1i)*((@p2-0.55+1.45i)*real(pz)*imag(pz)-(@p3-1.45-0.1i)*real(pz)+(@p3-1.45-0.1i)*imag(pz)\ -real(pz)^2)+(@p3-1.45-0.1i)*real(pz)-((@p2-0.55+1.45i)*real(pz)*imag(pz)+(@p3-1.45-0.1i)*real(pz)-(@p3-1.45-0.1i)*imag(pz)+real(pz)^2)^2 elseif @v=="OM 32" x=@p1*imag(pz)+@p2*real(pz)+(@p3-1.4+0.9i)*imag(pz)*(((@p3-1.4+0.9i)+@p6)*real(pz)*imag(pz)) y=@p4*imag(pz)-(((@p3-1.4+0.9i)+@p6)*real(pz)*imag(pz))+(@p5-2+1i)*real(pz)*(((@p3-1.4+0.9i)+@p6)*real(pz)*imag(pz)) elseif @v=="OM 33" x=-@p1*real(pz)+imag(pz)+2*(@p3-0.85+1i)*imag(pz)*sqr(@p2*real(pz)^2*imag(pz)^2-(@p3-0.85+1i)*real(pz)*imag(pz))+@p5 y=-real(pz)-(@p4-0.45-0.6i)*imag(pz)+(@p3-0.85+1i)*real(pz)*atan(@p2*real(pz)^2*imag(pz)^2-(@p3-0.85+1i)*real(pz)*imag(pz)) elseif @v=="OM 34" x=abs(imag(pz))+(@p1-1) y=-sinh(real(pz))+imag(pz)/((@p2-0.8-0.5i)-imag(pz)^2) elseif @v=="OM 35" x=@p1*(imag(pz)-real(pz))+imag(pz)*(real(pz)*imag(pz)-@p3*flip(real(pz)+flip(imag(pz)))) y=@p2*real(pz)+imag(pz)-real(pz)*abs(real(pz)*imag(pz)-@p3*(real(pz)+flip(imag(pz)))) elseif @v=="OM 36" x=-real(pz)+(@p2-0.235-0.31i)*imag(pz)+imag(pz)^2*real(pz)+(@p1-0.75) y=-real(pz)-imag(pz)+(@p3-0.9-0.525i)*real(pz)*(imag(pz)-real(pz)) elseif @v=="OM 37" x=imag(pz)+(@p3-2.15+0.43i) y=@p4*(1-(real(pz)^2-(@p2+1.35+0.85i)*real(pz)*imag(pz)))*real(pz)-(@p1-0.5-0.4i)*abs(imag(pz)) elseif @v=="OM 38" x=(@p1-1.98-1.26i)*real(pz)+exp(imag(pz))+(@p3-1) y=-(@p2-0.43-0.23i)*imag(pz)+sqr(-(@p2-0.43-0.23i)*real(pz)*imag(pz)+sqr(real(pz))) elseif @v=="OM 39" x=(@p1-2.36-1.68i)*abs(imag(pz)-real(pz))+(@p2-1i)*asin(real(pz))*(real(pz)*imag(pz)-real(pz)^2)+(@p5-0.1-0.025i) y=@p3*flip(imag(pz))-real(pz)*(real(pz)*imag(pz)+@p4*real(pz)^2)+(@p6-0.225-0.64i) elseif @v=="OM 40" x=(@p1-0.938+0.235i)*sin(real(pz))-@p2*imag(pz)*(@p5*(real(pz)+imag(pz))+@p6*real(pz)*imag(pz)) y=(@p3-1.98-0.47i)*real(pz)+(@p4-0.575+2.815i)*imag(pz)-real(pz)*(@p5*(real(pz)-imag(pz))+@p6*real(pz)*imag(pz)) elseif @v=="OM 41" x=(@p1-0.38+0.79i)*real(pz)*abs((@p2+0.08+0.05i)-imag(pz))+(@p4-1.08-1.13i) y=-imag(pz)*((@p3-2.07+0.12i)-real(pz))/(@p1-0.38+0.79i)+@p5 elseif @v=="OM 42" x=real(pz)*tan(1-real(pz)/(@p1-1.055+0.6i))-((1-1/(@p1-1.055+0.6i))*((@p2-0.69-0.325i)+1))*imag(pz)*real(pz)/((@p2-0.69-0.325i)+real(pz)) y=((@p3-0.79-0.86i)*((@p2-0.69-0.325i)+1))*imag(pz)*real(pz)/exp((@p2-0.69-0.325i)+real(pz))-(@p3-0.79-0.86i)*imag(pz) elseif @v=="OM 43" x=-(@p1+0.85-0.1i)*(real(pz)*imag(pz))+@p4*tanh(real(pz))*cos(2*pi*imag(pz))+(@p3-1) y=(@p1+0.85-0.1i)*real(pz)-@p2*imag(pz)^2+imag(pz)+@p5 elseif @v=="OM 44" x=imag(pz)-real(pz)+(@p2-1) y=-(-(@p1-0.17+0.09i)+real(pz)*imag(pz)+sin(real(pz)*imag(pz)))*(@p4-1.21i)*cos(imag(pz))+(@p3-1.47-0.79i) elseif @v=="OM 45" x=(@p2-0.1+1.1i)*(imag(pz)-real(pz))+(@p1-1) y=(@p3+1.8+0.2i)*abs(real(pz))-@p4*real(pz)*(exp(real(pz)*imag(pz))-@p5*real(pz)*imag(pz)) elseif @v=="OM 46" x=real(pz)^3-(@p1+0.96+1.8i)*tan(imag(pz)) y=(@p2-0.625-1.145i)*sinh(real(pz))-imag(pz)^2+(@p3-0.55-0.15i) elseif @v=="OM 47" x=cos(real(pz))+sin(imag(pz))-(@p1-0.52+1.72i)*real(pz)+(@p2-1.15-2.97i)*real(pz)*imag(pz)+(@p3-1) y=@p4*real(pz) elseif @v=="OM 48" x=cos(real(pz)+cos(imag(pz)))-(@p1-1.75-0.35i)*real(pz)*imag(pz)+@p3*imag(pz)^2 y=(@p2-0.05-0.3i)*sin(imag(pz)+sin(real(pz)))-real(pz)^3+(@p4-1+0.15i) elseif @v=="OM 49" x=imag(pz)+abs((@p1-2.7-0.4i)*real(pz))+(@p2-1.5+0.75i) y=(@p3-1.6-0.65i)*real(pz)+tan(real(pz)*imag(pz))+(@p1-2.7-0.4i)*imag(pz) elseif @v=="OM 50" x=(@p1+0.25-0.625i)*(abs(real(pz)-imag(pz))-cos(real(pz)+imag(pz))) y=@p3*abs(real(pz)-imag(pz))-(@p2+0.6+0.1i)*imag(pz) elseif @v=="OM 51" x=(@p1-1.65+0.3i)*(abs(real(pz)-imag(pz))-exp(real(pz)*imag(pz)))+(@p2-0.75-0.05i) y=(@p3+0.05-0.25i)*abs(real(pz)+imag(pz))-1.5i*imag(pz) elseif @v=="OM 52" x=-(@p1-0.59-0.83i)*real(pz)-imag(pz)^2-(-(real(pz)+imag(pz))+@p3*imag(pz)*real(pz)+real(pz)*(-(real(pz)-imag(pz))))^2+(@p1-0.59-0.83i)*@p2 y=-imag(pz)+imag(pz)*real(pz)-@p3*real(pz)*(-(-(real(pz)-imag(pz)))+@p3*imag(pz)*real(pz)+real(pz)*(-(real(pz)+imag(pz))))+@p4 elseif @v=="OM 53" x=imag(pz)*((-2*(real(pz)+imag(pz))*((@p2-0.73+0.31i)+real(pz)*imag(pz)))-1+real(pz)^2)+@p1*real(pz)+(@p3-0.21+0.14i) y=real(pz)*(3*(-2*(real(pz)-imag(pz))*((@p2-0.73+0.31i)+real(pz)*imag(pz)))+1-real(pz)^2)+@p1*imag(pz) elseif @v=="OM 54" x=real(pz)*(((@p3+0.56-0.7i)+(@p4-0.67)*(real(pz)+imag(pz))-(real(pz)-imag(pz))^3/3-(1-@p5*(real(pz)+imag(pz)))*(real(pz)^2+imag(pz)^2)+@p6*(real(pz)-imag(pz))*real(pz)^3)-@p1)-(@p2+0.32)*imag(pz) y=imag(pz)*(((@p3+0.56-0.7i)+(@p4-0.67)*(real(pz)-imag(pz))-(real(pz)+imag(pz))^3/3-(1-@p5*(real(pz)-imag(pz)))*(real(pz)^2+imag(pz)^2)+@p6*(real(pz)+imag(pz))*real(pz)^3)-@p1)+(@p2+0.32)*real(pz) elseif @v=="OM 55" x=real(pz)*cos((@p3+(@p4+0.96-1.07i)*(real(pz)+imag(pz))-(real(pz)-imag(pz))^3/3-(1-(@p5-0.81+0.89i)*(real(pz)+imag(pz)))*(real(pz)^2+imag(pz)^2)+@p6*(real(pz)-imag(pz))*real(pz)^3)-@p1)-@p2*sqr(imag(pz)) y=imag(pz)*sin((@p3+(@p4+0.96-1.07i)*(real(pz)-imag(pz))-(real(pz)+imag(pz))^3/3-(1-(@p5-0.81+0.89i)*(real(pz)-imag(pz)))*(real(pz)^2+imag(pz)^2)+@p6*(real(pz)+imag(pz))*real(pz)^3)-@p1)+@p2*real(pz) elseif @v=="OM 56" x=@p1*real(pz)^3+@p2*sqrt(imag(pz)*real(pz))+(@p3-0.52-0.7i) y=(@p5-1.17+1.05i)*(imag(pz)-real(pz)^2)-@p6*real(pz)+(@p4+0.39-0.09i) elseif @v=="OM 57" x=(@p1-1.08+0.65i)*cos(real(pz)^3)+@p2*sin(imag(pz)*real(pz))+@p3 y=@p5*sin(imag(pz)-real(pz)^2)-@p6*cos(real(pz))+@p4 elseif @v=="OM 58" x=real(pz)*(@p1+(@p2-1.93+0.26i)*(real(pz)^2+imag(pz)^3))-(@p3-2.12+1.16i)*imag(pz) y=imag(pz)*((@p4-0.27-0.22i)+@p5*(real(pz)^2-imag(pz)^4))+@p6*real(pz) elseif @v=="OM 59" x=(@p1-0.7+0.78i)*real(pz)^3-(@p2-2.08+2.68i)*real(pz)^2*imag(pz)+(@p3-0.34-0.08i)*(imag(pz)^2-real(pz)) y=@p4*imag(pz)-(@p5-0.47+1.93i)*imag(pz)^4*real(pz)+(@p6-3.05+1.28i)*(real(pz)+imag(pz)) elseif @v=="OM 60" x=(@p1-2.45-1.15i)*sin(real(pz)-sin((@p2+0.22+0.42i)*imag(pz)))-imag(pz)^2+(@p3-2.12+0.31i) y=real(pz)+@p4*real(pz)*imag(pz)-@p5*sin(real(pz)) elseif @v=="OM 61" x=(imag(pz)-1i)/(imag(pz)+1i)-(@p1-0.27i)*real(pz)+(@p2+0.45-1.28i) y=(@p3-2.12-0.5i)*(real(pz)-1)/(real(pz)+1)+sqrt(real(pz))-(@p4+0.07-0.04i)*flip(imag(pz))^2 elseif @v=="OM 62" x=imag(pz)-(@p1-1.64+1.12i)*(real(pz)-1i)/(real(pz)+1i)+(@p2-0.2+0.18i) y=(imag(pz)-@p5)/(imag(pz)+@p5)+@p3*sin(@p4+sin(real(pz)^2-imag(pz)^2)) elseif @v=="OM 63" x=@p6*sin((@p1-3.44+0.96i)+sin((@p2-1.64-1.64i)+imag(pz)))-(real(pz)-@p3)/(real(pz)+@p3) y=(@p1-3.44+0.96i)+(@p2-1.64-1.64i)+real(pz)-@p5*imag(pz)+@p4 elseif @v=="OM 64" x=@p1*real(pz)-@p2*imag(pz)+sin(real(pz)+imag(pz))+@p3*real(pz)*imag(pz)^2 y=@p2*real(pz)-@p1*imag(pz)+cos(real(pz)-imag(pz))+(@p4-1.7+1.8i)*real(pz)*imag(pz)+(@p5-1.65-0.13i) elseif @v=="OM 65" x=(@p1-0.495-0.833i)*sin(@p2*sin((@p1-0.495-0.833i)*sin(@p2*sin((@p1-0.495-0.833i)*imag(pz)))))+(@p3+0.52-0.078i)*real(pz)*imag(pz)+@p4 y=real(pz)+@p5 elseif @v=="OM 66" x=(@p1+0.95+0.5i)*imag(pz)^2*(real(pz)-@p2)/(1-@p2*real(pz))+(@p3-0.6+1i) y=@p4*real(pz)+(@p5-1.4+0.85i)*real(pz)*imag(pz) elseif @v=="OM 67" x=(@p1-1.68-1.35i)*imag(pz)^3-sin(real(pz))+@p3*cabs(imag(pz)) y=real(pz)-(@p2-0.33-0.2i) elseif @v=="OM 68" x=@p1*tan(imag(pz))-real(pz)^2+(@p2-2.63+0.05i)*real(pz) y=real(pz)+@p3*(imag(pz)-real(pz))^3+(@p4-1) elseif @v=="OM 69" x=(@p1-1.68-1.96i)*imag(pz)*cabs(real(pz))+(@p4-0.05-0.13i)*imag(pz)^2 y=(@p2-0.73-0.42i)*real(pz)+cabs(imag(pz))+(@p3-0.29+0.05i) elseif @v=="OM 70" x=(@p1+0.16-0.13i)*real(pz)-@p2*imag(pz)+sqrt(imag(pz))+(@p3-1) y=@p2*real(pz)+(@p1+0.16-0.13i)*imag(pz)+exp(real(pz))+(@p4-1) elseif @v=="OM 71" x=(@p1-0.13+0.23i)*real(pz)+imag(pz)-cabs(real(pz))+cos(real(pz)*imag(pz)^2)-@p5*real(pz)^4+(@p2+0.26+0.56i) y=(@p2+0.26+0.56i)*imag(pz)^2-real(pz)^3+@p3*real(pz)*imag(pz)+@p6*abs(real(pz)^4*imag(pz)^3)+(@p4-2.65-1.1i) elseif @v=="OM 72" x=@p5*real(pz)*(1-real(pz))+2*imag(pz)+@p1*real(pz)*imag(pz)-real(pz)+@p2*imag(pz)^4+(@p3-0.21+0.29i) y=@p6*real(pz)*sin(2*pi*imag(pz))/(2*pi)+2*(@p4+0.25-0.17i)*real(pz)+imag(pz)-real(pz)^3 elseif @v=="OM 73" x=@p1*real(pz)*(1-real(pz))+(@p3-2.98-0.8i)*real(pz)+imag(pz) y=(@p2+3.25+1i)*real(pz)*sin(2*pi*imag(pz))/(2*pi)-(@p4-0.6-0.25i)+real(pz)^2 elseif @v=="OM 74" x=-imag(pz)+(@p1-0.599+0.876i)*real(pz)*tan(1-real(pz)^2-imag(pz)^2)+@p3-1 y=@p5*real(pz)+@p2*imag(pz)*sqr(1-real(pz)^2-imag(pz)^2)+(@p4-1.677+0.013i) elseif @v=="OM 75" x=real(pz)-imag(pz)-@p1*real(pz)*log(real(pz)^2+imag(pz)^2)+(@p3-0.964-0.469i) y=real(pz)+imag(pz)-(@p2-0.585-0.417i)*imag(pz)*sqr(real(pz)^2+imag(pz)^2)+@p4 elseif @v=="OM 76" x=(@p1-0.2i)*(1-imag(pz)^2)*real(pz)+(@p2-1-2i)*exp(imag(pz))+(@p5-1) y=(@p3+0.35+0.35i)*(1+real(pz)^2)*imag(pz)+(@p4+1.05+0.15i)*exp(real(pz))+(@p6-1) elseif @v=="OM 77" x=real(pz)*(@p1+(@p3-2.08-0.27i)*imag(pz)^2+@p5*real(pz))+@p7*imag(pz) y=imag(pz)*((@p2-1.42+0.95i)-(@p4+1.16-1.17i)*real(pz)^2-@p6*imag(pz))-@p7*real(pz) elseif @v=="OM 78" x=imag(pz)-tanh(cabs(@p2*real(pz)-@p3))*((real(pz))/cabs(real(pz))) y=(@p1-1.8)-real(pz) elseif @v=="OM 79" x=imag(pz)-tanh(flip((@p2-0.85)*real(pz)-(@p3+2.85)))*((real(pz))/cabs(real(pz))) y=@p1-real(pz) elseif @v=="OM 80" x=imag(pz)-recip(ident((@p2-0.4)*real(pz)-(@p3+1)))*((real(pz))/cabs(real(pz))) y=(@p1-2)-real(pz) elseif @v=="OM 81" x=imag(pz)-cotanh(sqrt((@p2+0.65)*real(pz)-@p3))*((real(pz))/sqrt(real(pz))) y=(@p1-0.2)-real(pz) elseif @v=="OM 82" x=imag(pz)-cos(sqrt((@p2+0.65)*real(pz)-@p3))*((real(pz))/sqrt(real(pz))) y=(@p1+1)-real(pz) elseif @v=="OM 83" x=imag(pz)-sin(ceil(@p2*real(pz)-@p3))*((real(pz))/ceil(real(pz))) y=(@p1+0.8)-real(pz) elseif @v=="OM 84" x=imag(pz)-(real(pz)/cabs(real(pz)))*(log(abs((@p2-1.33)*real(pz)-(@p3+0.08+0.45i))))*(log(abs((@p3+0.08+0.45i)*real(pz)-(@p2-1.33)))) y=-@p1-real(pz) elseif @v=="OM 85" x=imag(pz)-(real(pz)/cabs(real(pz)))*(log(abs((@p2-1.33)*real(pz)-(@p3+0.68))))*conj(sqrt(log(abs((@p3+0.68)*real(pz)-(@p2-1.33))))) y=-@p1-real(pz) elseif @v=="OM 86" x=real(pz)+(@p1-1.25)*(@p2+1.8)*abs(2*pi*imag(pz))+imag(pz)+(@p4+0.1-0.45i) y=imag(pz)-((@p1-1.25)/(@p2+1.8))*(2*pi*(real(pz)+(@p1-1.25)*(@p2+1.8)*(2*pi*imag(pz))))+(@p3-0.1+0.5i)*(1-real(pz)^2)*imag(pz)-real(pz) elseif @v=="OM 87" float d=real(@p3-1+0.1i)*(2*real(pz)-1)+2*imag(pz)-1 if d<=0 x=(1.65+0.65i)*flip(real(pz)) y=(-1.65-0.65i)*imag(pz)+@p1-1 else x=(1.65+0.65i)*(real(pz)-1)+@p2 y=(-1.65-0.65i)*(imag(pz)-1)+(@p3-1+0.1i) endif elseif @v=="OM 88" x=real(pz)-imag(pz)-(@p1-0.7-0.2i)*real(pz)*(real(pz)^2+imag(pz)^2)+@p3 y=-real(pz)+imag(pz)-@p2*imag(pz)*(real(pz)^2+imag(pz)^2)+@p4 elseif @v=="OM 89" x=(@p2-1i)*imag(pz)-(3-(@p1-0.35+1.651i))/((@p1-0.35+1.651i)+exp((@p2-1i)*real(pz))) y=-real(pz)+(@p1-0.35+1.651i)*x-(3-(@p1-0.35+1.651i))/((@p1-0.35+1.651i)+exp((@p2-1i)*x))+(@p3+0.35-2.25i)-1 else float d=real(pz) if d<0 x=imag(pz)-log(cotan((@p2-1-0.4i)*real(pz)-(@p3+1))) y=(@p1-2.25)-real(pz) else x=imag(pz)+log(cotan((@p2-1-0.4i)*real(pz)-(@p3+1))) y=(@p1-2.25)+real(pz) endif endif pz=x+flip(y) pz=pz+@app*@sf(fpixel) return pz endfunc private: complex fpixel default: title="Attraktoren" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Attraktor" enum="Bedhead""Belykh 1""Belykh 2""Bogdanov""Bogdanov-Takens""Borrelli""Brusselator""Buckling Column Model"\ "Burgers""Business Cycle""Cathala 1""Cathala 2""Cathala 3""Chip""Cremona 1"\ "Cremona 2""Cross Chaotic""Damped Pendulum""de Jong""Dissipative Standard Map""Duffing 1"\ "Duffing 2""Duffing 3""Duffing Parametric""Duffing Quintic 1""Duffing Quintic 2"\ "Duffing Septic""Fitzhugh-Nagumo 1""Fitzhugh-Nagumo 2""Garrote-Mira""Ghost"\ "Gingerbread""Grebogi""Gumowski-Mira 1""Gumowski-Mira 2""Gumowski-Mira 3""Hamilton"\ "Henon 1""Henon 2""Henon 3""Henon 4""Henon Dual""Henon-Heiles 1""Henon-Heiles 2""Hopalong 1"\ "Hopalong 2""Hopalong 3""Hopalong 4""Hopalong 5""Hopalong 6""Hopalong 7""Horsthemke-Lefever"\ "Ikeda""Ilhem-Amel 1""Ilhem-Amel 2""Jiang""Jiang-Liu-Wei-Zhang""Joshi-Blackmore""Kam Torus""Kan"\ "Khovanov-Luchinsky""Kolmogorov-Volterra""Limit Cycle""Lozi""Lozi Mod"\ "MacMillan""Marotto-Lorenz""Martin""Maynard Smith""Mira 1""Mira 2"\ "Mira 3""Mira 4""Mira Mod""Nowicki-Swirszcz""Multifold Henon"\ "Oscillating Chemical Reaction""Pendulum""Pendulum Morozov""Pharaoh""Pickover 1 (Latoocarfian)"\ "Pickover 2""Pickover 3""Pickover 4""Pickover 5""Pickover 6 (Popcorn 1)""Pickover 7 (Popcorn 2)"\ "Plaid""Polyharmonic Pendulum""Provenzale-Balmforth""Quadruptwo""Rayleigh""Rulkov"\ "Separatrix""Sine-Sine""Sprott 1""Sprott 2""Sprott-Elhadj""Standard Map"\ "Stommel Thermohaline 1""Stommel Thermohaline 2""Strelkova-Anishchenko"\ "Svensson""Symplectic""Tartan""Threeply""Tinkerbell""Ushiki""Van der Pol 1""Van der Pol 2"\ "Volterra""Volterra-Lotka 1""Volterra-Lotka 2""Zaslavsky""Zaslavsky 2""Zito"\ "OM 1""OM 2""OM 3""OM 4""OM 5""OM 6""OM 7""OM 8""OM 9""OM 10"\ "OM 11""OM 12""OM 13""OM 14""OM 15""OM 16""OM 17""OM 18""OM 19""OM 20""OM 21"\ "OM 22""OM 23""OM 24""OM 25""OM 26""OM 27""OM 28""OM 29""OM 30""OM 31""OM 32""OM 33"\ "OM 34""OM 35""OM 36""OM 37""OM 38""OM 39""OM 40""OM 41""OM 42""OM 43""OM 44""OM 45"\ "OM 46""OM 47""OM 48""OM 49""OM 50""OM 51""OM 52""OM 53""OM 54""OM 55""OM 56""OM 57"\ "OM 58""OM 59""OM 60""OM 61""OM 62""OM 63""OM 64""OM 65""OM 66""OM 67""OM 68""OM 69"\ "OM 70""OM 71""OM 72""OM 73""OM 74""OM 75""OM 76""OM 77""OM 78""OM 79""OM 80""OM 81"\ "OM 82""OM 83""OM 84""OM 85""OM 86""OM 87""OM 88""OM 89""OM 90" endparam param p1 caption="Attraktor Parameter" default=(1,0) endparam param p2 caption="Attraktor Parameter 2" default=(1,0) visible=@v!="Cathala 3" && @v!="Cremona 1" && @v!="Cremona 2" && @v!="Gumowski-Mira 3" && @v!="Henon 2"\ && @v!="Kam Torus" && @v!="Martin" && @v!="Pendulum" && @v!="Separatrix" && @v!="Standard Map" && @v!="Van der Pol 1"\ && @v!="Van der Pol 2" && @v!="Zito" endparam param p3 caption="Attraktor Parameter 3" default=(1,0) visible=@v=="Belykh 1" || @v=="Bogdanov" || @v=="Borrelli" || @v=="Buckling Column Model" || @v=="Cathala 2" \ || @v=="Chip" || @v=="de Jong" || @v=="Dissipative Standard Map" \ || @v=="Duffing 2" || @v=="Duffing 3" || @v=="Duffing Parametric" || @v=="Duffing Quintic 1" \ || @v=="Duffing Quintic 2" || @v=="Duffing Septic" || @v=="Fitzhugh-Nagumo 1" || @v=="Fitzhugh-Nagumo 2" \ || @v=="Ghost" || @v=="Grebogi" || @v=="Gumowski-Mira 1" || @v=="Gumowski-Mira 2" || @v=="Henon Dual" \ || @v=="Henon-Heiles 1" || @v=="Henon-Heiles 2" || @v=="Hopalong 1" || @v=="Hopalong 2" || @v=="Hopalong 3" \ || @v=="Hopalong 4" || @v=="Hopalong 5" || @v=="Hopalong 6" || @v=="Hopalong 7" || @v=="Horsthemke-Lefever" \ || @v=="Ikeda" || @v=="Ilhem-Amel 1" || @v=="Ilhem-Amel 2" || @v=="Jiang" || @v=="Jiang-Liu-Wei-Zhang" || @v=="Kan" \ || @v=="Khovanov-Luchinsky" || @v=="Kolmogorov-Volterra" || @v=="Limit Cycle" \ || @v=="Mira 1" || @v=="Mira 2" || @v=="Nowicki-Swirszcz" || @v=="Pendulum Morozov" || @v=="Pharaoh" \ || @v=="Pickover 1 (Latoocarfian)" || @v=="Pickover 3" || @v=="Pickover 5" || @v=="Plaid" || @v=="Polyharmonic Pendulum" \ || @v=="Quadruptwo" || @v=="Rayleigh" || @v=="Rulkov" || @v=="Sine-Sine" \ || @v=="Sprott 1" || @v=="Stommel Thermohaline 1" \ || @v=="Stommel Thermohaline 2" || @v=="Svensson" || @v=="Symplectic" || @v=="Tartan" \ || @v=="Threeply" || @v=="Tinkerbell" || @v=="Ushiki" || @v=="Volterra-Lotka 1" \ || @v=="Volterra-Lotka 2" || @v=="Zaslavsky 2" \ || @v=="OM 1" || @v=="OM 2" || @v=="OM 3" || @v=="OM 4" || @v=="OM 5" \ || @v=="OM 6" || @v=="OM 7" || @v=="OM 8" || @v=="OM 9" || @v=="OM 10" || @v=="OM 11" || @v=="OM 12" || @v=="OM 13" \ || @v=="OM 14" || @v=="OM 15" || @v=="OM 16" || @v=="OM 17" || @v=="OM 18" || @v=="OM 19" || @v=="OM 20" || @v=="OM 21" \ || @v=="OM 22" || @v=="OM 23" || @v=="OM 24" || @v=="OM 25" || @v=="OM 26" || @v=="OM 27" || @v=="OM 29" || @v=="OM 30" \ || @v=="OM 31" || @v=="OM 32" || @v=="OM 33" || @v=="OM 35" || @v=="OM 36" || @v=="OM 37" || @v=="OM 38" || @v=="OM 39" \ || @v=="OM 40" || @v=="OM 41" || @v=="OM 42" || @v=="OM 43" || @v=="OM 44" || @v=="OM 45" || @v=="OM 46" || @v=="OM 47" \ || @v=="OM 48" || @v=="OM 49" || @v=="OM 50" || @v=="OM 51" || @v=="OM 52" || @v=="OM 53" || @v=="OM 54" || @v=="OM 55" \ || @v=="OM 56" || @v=="OM 57" || @v=="OM 58" || @v=="OM 59" || @v=="OM 60" || @v=="OM 61" || @v=="OM 62" || @v=="OM 63" \ || @v=="OM 64" || @v=="OM 65" || @v=="OM 66" || @v=="OM 67" || @v=="OM 68" || @v=="OM 69" || @v=="OM 70" || @v=="OM 71" \ || @v=="OM 72" || @v=="OM 73" || @v=="OM 74" || @v=="OM 75" || @v=="OM 76" || @v=="OM 77" || @v=="OM 78" || @v=="OM 79" \ || @v=="OM 80" || @v=="OM 81" || @v=="OM 82" || @v=="OM 83" || @v=="OM 84" || @v=="OM 85" || @v=="OM 86" || @v=="OM 87" \ || @v=="OM 88" || @v=="OM 89" || @v=="OM 90" endparam param p4 caption="Attraktor Parameter 4" default=(1,0) visible=@v=="Borrelli" || @v=="Buckling Column Model" || @v=="de Jong" || @v=="Duffing 3" \ || @v=="Duffing Parametric" || @v=="Duffing Quintic 1" || @v=="Duffing Quintic 2" \ || @v=="Fitzhugh-Nagumo 1" || @v=="Fitzhugh-Nagumo 2" || @v=="Ghost" \ || @v=="Henon-Heiles 1" || @v=="Horsthemke-Lefever" || @v=="Ikeda" || @v=="Ilhem-Amel 2" \ || @v=="Jiang" || @v=="Jiang-Liu-Wei-Zhang" || @v=="Kan" \ || @v=="Limit Cycle" || @v=="Nowicki-Swirszcz" || @v=="Pendulum Morozov" || @v=="Pharaoh" \ || @v=="Pickover 1 (Latoocarfian)" \ || @v=="Pickover 5" || @v=="Plaid" || @v=="Polyharmonic Pendulum" || @v=="Sprott 1" \ || @v=="Svensson" || @v=="Symplectic" || @v=="Tinkerbell" \ || @v=="Ushiki" || @v=="Volterra-Lotka 1" || @v=="Volterra-Lotka 2" || @v=="OM 2" || @v=="OM 4" \ || @v=="OM 5" || @v=="OM 6" || @v=="OM 7" || @v=="OM 9" || @v=="OM 11" || @v=="OM 20" || @v=="OM 21" \ || @v=="OM 24" || @v=="OM 27" || @v=="OM 29" || @v=="OM 30" || @v=="OM 32" || @v=="OM 33" || @v=="OM 37" || @v=="OM 39" \ || @v=="OM 40" || @v=="OM 41" || @v=="OM 43" || @v=="OM 44" || @v=="OM 45" || @v=="OM 47" || @v=="OM 48" || @v=="OM 52" \ || @v=="OM 54" || @v=="OM 55" || @v=="OM 56" || @v=="OM 57" || @v=="OM 58" || @v=="OM 59" || @v=="OM 60" || @v=="OM 61" \ || @v=="OM 62" || @v=="OM 63" || @v=="OM 64" || @v=="OM 65" || @v=="OM 66" || @v=="OM 68" || @v=="OM 69" || @v=="OM 70" \ || @v=="OM 71" || @v=="OM 72" || @v=="OM 73" || @v=="OM 74" || @v=="OM 75" || @v=="OM 76" || @v=="OM 77" || @v=="OM 86" \ || @v=="OM 88" endparam param p5 caption="Attraktor Parameter 5" default=(1,0) visible=@v=="Duffing Parametric" || @v=="Duffing Quintic 2" || @v=="Duffing Septic" || @v=="Henon-Heiles 1" \ || @v=="Horsthemke-Lefever" || @v=="Ilhem-Amel 2" || @v=="Jiang-Liu-Wei-Zhang" || @v=="Plaid" \ || @v=="Sprott 1" || @v=="Symplectic" || @v=="OM 27" || @v=="OM 29" || @v=="OM 32" || @v=="OM 33" \ || @v=="OM 39" || @v=="OM 40" || @v=="OM 41" || @v=="OM 43" || @v=="OM 45" || @v=="OM 54" || @v=="OM 55" \ || @v=="OM 56" || @v=="OM 57" || @v=="OM 58" || @v=="OM 59" || @v=="OM 60" || @v=="OM 62" || @v=="OM 63" \ || @v=="OM 64" || @v=="OM 65" || @v=="OM 66" || @v=="OM 71" || @v=="OM 72" || @v=="OM 74" || @v=="OM 76" || @v=="OM 77" endparam param p6 caption="Attraktor Parameter 6" default=(1,0) visible=@v=="Duffing Quintic 2" || @v=="Ilhem-Amel 2" || @v=="Jiang-Liu-Wei-Zhang" || @v=="Plaid" \ || @v=="Sprott 1" || @v=="Symplectic" || @v=="OM 32" || @v=="OM 39" || @v=="OM 40" || @v=="OM 54" \ || @v=="OM 55" || @v=="OM 56" || @v=="OM 57" || @v=="OM 58" || @v=="OM 59" || @v=="OM 63" || @v=="OM 71" \ || @v=="OM 72" || @v=="OM 76" || @v=="OM 77" endparam param p7 caption="Attraktor Parameter 7" default=(1,0) visible=@v=="Plaid" || @v=="Sprott 1" || @v=="Symplectic" || @v=="OM 77" endparam param p8 caption="Attraktor Parameter 8" default=(1,0) visible=@v=="Plaid" || @v=="Sprott 1" endparam param p9 caption="Attraktor Parameter 9" default=(1,0) visible=@v=="Plaid" || @v=="Sprott 1" endparam param p10 caption="Attraktor Parameter 10" default=(1,0) visible=@v=="Plaid" || @v=="Sprott 1" endparam param p11 caption="Attraktor Parameter 11" default=(1,0) visible=@v=="Sprott 1" endparam param p12 caption="Attraktor Parameter 12" default=(1,0) visible=@v=="Sprott 1" endparam func sf caption="Pixel Function" default=ident() endfunc func zf caption="Z Function" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param as caption="Add Sqr Parameter" default=(0,0) endparam param ac caption="Add Cayley Parameter" default=(0,0) endparam param app caption="Add Pixel Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_AtomGusto(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz/4) fpixel=pz if @S=="1" pz=pz elseif @S=="2" pz=pz-1.8*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @S=="3" pz=pz^2*(recip(pz)-0.25)/(1-0.25*recip(pz)) elseif @S=="4" pz=pz^2*(exp(pz)-1.3)/(1-1.3*exp(pz)) elseif @S=="5" pz=pz+pz^2*(exp(recip(pz))+0.75)/(1i+0.75*exp(recip(pz))) elseif @S=="6" pz=pz-1.3*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @S=="7" pz=pz+pz^2*(pz-2)/(1i-2*pz) elseif @S=="8" pz=pz^2*(recip(pz)-2)/(1-2*recip(pz)) elseif @S=="9" pz=pz+pz^2*(sqr(pz)+1.5)/(1i+1.5*sqr(pz)) elseif @S=="10" pz=pz-9*(cosh(pz)^3-1)/(3*cosh(pz)^2) elseif @S=="11" pz=pz+pz^2*(pz-2)/(1-2*pz) elseif @S=="12" pz=pz+pz^2*(exp(sqr(pz))+0.75)/(1i+0.75*exp(sqr(pz))) elseif @S=="13" pz=pz-(exp(pz)^3-1)/(3*exp(pz)^2) elseif @S=="14" pz=pz+pz^2*(exp(pz)-0.75)/(1-0.75*exp(pz)) elseif @S=="15" pz=pz+pz^2*(exp(sqr(pz))+0.25)/(1i+0.25*exp(sqr(pz))) elseif @S=="16" pz=pz^2*(abs(pz)-2)/(1-2*abs(pz)) elseif @S=="17" pz=pz+pz^2*(sin(pz)-0.5)/(1i-0.5*pz) elseif @S=="18" pz=pz+pz^2*(exp(pz)+0.75)/(1i+0.75*exp(pz)) elseif @S=="19" pz=pz+pz^2*(exp(flip(pz))+0.75)/(1i+0.75*exp(flip(pz))) elseif @S=="20" pz=pz+pz^2*(exp(pz)-2)/(1i-2*sqr(pz)) elseif @S=="21" pz=pz+pz^2*(cosh(pz)-1.1)/(1-1.1*cosh(pz)) elseif @S=="22" pz=pz+pz^2*(sin(pz)-0.5)/(1i-0.5*cotan(pz)) elseif @S=="23" pz=pz^2*(flip(pz)+2)/(1+2*flip(pz)) elseif @S=="24" pz=pz+pz^2*(exp(cosh(pz))+0.25)/(1i+0.25*exp(cosh(pz))) elseif @S=="25" pz=pz+pz^2*(sqr(pz)+1.5)/(1i+1.5*pz) elseif @S=="26" pz=pz+pz^2*(sqr(pz)+4)/(1+4*sqr(pz)) elseif @S=="27" pz=pz+pz^2*(exp(abs(pz))+0.75)/(1i+0.75*exp(abs(pz))) elseif @S=="28" pz=pz^2*(cosh(pz)-0.9)/(1-0.9*cosh(pz)) elseif @S=="29" pz=pz+pz^2*(sqr(pz)-2)/(1i-2*sqr(pz)) elseif @S=="30" pz=pz^2*(sin(pz)+0.25)/(1+0.25*sin(pz)) elseif @S=="31" pz=pz+pz^2*(exp(abs(pz))+0.25)/(1i+0.25*exp(abs(pz))) elseif @S=="32" pz=pz^2*(pz-2)/(1-2*pz) elseif @S=="33" pz=pz+pz^2*(pz-2)/(1i-2*sqr(pz)) endif x=real(pz) y=imag(pz) return pz endfunc complex func Iterate(complex pz) pz=(pz-@p6)/(1-@p6*pz) pz=pz/(@p10*pz+1) pz=pz+@p7*pz*(1-pz) if @M=="None" pz=pz elseif @M=="1" pz=pz-2.73*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="2" pz=pz+0.53*cos(pz) elseif @M=="3" pz=pz-3*sqr(pz) elseif @M=="4" pz=pz^2*(sqr(pz)+8)/(1+8*sqr(pz)) elseif @M=="5" pz=pz+0.2i*exp(pz) elseif @M=="6" pz=pz+0.3*abs(pz) elseif @M=="7" pz=pz+4i*sqr(pz) elseif @M=="8" pz=pz^2*(pz-5.75)/(1-5.75*pz) elseif @M=="9" pz=pz-1.25*sqr(pz) elseif @M=="10" pz=pz+sqr(pz) elseif @M=="11" pz=pz-2.0775*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="12" pz=pz-3.1*sin(pz) elseif @M=="13" pz=pz+1.375*cosh(pz) elseif @M=="14" pz=pz+3*sqr(pz) elseif @M=="15" pz=pz-0.75*sqr(pz) elseif @M=="16" pz=pz-4i*sqr(pz) elseif @M=="17" pz=pz-0.5i*sqr(pz) elseif @M=="18" pz=pz^2*(pz-19)/(1-19*pz) elseif @M=="19" pz=pz^2*(sqr(pz)+30)/(1+30*sqr(pz)) elseif @M=="20" pz=pz^2*(tanh(pz)+66)/(1+66*tanh(pz)) elseif @M=="21" pz=pz-2.525*(cosh(pz)^3-1)/(3*cosh(pz)^2) elseif @M=="22" pz=pz-sqr(pz) elseif @M=="23" pz=pz-2.44*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="24" pz=pz^2*(sqr(pz)-3.7)/(1-3.7*sqr(pz)) elseif @M=="25" pz=pz+1.25*sqr(pz) elseif @M=="26" pz=pz+1.42*cosh(pz) elseif @M=="27" pz=pz^2*(pz-50)/(1-50*pz) elseif @M=="28" pz=pz-2.65*sinh(pz) elseif @M=="29" pz=pz+0.75*sqr(pz) elseif @M=="30" pz=pz+0.35i*cos(pz) elseif @M=="31" pz=pz-0.3*abs(pz) elseif @M=="32" pz=pz+0.5i*sqr(pz) elseif @M=="33" pz=pz-0.3i*exp(pz) endif x=@p1*(y-@fn3(x)^@pow) y=x-y+@p2*pz if @jm==0 pz=-@p3*y else pz=-@p3*y+@pf(fpixel) endif return pz endfunc private: complex fpixel complex x complex y default: title="Atom Gusto" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param S caption="Start Variant" enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33" endparam param p1 caption="AG Parameter 1" default=(0.950754,-0.068944) endparam param p2 caption="AG Parameter 2" default=(1,0) endparam param p3 caption="AG Parameter 3" default=(1,0) endparam func fn3 caption="AG Function" default=ident() endfunc param M caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33" endparam param pow caption="Exponent" default=(2,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p6 caption="Möbius Parameter 1" default=(0,0) endparam param p10 caption="Möbius Parameter 2" default=(0,0) endparam param p7 caption="Add Logistic Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_AtomGusto2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@pf(pz/4) x=real(pz) y=imag(pz) return pz endfunc complex func Iterate(complex pz) pz=@p4*pz+@p5 if @M=="None" pz=pz elseif @M=="1" pz=pz-1.8*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="2" pz=pz+0.53*cos(pz) elseif @M=="3" pz=pz-3*sqr(pz) elseif @M=="4" pz=pz^2*(sqr(pz)+8)/(1+8*sqr(pz)) elseif @M=="5" pz=pz+0.2i*exp(pz) elseif @M=="6" pz=pz+0.3*abs(pz) elseif @M=="7" pz=pz+4i*sqr(pz) elseif @M=="8" pz=pz^2*(pz-5.75)/(1-5.75*pz) elseif @M=="9" pz=pz-1.25*sqr(pz) elseif @M=="10" pz=pz+sqr(pz) elseif @M=="11" pz=pz-2.0775*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="12" pz=pz-3.1*sin(pz) elseif @M=="13" pz=pz+1.375*cosh(pz) elseif @M=="14" pz=pz+3*sqr(pz) elseif @M=="15" pz=pz-0.75*sqr(pz) elseif @M=="16" pz=pz-4i*sqr(pz) elseif @M=="17" pz=pz-0.5i*sqr(pz) elseif @M=="18" pz=pz^2*(pz-19)/(1-19*pz) elseif @M=="19" pz=pz^2*(sqr(pz)+30)/(1+30*sqr(pz)) elseif @M=="20" pz=pz^2*(tanh(pz)+66)/(1+66*tanh(pz)) elseif @M=="21" pz=pz-2.525*(cosh(pz)^3-1)/(3*cosh(pz)^2) elseif @M=="22" pz=pz-sqr(pz) elseif @M=="23" pz=pz-2.44*(exp(pz)^3-1)/(3*exp(pz)^2) elseif @M=="24" pz=pz^2*(sqr(pz)-3.7)/(1-3.7*sqr(pz)) elseif @M=="25" pz=pz+1.25*sqr(pz) elseif @M=="26" pz=pz+1.42*cosh(pz) elseif @M=="27" pz=pz^2*(pz-50)/(1-50*pz) elseif @M=="28" pz=pz-2.65*sinh(pz) elseif @M=="29" pz=pz+0.75*sqr(pz) elseif @M=="30" pz=pz+0.35i*cos(pz) elseif @M=="31" pz=pz-0.3*abs(pz) elseif @M=="32" pz=pz+0.5i*sqr(pz) elseif @M=="33" pz=pz-0.3i*exp(pz) endif y=@p1*(x-@agf(y)^@pow) x=@p15*(x-y+@p2*pz) pz=-@p3*y+@p17+@app*@pf(fpixel) return pz endfunc private: complex fpixel complex x complex y default: title="Atom Gusto 2" int param version caption="Version" default=100 visible=@version<100 endparam param M caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33" endparam param app caption="Add Pixel Parameter" default=(0,0) endparam param p1 caption="AG Parameter 1" default=(1,0) endparam param p15 caption="AG Parameter 2" default=(1,0) endparam param p2 caption="AG Parameter 3" default=(1,0) endparam param p3 caption="AG Parameter 4" default=(0.984,0.219) endparam param p17 caption="AG Parameter 5" default=(0,0) endparam func agf caption="AG Function" default=ident() endfunc param p4 caption="Z Parameter 1" default=(1,0) endparam param p5 caption="Z Parameter 2" default=(0,0) endparam param pow caption="Exponent" default=2 endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.7 exponential=true endparam } class OM_IFB63(common.ulb:DivergentFormula) { public: complex func Init(complex pz) a=fn1(cotanh(@p5)) b=fn2(atan(@p5)) pz=fn4(pz) return pz endfunc private: complex a complex b complex func Iterate(complex pz) pz=@p3*flip(pz)+@p4 if @V=="1" if real(fn3(pz))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="2" if real(fn3(round(pz)))>@p6-0.83 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="3" if real(fn3(sqrt(pz)))>@p6+0.6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="4" if real(fn3(pz))+imag(fn3(pz))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="5" if real(fn3(pz))+imag(fn3(conj(pz)))>@p6+4.86 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="6" if real(fn3(pz))+imag(fn3(abs(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="7" if real(fn3(pz))+imag(fn3(exp(pz)))>@p6-0.45 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="8" if real(fn3(pz))+imag(fn3(log(pz)))>@p6-1.79 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="9" if real(fn3(pz))+imag(fn3(sqrt(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="10" if real(fn3(pz))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="11" if real(fn3(pz))+imag(fn3(cotan(pz)))>@p6+4.35 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="12" if real(fn3(pz))+imag(fn3(tanh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="13" if real(fn3(pz))+imag(fn3(tan(pz)))>@p6+0.17 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="14" if real(fn3(pz))+imag(fn3(acos(pz)))>@p6+0.33 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="15" if real(fn3(pz))+imag(fn3(round(pz)))>@p6-3.94 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="16" if real(fn3(pz))+imag(fn3(trunc(pz)))>@p6-4.48 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="17" if real(fn3(pz))+imag(fn3(floor(pz)))>@p6-4.44 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="18" if real(fn3(exp(pz)))+imag(fn3(conj(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="19" if real(fn3(log(pz)))+imag(fn3(flip(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="20" if real(fn3(log(pz)))+imag(fn3(recip(pz)))>@p6+1.29 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="21" if real(fn3(sqrt(pz)))+imag(fn3(pz))>@p6+0.75 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="22" if real(fn3(sqrt(pz)))+imag(fn3(conj(pz)))>@p6+1.33 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="23" if real(fn3(sqrt(pz)))+imag(fn3(cotan(pz)))>@p6+1.5 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="24" if real(fn3(sqr(pz)))+imag(fn3(sin(pz)))>@p6+8.8 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="25" if real(fn3(cotanh(pz)))+imag(fn3(recip(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="26" if real(fn3(cotanh(pz)))+imag(fn3(cotanh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="27" if real(fn3(cotanh(pz)))+imag(fn3(asinh(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="28" if real(fn3(atanh(pz)))+imag(fn3(floor(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="29" if real(fn3(atan(pz)))+imag(fn3(floor(pz)))>@p6-0.25 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="30" if real(fn3(atan(pz)))+imag(fn3(atan(pz)))>@p6 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="31" if real(fn3(tanh(pz)))+imag(fn3(cotan(pz)))>@p6-0.02 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="32" if real(fn3(acosh(pz)))+imag(fn3(floor(pz)))>@p6-2.14 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="33" if real(fn3(acosh(pz)))+imag(fn3(sqrt(pz)))>@p6+0.125 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="34" if real(fn3(acosh(pz)))+imag(fn3(cotanh(pz)))>@p6+0.62 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="35" if real(fn3(acosh(pz)))+imag(fn3(cotan(pz)))>@p6+0.71 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="36" if real(fn3(acosh(pz)))+imag(fn3(atan(pz)))>@p6-0.125 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="37" if real(fn3(cos(pz)))+imag(fn3(exp(pz)))>@p6+0.85 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="38" if real(fn3(cos(pz)))+imag(fn3(asinh(pz)))>@p6-0.06 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="39" if real(fn3(asinh(pz)))+imag(fn3(sqrt(pz)))>@p6-0.04 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif elseif @V=="40" if real(fn3(asinh(pz)))+imag(fn3(tan(pz)))>@p6-0.04 pz=(pz-@p1)*a else pz=(pz+@p2)*b endif endif return pz endfunc default: title="IFB 63" int param version caption="Version" default=100 visible=@version<100 endparam param V caption="Variant" default=0 enum="1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26""27""28""29""30"\ "31""32""33""34""35""36""37""38""39""40" endparam param p5 caption="IFB Parameter 1" default=(1.21,-0.79) endparam param p1 caption="IFB Parameter 2" default=(1,0) endparam param p2 caption="IFB Parameter 3" default=(1,0) endparam param p6 caption="IFB Parameter 4" default=0.0 endparam param p3 caption="Z Parameter 1" default=(0,-1.12) endparam param p4 caption="Z Parameter 2" default=(0,0) endparam func fn4 caption="Start Function" default=ident() endfunc func fn1 caption="IFB Function 1" default=ident() endfunc func fn2 caption="IFB Function 2" default=ident() endfunc func fn3 caption="IFB Function 3" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000.0 exponential=true endparam } class OM_IFB13(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@fn1(pz) return pz endfunc private: complex func Iterate(complex pz) pz=@p6*@fn2(pz)+@p7 float a=real(@fn3(pz)) float b=imag(@fn3(pz)) if @v==0 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sin(@p1)+@p2 endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*sinh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*asin(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*asinh(@p1)+@p11 endif elseif @v==1 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sinh(@p1)+@p2 endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*asin(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*asinh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*sin(@p1)+@p11 endif elseif @v==2 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*asin(@p1)+(@p2-2) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*asinh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*sin(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*sinh(@p1)+@p11 endif elseif @v==3 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*asinh(@p1)+(@p2-1.5-1.05i) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*sin(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*sinh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*asin(@p1)+@p11 endif elseif @v==4 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sin(@p1)+(@p2+0.33+0.95i) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*asin(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*sinh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*asinh(@p1)+@p11 endif elseif @v==5 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*asin(@p1)+(@p2+1.67-0.5i) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*sinh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*asinh(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*sin(@p1)+@p11 endif elseif @v==6 if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*sinh(@p1)+(@p2+1-0.15i) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*asinh(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*sin(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*asin(@p1)+@p11 endif else if a*imag(@p1)+real(@p1)*b<@p4 pz=pz*asinh(@p1)+(@p2-0.9-1.05i) endif if @p5<=a*imag(@p1)+real(@p1)*b pz=pz*sin(@p1)+@p3 endif if a*imag(@p1)+real(@p1)*b<@p8 pz=pz*asin(@p1)+@p9 endif if @p10<=a*imag(@p1)+real(@p1)*b pz=pz*sinh(@p1)+@p11 endif endif return pz endfunc default: title="IFB 13" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param p1 caption="IFB Parameter a1" default=(0.76701,-0.796422) endparam param p2 caption="IFB Parameter a2" default=(0,1.05) endparam param p3 caption="IFB Parameter a3" default=(1.29,-0.71) endparam param p9 caption="IFB Parameter a4" default=(0.71,0.16) endparam param p11 caption="IFB Parameter a5" default=(0.5,1.23) endparam param p4 caption="IFB Parameter b1" default=0.0 endparam param p5 caption="IFB Parameter b2" default=0.0 endparam param p8 caption="IFB Parameter b3" default=0.0 endparam param p10 caption="IFB Parameter b4" default=0.0 endparam param p6 caption="Z Parameter 1" default=(1,0) endparam param p7 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="Pixel Function" default=ident() endfunc func fn2 caption="Z Function" default=ident() endfunc func fn3 caption="IFB Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_Bakhshali(common.ulb:ConvergentFormula) { ;https://en.wikipedia.org/wiki/Methods_of_computing_square_roots public: complex func Init(complex pz) ConvergentFormula.Init(pz) fpixel=pz pz=@pf(pz) return pz endfunc complex func Iterate(complex pz) ConvergentFormula.Iterate(pz) ;m_ZOld=pz pz=(@zp1-1.25)*pz+@zp2 pz=pz*(1-@p8*pz) pz=pz+@arp/pz if @JM=="J" a=(@p1-pz^2)/(2*pz) else a=(@pp*@pf(fpixel)-pz^2)/(2*pz) endif b=pz+a pz=b-@p2*a^2/(2*b)+@p3 if @Va=="none" pz=pz elseif @Va=="1" pz=pz+1/pz elseif @Va=="2" pz=pz-1/pz elseif @Va=="3" pz=pz-0.5*sqr(pz) elseif @Va=="4" pz=pz+0.1/conj(pz) elseif @Va=="5" pz=pz+0.5*sqr(pz) elseif @Va=="6" pz=pz+1/cos(pz) elseif @Va=="7" pz=pz+0.25/sqr(pz) elseif @Va=="8" pz=pz+0.6/sinh(pz) elseif @Va=="9" pz=pz+0.2/cotan(pz) elseif @Va=="10" pz=pz+0.25/tanh(pz) elseif @Va=="11" pz=pz-0.5*sqr(pz)+1/sqr(pz) elseif @Va=="12" pz=pz+0.5*sqr(pz)-2/pz elseif @Va=="13" pz=pz+sqr(pz)-2/pz elseif @Va=="14" pz=pz-0.5*sqr(pz)+3/sqr(pz) elseif @Va=="15" pz=pz-0.25*pz^3+1/sqr(pz) elseif @Va=="16" pz=pz+0.2*pz^3-0.5/sqr(pz) elseif @Va=="17" pz=pz+1/pz^3 elseif @Va=="18" pz=pz-1/pz^3 elseif @Va=="19" pz=pz-0.5*pz^2-1/pz+1/pz^3 elseif @Va=="20" pz=pz+0.5*pz^2-1/pz^2+1/pz^3 elseif @Va=="21" pz=pz+1/pz-1/pz^2-1/pz^3 elseif @Va=="22" pz=pz-0.25/pz-1/pz^2+0.5/pz^3 elseif @Va=="23" pz=pz+0.5*pz^2-1/pz-1/pz^2+1/pz^3 elseif @Va=="24" pz=pz+0.5*pz^2-1/pz-2/pz^2-0.6/pz^3 elseif @Va=="25" pz=pz-0.65*pz^2+0.1/pz+0.1/pz^2+0.1/pz^3 elseif @Va=="26" pz=pz-0.65*pz^2-1.45/pz+0.1/pz^2+0.1/pz^3 endif return pz endfunc private: complex fpixel default: title="Bakhshali" int param version caption="Version" default=100 visible=@version<100 endparam param JM caption="J/M" enum="J""M" endparam param p2 caption="Bakhshali Parameter 1" default=(-2,0) endparam param p3 caption="Bakhshali Parameter 2" default=(0,0) endparam param p1 caption="Constant" default=(1,0) visible=@JM=="J" endparam param pp caption="Pixel Parameter" default=(1,0) visible=@JM=="M" endparam param Va caption="Modification" enum="None""1""2""3""4""5""6""7""8""9""10"\ "11""12""13""14""15""16""17""18""19""20"\ "21""22""23""24""25""26" endparam param zp1 caption="Z Parameter 1" default=(2,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param p8 caption="Quasi-Logistic Parameter" default=(0,0) endparam param arp caption="Add Recip Parameter" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=0.000000001 exponential=true endparam } class OM_NoorBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc private: complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if real(@f1a1(pz))*imag(@bp3a)+real(@bp3a)*imag(@f1a1(pz))>=0 fz=(pz-@bp2a)*@bp1a else fz=(pz+@bp2a)*@bp1a endif v=(1-@p1)*pz+@p1*fz if real(@f1a2(v))*imag(@bp3a)+real(@bp3a)*imag(@f1a2(v))>=0 fv=(v-@bp2a)*@bp1a else fv=(v+@bp2a)*@bp1a endif u=(1-@p2)*pz+@p2*fv if real(@f1a3(u))*imag(@bp3a)+real(@bp3a)*imag(@f1a3(u))>=0 fu=(u-@bp2a)*@bp1a else fu=(u+@bp2a)*@bp1a endif pz=(1-@p3)*pz+@p3*fu return pz endfunc default: title="Noor Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Noor Parameter 1" default=(-0.8,0) endparam param p2 caption="Noor Parameter 2" default=(0.22,0) endparam param p3 caption="Noor Parameter 3" default=(0.5,0) endparam param bp1a caption="Barnsley Parameter 1" default=(0.99,0.87) endparam param bp2a caption="Barnsley Parameter 2" default=(0.89,-0.49) endparam param bp3a caption="Barnsley Parameter 3" default=(1.5,1.25) endparam func f1a1 caption="Barnsley Function 1" default=ident() endfunc func f1a2 caption="Barnsley Function 2" default=ident() endfunc func f1a3 caption="Barnsley Function 3" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_SuantaiBarnsley(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) return pz endfunc private: complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if real(@f(pz))*imag(@bp3)+real(@bp3)*imag(@f(pz))>=0 fz=(pz-@bp2)*@bp1 else fz=(pz+@bp2)*@bp1 endif v=(1-@p1)*pz+@p1*(fz) if real(@f2(v))*imag(@bp3)+real(@bp3)*imag(@f2(v))>=0 fv=(v-@bp2)*@bp1 else fv=(v+@bp2)*@bp1 endif u=(1-@p2-@p3)*pz+@p2*(fv)+@p3*(fz) if real(@f3(u))*imag(@bp3)+real(@bp3)*imag(@f3(u))>=0 fu=(u-@bp2)*@bp1 else fu=(u+@bp2)*@bp1 endif pz=(1-@p4-@p5)*pz+@p4*(fu)+@p5*(fv) return pz endfunc default: title="Suantai Barnsley" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="Suantai Parameter 1" default=(0.5,0) endparam param p2 caption="Suantai Parameter 2" default=(1.4,0) endparam param p3 caption="Suantai Parameter 3" default=(-0.25,0) endparam param p4 caption="Suantai Parameter 4" default=(-0.35,0) endparam param p5 caption="Suantai Parameter 5" default=(0.98,0) endparam param bp1 caption="Barnsley Parameter 1" default=(2.74,-0.29) endparam param bp2 caption="Barnsley Parameter 2" default=(0.12,-0.23) endparam param bp3 caption="Barnsley Parameter 3" default=(0.79,0.76) endparam func f caption="Barnsley Function 1" default=ident() endfunc func f2 caption="Barnsley Function 2" default=ident() endfunc func f3 caption="Barnsley Function 3" default=ident() endfunc param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_TrivarJulia4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) u=@sf(pz) v=@sf(pz) pz=@sf(pz) c=@js return pz return u return v endfunc private: complex c complex u complex v complex func Iterate(complex pz) pz=@zp1*pz+@zp2 u=@up1*u+@up2 v=@vp1*v+@vp2 pz=pz+@ar/pz u=u+@ar/u v=v+@ar/v a=pz pz=(1-@p1)*pz+@p1*(u^@pow+c) u=(1-@p2)*a+@p2*(v^@pow+c) v=(1-@p3)*a+@p3*(a^@pow+c) return pz return u return v endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|(pz+u+v)/3|>@p_bailout) return bail endfunc default: title="Trivar Julia 4" int param version caption="Version" default=100 visible=@version<100 endparam param js caption="Julia Seed" default=(-1.25,0) endparam param p1 caption="Trivar Parameter 1" default=(0.5,0) endparam param p2 caption="Trivar Parameter 2" default=(1,0) endparam param p3 caption="Trivar Parameter 3" default=(1.05,0) endparam param pow caption="Exponent" default=2 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param up1 caption="U Parameter 1" default=(1,0) endparam param up2 caption="U Parameter 2" default=(0,0) endparam param vp1 caption="V Parameter 1" default=(1,0) endparam param vp2 caption="V Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_GeneralisedAgarwalMartinAttractor(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz u=(1-@p1)*pz+@p1*(imag(pz)+sin(real(pz))+flip(@mp1-real(pz))) pz=(1-@p2)*(imag(pz)+sin(real(pz))+flip(@mp2-real(pz)))\ +@p2*(imag(u)+sin(real(u))+flip(@mp3-real(u))) return pz endfunc default: title="Generalised Agarwal Martin Attractor" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="GA Parameter 1" default=(-0.9,0) endparam param p2 caption="GA Parameter 2" default=(-0.52,-0.64) endparam param mp1 caption="Martin Parameter 1" default=(0.17,0.16) endparam param mp2 caption="Martin Parameter 2" default=(2,-0.11) endparam param mp3 caption="Martin Parameter 3" default=(2.8,0.53) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedNoorBelykhAttractor(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@as*sqr(pz) pz=pz+@ar/pz if real(pz)>=0 x=1-(@bp1-0.35+2i)*real(pz)+@bp2*imag(pz) else x=-1-(@bp1-0.35+2i)*real(pz)+@bp2*imag(pz) endif y=real(pz) k=x+flip(y) u=(1-@p1)*pz+@p1*k if real(u)>=0 x2=1-(@bp3-0.35+2i)*real(u)+@bp4*imag(u) else x2=-1-(@bp3-0.35+2i)*real(u)+@bp4*imag(u) endif y2=real(u) k2=x2+flip(y2) v=(1-@p2)*pz+@p2*k2 if real(v)>=0 x3=1-(@bp5-0.35+2i)*real(v)+@bp6*imag(v) else x3=-1-(@bp5-0.35+2i)*real(v)+@bp6*imag(v) endif y3=real(v) k3=x3+flip(y3) pz=(1-@p3)*pz+@p3*k3 return pz endfunc default: title="Modified Noor Belykh Attractor" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="MN Parameter 1" default=(-0.02,-0.52) endparam param p2 caption="MN Parameter 2" default=(2.15,-0.55) endparam param p3 caption="MN Parameter 3" default=(-0.8,0.3) endparam param bp1 caption="Belykh Parameter 1" default=(-0.25,0.6) endparam param bp2 caption="Belykh Parameter 2" default=(1.4,0.1) endparam param bp3 caption="Belykh Parameter 3" default=(1.82,-0.65) endparam param bp4 caption="Belykh Parameter 4" default=(-0.06,-0.75) endparam param bp5 caption="Belykh Parameter 5" default=(1.18,-0.35) endparam param bp6 caption="Belykh Parameter 6" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param as caption="Add Sqr Parameter" default=(0,0) endparam param ar caption="Add Recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedNoorBelykhAttractor2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@pf(pz) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 float d=real(@bp3)*(2*real(pz)-1)+2*imag(pz)-1 if d<=0 x=@bp1*real(pz) y=@bp2*imag(pz) else x=@bp1*(real(pz)-1)+1 y=@bp2*(imag(pz)-1)+1 endif k=x+flip(y) u=(1-@p1)*pz+@p1*k float d2=real(@bp6)*(2*real(u)-1)+2*imag(u)-1 if d2<=0 x2=@bp4*real(u) y2=@bp5*imag(u) else x2=@bp4*(real(u)-1)+1 y2=@bp5*(imag(u)-1)+1 endif k2=x2+flip(y2) v=(1-@p2)*pz+@p2*k2 float d3=real(@bp9)*(2*real(v)-1)+2*imag(v)-1 if d3<=0 x3=@bp7*real(v) y3=@bp8*imag(v) else x3=@bp7*(real(v)-1)+1 y3=@bp8*(imag(v)-1)+1 endif k3=x3+flip(y3) pz=(1-@p3)*pz+@p3*k3 return pz endfunc default: title="Modified Noor Belykh Attractor 2" int param version caption="Version" default=100 visible=@version<100 endparam param p1 caption="MN Parameter 1" default=(-0.01,-0.65) endparam param p2 caption="MN Parameter 2" default=(2.5,0) endparam param p3 caption="MN Parameter 3" default=(-0.77,0.9) endparam param bp1 caption="Belykh Parameter 1" default=(0.28,1.37) endparam param bp2 caption="Belykh Parameter 2" default=(0.75,1.1) endparam param bp3 caption="Belykh Parameter 3" default=(1.82,-0.65) endparam param bp4 caption="Belykh Parameter 4" default=(0.1,-0.67) endparam param bp5 caption="Belykh Parameter 5" default=(1.94,-0.75) endparam param bp6 caption="Belykh Parameter 6" default=(-0.73,-0.26) endparam param bp7 caption="Belykh Parameter 7" default=(-0.29,-0.65) endparam param bp8 caption="Belykh Parameter 8" default=(1.26,0) endparam param bp9 caption="Belykh Parameter 9" default=(0.55,1.23) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func pf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_BivarX73(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 z2=@sf(pz) pz=@sf(pz) c=@js else pz=@sp z2=@sp c=@sf(fpixel) endif return pz return z2 endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 z2=@z2p1*z2+@z2p2 if @v=="1" pza=pz^2+(pz^2-z2^2)^2-@ap1^2*z2^2+@ap2^2*pz^2 z2a=z2^2+(z2^2-pz^2)^2-@ap3^2*pz^2+@ap4^2*z2^2 elseif @v=="2" pza=pz^2+pz^2*(@ap1^2-z2^2)-(z2^2+2*@ap2*pz-@ap1^2) z2a=z2^2+z2^2*(@ap3^2-pz^2)-(pz^2+2*@ap4*z2-@ap3^2) elseif @v=="3" pza=pz^2+(pz^2-@ap1^2)*(pz-@ap2)+(z2^2-@ap1^2) z2a=z2^2+(z2^2-@ap3^2)*(z2-@ap4)+(pz^2-@ap3^2) elseif @v=="4" pza=pz^2+pz^4*(pz^2+z2^2)-(@ap2*pz^2+@ap1^3) z2a=z2^2+z2^4*(z2^2+pz^2)-(@ap4*z2^2-(@ap3+0.025)^3) elseif @v=="5" pza=pz^2+@ap1*(pz^2+z2^2)-pz^3-(@ap2-4)*z2^3 z2a=z2^2+(@ap3-2.5)*(z2^2+pz^2)-z2^3-@ap4*pz^3 elseif @v=="6" pza=pz^2+@ap1*pz^4+pz^2*z2^2+(@ap2-3.5)*z2^4-@ap1^2*pz*(pz^2+z2^2) z2a=z2^2+@ap3*z2^4+z2^2*pz^2+@ap4*pz^4-@ap3^2*z2*(z2^2+pz^2) elseif @v=="7" pza=pz^2+(pz-z2^3)-@ap1^2*z2+@ap2^2*pz*z2 z2a=z2^2+(z2-pz^3)-@ap3^2*pz+@ap4^2*z2*pz elseif @v=="8" pza=pz^2+pz*((@ap1-1.75)^2-z2^2)-(z2*pz+2*@ap2*pz^2*z2-(@ap1-1.75)) z2a=z2^2+z2*(@ap3^2-pz^2)-(pz*z2+2*@ap4*z2^2*pz-@ap3) elseif @v=="9" pza=sinh(pz)^2+(pz^2-@ap1^2)*(pz-@ap2)+(z2^2-@ap1^2) z2a=sinh(z2)^2+(z2^2-(@ap3-1.1)^2)*(z2-@ap4)+(pz^2-(@ap3-1.1)^2) elseif @v=="10" pza=pz^2+pz*(pz^2+z2^2)-((@ap2-1.15)*pz^2+@ap1^3) z2a=z2^2+z2*(z2^2+pz^2)-(@ap4*z2^2-@ap3^3) elseif @v=="11" pza=pz^2+@ap1*(pz^2+z2^2)/(z2-1)-sinh(pz*z2)-@ap2*sinh(z2)*pz z2a=z2^2+@ap3*(z2^2+pz^2)/(pz-1)-sinh(z2*pz)-(@ap4-7)*sinh(pz)*z2 else pza=pz^2+@ap1*pz+pz^2*z2+(@ap2-1.15)*z2-@ap1^2*(pz^2+z2^2)/pz z2a=z2^2+(@ap3-0.33)*z2+z2^2*pz+@ap4*pz-(@ap3-0.33)^2*(z2^2+pz^2)/z2 endif z2=@p1*z2/pz+@p2 pz=pza+z2a+c return pz return z2 endfunc bool func IsBailedOut(complex pz) bool bail=false bail=(|pz|>@p_bailout || |z2|>@p_bailout) return bail endfunc private: complex z2 complex c default: title="Bivar X 73" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8""9""10""11""12" endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-0.5,0) visible=@jm==0 endparam param p1 caption="Bivar Parameter 1" default=(0.5,0) endparam param p2 caption="Bivar Parameter 2" default=(-0.7,0) endparam param ap1 caption="X Parameter 1" default=(1,0) endparam param ap2 caption="X Parameter 2" default=(1,0) endparam param ap3 caption="X Parameter 3" default=(1,0) endparam param ap4 caption="X Parameter 4" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param z2p1 caption="Z2 Parameter 1" default=(0.75,0) endparam param z2p2 caption="Z2 Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_DietTraps(common.ulb:GradientColoring) { ; A modification/extension of "Thin Orbit Traps" by Samuel Monnier" (sam.ucl) ; Plug-in version of Diet Traps in om.ucl public: func Init(complex pz, complex ppixel) GradientColoring.Init(pz, ppixel) a=0.0 b=0.0 b2=0.0 i=0 endfunc func Iterate(complex pz) GradientColoring.Iterate(pz) i=i+1 if @Fs=="sin" k=sin(pz) elseif @Fs=="sinh" k=sinh(pz) elseif @Fs=="asin" k=asin(pz) elseif @Fs=="asinh" k=asinh(pz) elseif @Fs=="cos" k=cos(pz) elseif @Fs=="cosh" k=cosh(pz) elseif @Fs=="acos" k=acos(pz) elseif @Fs=="acosh" k=acosh(pz) elseif @Fs=="tan" k=tan(pz) elseif @Fs=="tanh" k=tanh(pz) elseif @Fs=="atan" k=atan(pz) elseif @Fs=="atanh" k=atanh(pz) elseif @Fs=="cotan" k=cotan(pz) elseif @Fs=="cotanh" k=cotanh(pz) elseif @Fs=="sqr" k=sqr(pz) elseif @Fs=="sqrt" k=sqrt(pz) elseif @Fs=="log" k=log(pz) elseif @Fs=="exp" k=exp(pz) elseif @Fs=="abs" k=abs(pz) elseif @Fs=="cabs" k=cabs(pz) elseif @Fs=="conj" k=conj(pz) elseif @Fs=="flip" k=flip(pz) elseif @Fs=="ident" k=ident(pz) elseif @Fs=="recip" k=recip(pz) elseif @Fs=="versin" k=1-cos(pz) elseif @Fs=="aversin" k=acos(1-pz) elseif @Fs=="haversin" k=(1-cos(pz))/2 elseif @Fs=="ahaversin" k=2*asin(sqrt(pz)) elseif @Fs=="coversin" k=1-sin(pz) elseif @Fs=="acoversin" k=asin(1-pz) elseif @Fs=="hacoversin" k=(1-sin(pz))/2 elseif @Fs=="vercos" k=1+cos(pz) elseif @Fs=="avercos" k=acos(1+pz) elseif @Fs=="havercos" k=(1+cos(pz))/2 elseif @Fs=="ahavercos" k=2*acos(sqrt(pz)) elseif @Fs=="covercos" k=1+sin(pz) elseif @Fs=="acovercos" k=asin(1+pz) elseif @Fs=="hacovercos" k=(1+sin(pz))/2 elseif @Fs=="acotan" k=atan(1/(pz)) elseif @Fs=="acotanh" k=atanh(1/(pz)) elseif @Fs=="sec" k=1/cos(pz) elseif @Fs=="sech" k=1/cosh(pz) elseif @Fs=="asec" k=acos(1/pz) elseif @Fs=="asech" k=acosh(1/pz) elseif @Fs=="cosec" k=1/sin(pz) elseif @Fs=="cosech" k=1/sinh(pz) elseif @Fs=="acosec" k=asin(1/pz) elseif @Fs=="acosech" k=asinh(1/pz) elseif @Fs=="exsec" k=1/cos(pz)-1 elseif @Fs=="aexsec" k= acos(1/(pz+1)) elseif @Fs=="excosec" k=1/sin(pz)-1 elseif @Fs=="aexcosec" k=asin(1/(pz+1)) elseif @Fs=="crd" k=2*sin(pz/2) elseif @Fs=="acrd" k=2*asin(pz/2) elseif @Fs=="gd" k=asin(tanh(pz)) elseif @Fs=="agd" k=asinh(tan(pz)) elseif @Fs=="sinc" k=sin(pz)/(pz) elseif @Fs=="sinhc" k=sinh(pz)/(pz) elseif @Fs=="cosc" k=cos(pz)/(pz) elseif @Fs=="coshc" k=cosh(pz)/(pz) elseif @Fs=="tanc" k=tan(pz)/(pz) elseif @Fs=="tanhc" k=tanh(pz)/(pz) elseif @Fs=="cotanc" k=cotan(pz)/(pz) elseif @Fs=="cotanhc" k=cotanh(pz)/(pz) elseif @Fs=="secc" k=1/(pz*cos(pz)) elseif @Fs=="sechc" k=1/(pz*cosh(pz)) elseif @Fs=="cosecc" k= 1/(pz*sin(pz)) elseif @Fs=="cosechc" k=1/(pz*sinh(pz)) elseif @Fs=="cube" k=pz^3 elseif @Fs=="cuberoot" k=pz^(1/3) elseif @Fs=="colog" k=-log(pz) elseif @Fs=="logit" k= log(pz/(1-pz)) elseif @Fs=="expit" k=1/(1+exp(-pz)) elseif @Fs=="gauss" k=exp(-sqr(pz)) elseif @Fs=="softplus" k=log(1+exp(pz)) elseif @Fs=="primecount" k=pz/log(pz) elseif @Fs=="sqr+" k=sqr(pz)+pz elseif @Fs=="cube+" k=pz^3+sqr(pz)+pz elseif @Fs=="sin+" k=sin(pz)+pz elseif @Fs=="cos+" k=cos(pz)+pz elseif @Fs=="tan+" k=tan(pz)+pz elseif @Fs=="cotan+" k=cotan(pz)+pz elseif @Fs=="sec+" k=1/cos(pz)+pz elseif @Fs=="cosec+" k=1/sin(pz)+pz elseif @Fs=="sin*" k=sin(pz)*pz elseif @Fs=="cos*" k=cos(pz)*pz elseif @Fs=="tan*" k=tan(pz)*pz elseif @Fs=="cotan*" k=cotan(pz)*pz elseif @Fs=="sec*" k=pz/cos(pz) elseif @Fs=="cosec*" k=pz/sin(pz) elseif @Fs=="loglog" k=log(log(pz)) elseif @Fs=="sinsin" k=sin(sin(pz)) elseif @Fs=="coscos" k=cos(cos(pz)) elseif @Fs=="+pixel" k=pz+pixel elseif @Fs=="-pixel" k=pz-pixel elseif @Fs=="*pixel" k=pz*pixel elseif @Fs=="/pixel" k=pz/pixel elseif @Fs=="+pixel+sqr(pixel)" k=pz+pixel+sqr(pixel) elseif @Fs=="+pixel-sqr(pixel)" k=pz+pixel-sqr(pixel) elseif @Fs=="-pixel+sqr(pixel)" k=pz-pixel+sqr(pixel) elseif @Fs=="-pixel-sqr(pixel)" k=pz-pixel-sqr(pixel) elseif @Fs=="(sqr-pixel)/(+pixel)" k=(sqr(pz)-pixel)/(pz+pixel) elseif @Fs=="(sqr+pixel)/(-pixel)" k=(sqr(pz)+pixel)/(pz-pixel) elseif @Fs=="(sqr-pixel)/(+pixel)+pixel" k=(sqr(pz)-pixel)/(pz+pixel)+pixel elseif @Fs=="(sqr+pixel)/(-pixel)+pixel" k=(sqr(pz)+pixel)/(pz-pixel)+pixel elseif @Fs=="(sqr-pixel)/(+pixel)-pixel" k=(sqr(pz)-pixel)/(pz+pixel)-pixel elseif @Fs=="(sqr+pixel)/(-pixel)-pixel" k=(sqr(pz)+pixel)/(pz-pixel)-pixel elseif @Fs=="-abs(pixel)+pixel" k=pz-abs(pixel)+pixel elseif @Fs=="+abs(pixel)-pixel" k=pz+abs(pixel)-pixel elseif @Fs=="+pixel^3" k=pz+pixel^3 elseif @Fs=="-pixel^3" k=pz-pixel^3 elseif @Fs=="sqr+pixel+pixel^3" k=pz^2+pixel+pixel^3 elseif @Fs=="sqr+pixel-pixel^3" k=pz^2+pixel-pixel^3 elseif @Fs=="+recip(pixel)" k=pz+1/pixel elseif @Fs=="-recip(pixel)" k=pz-1/pixel elseif @Fs=="ceil" k=ceil(pz) elseif @Fs=="floor" k=floor(pz) elseif @Fs=="trunc" k=trunc(pz) else k=round(pz) endif if i>=0 && i<=1E20 pz=(k-@p2)*exp(1i*pi/2*@p3)/@p4 float x=sqrt(@p5)*real(pz) float y=1/sqrt(@p5)*imag(pz) if @trap=="Alain Curve" b=abs((x^2-y^2)^2-@a^2*x^2+@a2^2*y^2) elseif @trap=="Ampersand Curve" b=abs((y^2-x^2)*(x-1)*(2*x-3)-4*(x^2+y^2-2*x)^2) elseif @trap=="Arcs of Samothrace" b=abs(x^2*(3*x^2-y^2)^2-y^2*(x^2+y^2)) elseif @trap=="Astroid" b=abs(x^(2/3)+y^(2/3)-@a^(2/3)) elseif @trap=="Atriphthaloid" b=abs(x^4*(x^2+y^2)-(@a2*x^2-@a^3)^2) elseif @trap=="Bean Curve" b=abs((x^2+y^2)^2-x^3-y^3) elseif @trap=="Bean Curve 2" b=abs(x^4+x^2*y^2+y^4-x*(x^2+y^2)) elseif @trap=="Beetle" b=abs((x^2+y^2)*(x^2+y^2-@a*x-@a2*y)-@a3^2*x^2*y^2) elseif @trap=="Biaxial Eight Reverse" b=abs(@a^2*y^2-x^2*(y^2-x^2)) elseif @trap=="Bicorn" b=abs(y^2*(@a^2-x^2)-(x^2+2*@a*y-@a^2)^2) elseif @trap=="Bicuspid" b=abs((x^2-@a^2)*(x-@a)^2+(y^2-@a^2)^2) elseif @trap=="Biquartic" b=abs(x^8+4*x^6*y+y^3*(y-1)+3*x^4*y*(2*y-3)+2*x^2*y^2*(2*y+3)) elseif @trap=="Blade's Cubic" b=abs(x^3+y^3-@a^3) elseif @trap=="Bolza" b=abs(y^2-x^5+x) elseif @trap=="Bow Curve" b=abs(x^4-(@a+1)*x^2*y+y^3) elseif @trap=="Bullet-Nose Curve" b=abs((@a^2-x^2)*(@a2^2+y^2)-@a^2*@a2^2) elseif @trap=="Butterfly Curve" b=abs(x^6+y^6-x^2) elseif @trap=="Butterfly Knot" b=abs((x^2+y^2)*x^4-(x^2-y^2)^2) elseif @trap=="Cardioid" b=abs((x^2+y^2-2*@a*x)^2-4*@a^2*(x^2+y^2)) elseif @trap=="Cartesian Oval" b=abs((@a2-3.2)*sqrt((x-@a)^2+y^2)+@a3*sqrt((x+@a)^2+y^2)-@a4) elseif @trap=="Cassinian Ovals" b=abs((x^2+y^2)^2-2*@a^2*(x^2-y^2)+@a^4-@a2^4) elseif @trap=="Catenary" b=abs(y-@a*cosh(x/@a)) elseif @trap=="Cayley's Sextic" b=abs(4*(x^2+y^2-@a*x)^3-27*@a^2*(x^2+y^2)^2) elseif @trap=="Cayley's Sextic 2" b=abs(-@a^3*x^3-48*@a*x*(x^2+y^2)^2+64*(x^2+y^2)^3-3*@a^2*(x^2+y^2)*(5*x^2+9*y^2)) elseif @trap=="Ceva's Trisectrix" b=abs((x^2+y^2)^3-((@a+1)*x^2-(@a-1)*y^2)^2) elseif @trap=="Chasles Cubic" b=abs(y-@a*x^3-@a2*x^2*y-@a3*x*y^2-@a4*y^3) elseif @trap=="Circle" b=abs(x^2+y^2-@a^2) elseif @trap=="Circular Cubic" b=abs(x*(x^2+y^2)+@a*x^2+@a2*y^2+2*@a3*x+2*@a4*y+@a5) elseif @trap=="Cissoid of Diocles" b=abs(y^2-x^3/(2*@a-x)) elseif @trap=="Cissoid of Diocles 2" b=abs(y^2*(2*@a-x)-x^8) elseif @trap=="Cissoid of Zahradnik" b=abs(@a3*x^2+2*@a4*x*y+(@a5+1)*y^2-2*@a*x-2*@a2*y) elseif @trap=="Clairaut Curve" b=abs((x^2+y^2)^((@a2+1)/2)-@a*y^@a2) elseif @trap=="Clinoid" b=abs(y-@a2*e^(x/@a)-@a3*e^(-x/@a)) elseif @trap=="Cochleoid" b=abs((x^2+y^2)*atan(y/x)-@a*y) elseif @trap=="Conchoid of a Circle" b=abs((x^2+y^2+@a3^2-@a2^2)^2*(y^2+(x+@a)^2)-4*@a3^2*(x*(x+@a)+y^2)^2) elseif @trap=="Conchoid of Nicomedes" b=abs((x-@a2)^2*(x^2+y^2)-@a^2*x^2) elseif @trap=="Conchoid of de Sluze" b=abs(@a*(x+@a)*(x^2+y^2)-@a2^2*x^2) elseif @trap=="Conic Sections" b=abs(2*@a^2*x+(1-@a^2)*x^2+y^2-@a^2) elseif @trap=="Cornoid" b=abs((x^2+y^2)^3+@a^2*(3*x^4-6*x^2*y^2-5*y^4)+8*@a^4*y^2-4*@a^6) elseif @trap=="Cornoid 2" b=abs(x^6+y^6+3*x^4*y^2+3*x^2*y^4+3*x^4-5*y^4+8*y^2-4) elseif @trap=="Coscoid" b=abs(y-@a*cos(x)/x) elseif @trap=="Cosecantoid" b=abs(y-@a/sin(x/@a2)) elseif @trap=="Cosinusoid" b=abs(y-@a*cos(x/@a2)) elseif @trap=="Cotangentoid" b=abs(y-@a*cotan(x/@a2)) elseif @trap=="Cross Curve" b=abs(@a^2*y^2+@a2^2*x^2-x^2*y^2) elseif @trap=="Cubic Joint" b=abs(y^2*x-@a*y^2-@a2*x^2) elseif @trap=="Cubic of Apollonius" b=abs((x-2*@a)*(x^2+y^2)+@a2^2*(cos(2*@a3*x)+sin(2*@a3*y))) elseif @trap=="Curve of Cramer" b=abs(x*(x^2+y^2)+(@a+1+@a2)*x^2-(@a+1-@a2)*y^2) elseif @trap=="Curve of Jefabek" b=abs((@a2+1)^2*(x^2+y^2-@a*x)^2-@a^2*(x^2+y^2)*(x-@a)^2) elseif @trap=="Curve of Loriga" b=abs(3*x^2-y^2-@a^2) elseif @trap=="Curve of Rosillo" b=abs(y^2*(@a3-x)^2-(@a2-x)^2*(@a^2-x^2)) elseif @trap=="Deltoid" b=abs((x^2+y^2+12*@a*x+9*@a^2)-4*@a*(2*x+3*@a)^3) elseif @trap=="Deltoid 2" b=abs((x^2+y^2)^2+18*@a^2*(x^2+y^2)-27*@a^4-8*@a*x*(x^2-3*y^2)) elseif @trap=="Devil's Curve" b=abs(y^4-x^4+@a*y^2+@a2*x^2) elseif @trap=="Devil's Curve 2" b=abs(y^4-x^4-@a^2*y^2+@a2^2*x^2) elseif @trap=="Dipole Curve" b=abs((x^2+y^2)^3-@a^4*x^2) elseif @trap=="Double Egg" b=abs((x^2+y^2)^3-@a^2*x^4) elseif @trap=="Double Egg 2" b=abs(x^4+2*x^2*y^2+4*y^4-x^3-6*x^2-x*y^2) elseif @trap=="Double Folium" b=abs((x^2+y^2)^2-4*@a*x*y^2) elseif @trap=="Double U" b=abs(y^2*(@a^2-x^2)-@a^4) elseif @trap=="Dumbbell Curve" b=abs(@a2^4*y^2-x^4*(@a^2-x^2)) elseif @trap=="Duplicatrix Cubic" b=abs(@a*y^2-x^2*(x-@a)) elseif @trap=="Durer's Conchoid" b=abs((x^2+x*y+@a*x-@a2^2)^2-(@a2^2-x^2)*(x-y+@a)^2) elseif @trap=="Durer's Conchoid 2" b=abs(2*y^2*(x^2+y^2)-2*@a2*y^2*(x+y)+(@a2^2-3*@a^2)*y^2-@a^2*x^2+2*@a^2*@a2*(x+y)+@a^2*(@a^2-@a2^2)) elseif @trap=="Dwulistne" b=abs((x^2+y^2)^2-(@a*x+@a2*y)*x^2) elseif @trap=="Egg of Columbus" b=abs(y^4+10*y^2*x^2+5*x^4-y) elseif @trap=="Egg of Granville" b=abs(x^2*y^2-@a^2*(x-(@a2+1-@a3))*(@a2+1+@a3-x)) elseif @trap=="Egg of Granville 2" b=abs(x^2*y^2-(x-(@a+0.5))*(1-x)) elseif @trap=="Egg of Kepler" b=abs((x^2+y^2)^2-@a*x^3) elseif @trap=="Eight Curve" b=abs(x^4-@a^2*(x^2-y^2)) elseif @trap=="Elkies Trinomial Curve" b=abs(y^2-x*(81*x^5+396*x^4+738*x^3+660*x^2+269*x+48)) elseif @trap=="Ellipse" b=abs(x^2/@a^2+y^2/@a2^2-1) elseif @trap=="Fish Curve" b=abs((2*x^2+y^2)^2+2*sqrt(2)*@a*x*(2*x^2-3*y^2)+2*@a^2*(y^2-x^2)) elseif @trap=="Focal Conic Conchoid" b=abs((x^2+y^2-@a*@a2*x)^2-(x^2+y^2)*(@a2*x-(@a+1))^2) elseif @trap=="Folium" b=abs((x^2+y^2)*(y^2+x*(x+@a2))-4*@a*x*y^2) elseif @trap=="Folium of Descartes" b=abs(x^3+y^3-3*@a*x*y) elseif @trap=="Folium of Durer" b=abs((x^2+y^2)*(2*(x^2+y^2)-@a^2)^2-@a^4*x^2) elseif @trap=="Frequency Curve" b=abs(y-sqrt(2*pi)*exp(-x^2/2)) elseif @trap=="Heart Curve" b=abs((x^3+y^2-1)^3-x^2*y^3) elseif @trap=="Heart of Eugene Beutel" b=abs((x^2+y^2-1)^3-x^2*y^3) elseif @trap=="Heart of Raphael Laporte" b=abs(x^8-x^6+27*x^4-27*x^2+12*y*x^6-12*y*x^4+42*y^2*x^4+42*y^2*x^2+2*y^3*x^4+26*y^3*x^2+8*y^3+12*y^4*x^2+12*y^4+6*y^5+y^6) elseif @trap=="Hippopede" b=abs((x^2+y^2)^2-@a*x^2-@a2*y^2) elseif @trap=="Hippopede of Proclus" b=abs((x^2+y^2)^2+4*@a2*(@a2-@a)*(x^2+y^2)-4*@a2^2*x^2) elseif @trap=="Hoerl Curve" b=abs(y-x^@a*e^x) elseif @trap=="Humbert's Cubic" b=abs(x^3-3*x*y^2-@a^3) elseif @trap=="Hyperbola" b=abs(x^2/@a^2-y^2/@a2^2-1) elseif @trap=="Hyperbola 2" b=abs(x^2/@a^2-y^2/@a2^2+1) elseif @trap=="Hyperbolic Cosecantoid" b=abs(y-@a/sinh(x/@a2)) elseif @trap=="Hyperbolic Cosinusoid" b=abs(y-@a*cosh(x/@a2)) elseif @trap=="Hyperbolic Cotangentoid" b=abs(y-@a*cotanh(x/@a2)) elseif @trap=="Hyperbolic Secantoid" b=abs(y-@a/cosh(x/@a2)) elseif @trap=="Hyperbolic Sinusoid" b=abs(y-@a*sinh(x/@a2)) elseif @trap=="Hyperbolic Tangentoid" b=abs(y-tanh(@a*x)) elseif @trap=="Hyperelliptic Curve" b=abs(y^2-x*(x+1)*(x-3)*(x+2)*(x-2)) elseif @trap=="Illumination Curve" b=abs(y^2-recip((x^2+1)^3)) elseif @trap=="Inverse Nephroid" b=abs((@a^2-4*(x^2+y^2))^3-108*@a^2*x^2*(x^2+y^2)) elseif @trap=="Isoptic Curve" b=abs(tan(@a)^2*(x+pi/2)^2-y^2+2*@a2*x) elseif @trap=="Kampyle of Eudoxus" b=abs(@a^2*x^4-@a2^4*(x^2+y^2)) elseif @trap=="Kappa Curve" b=abs(y^2*(x^2+y^2)-@a^2*x^2) elseif @trap=="Kepler's Folium" b=abs(((x-@a2)^2+y^2)*(x*(x-@a2)+y^2)-4*@a*(x-@a2)*y^2) elseif @trap=="Kiepert Curve" b=abs((x^2+y^2)^3-@a^3*x*(x^2-3*y^2)) elseif @trap=="Kieroid" b=abs(y^2*(x-@a)^2+x^2*(x-@a2)^2-@a3^2*x^2) elseif @trap=="Kiss Curve" b=abs(@a^4*y^2-(@a^2-x^2)^3) elseif @trap=="Klein Quartic" b=abs((x^2+y^2-@a2*@a^2)^2-@a3*@a*(y-@a+sqrt(3)*x)*(y-@a-sqrt(3)*x)*(2*y+@a)) elseif @trap=="Kulp Quartic" b=abs(x^2*y^2-@a^2*(@a^2-y^2)) elseif @trap=="Lemniscate of Bernoulli" b=abs((x^2+y^2)^2-@a^2*(x^2-y^2)) elseif @trap=="Lemniscate of Booth" b=abs((x^2+y^2)^2-(2*@a^2+@a2)*x^2+(2*@a^2-@a2)*y^2) elseif @trap=="Limacon of Pascal" b=abs((x^2+y^2-@a*y)^2-(x^2+y^2)) elseif @trap=="Limacon of Pascal 2" b=abs((x^2+y^2-@a*x)^2-@a2^2*(x^2+y^2)) elseif @trap=="Links Curve" b=abs((x^2+y^2-3*x)^2-4*x^2*(2-x)) elseif @trap=="Lissajous Curve" b=abs(2*(2*x^2-@a^2)^2-@a*(2*y-@a)^2*(y+@a)) elseif @trap=="Lissajous Curve 2" b=abs(x^2*(4*x^2-3*@a^2)+4*@a^2*y^2*(y^2-@a^2)) elseif @trap=="Lissajous Quadratic" b=abs(@a^4*y^4-4*@a^3*@a2*x*y^3+2*@a^2*@a2*y^3+6*@a^2*@a2^2*x^2*y^2 \ -4*@a*@a2^2*x*y^2-2*@a^3*x*y^2-2*@a^2*@a2^2*y^2+@a2^2*y^2+@a^2*y^2 \ -4*@a*@a2^3*x^3*y+2*@a2^3*x^2*y+4*@a^2*@a2*x^2*y+4*@a*@a2^3*x*y \ -2*@a2^3*y-4*@a^2*@a2*y+@a2^4*x^4-2*@a*@a2^2*x^3-2*@a2^4*x^2 \ +@a2^2*x^2+@a^2*x^2+2*@a*@a2^2*x-@a^2-@a2^2+@a2^4) elseif @trap=="Logarithmic Lemniscate" b=abs(y^2-x^2*log(@a^2/x^2)) elseif @trap=="Logarithmic Sinusoid" b=abs(y-log(sqrt(1-x^2))) elseif @trap=="Logistic Growth Curve" b=abs(y-recip(1+@a*e^x)) elseif @trap=="Maltese Cross Curve" b=abs(x*y*(x^2-y^2)-x^2-y^2) elseif @trap =="Neile's Semi-Cubical Parabola" b=abs(y^3-@a*x^2) elseif @trap =="Neile's Semi-Cubical Parabola 2" b=abs((x-0.5)^3-3*y^2) elseif @trap=="Nephroid" b=abs((x^2+y^2-4*@a^2)^3-108*@a^4*x^2) elseif @trap=="Nephroid of Freeth" b=abs((x^2+y^2)*(x*2+y^2-@a^2)^2-4*@a^2*(x^2+y^2-@a*x)^2) elseif @trap=="Newton's Diverging Parabolas" b=abs(@a*y^2-x*(x^2-2*@a2*x+@a3)) elseif @trap=="Newton's Diverging Parabolas 2" b=abs(y^2-x*(x^2+2*@a*x+@a2)) elseif @trap=="Nodal Curve" b=abs(x^2*y^2*(x^2+y^2)-(x^2-y^2)^2) elseif @trap=="Oblique Bifolium" b=abs((x^2+y^2)^2-x^2*(@a*x+@a2*y)) elseif @trap=="Oblique Cappa" b=abs((x^2+y^2)*y^2-@a^2*(x*sin(@a2)+y*cos(@a2))^2) elseif @trap=="Oblique Cissoid" b=abs((x^2+y^2)*(x*cos(@a2)+y*sin(@a2))-2*@a*y^2) elseif @trap=="Oblique Pancappa" b=abs((y-@a)^2*(x^2+y^2)-(@a2*x+@a3*y)^2) elseif @trap=="Oblique Strophoid" b=abs(y*(x^2+y^2)-@a*(x^2-y^2)-2*@a2*x*y) elseif @trap=="Ophiuride" b=abs(x*(x^2+y^2)-@a2*x*y-@a*y^2) elseif @trap=="Parabola" b=abs(4*@a*(x-@a2)-(y-@a3)^2) elseif @trap=="Parabola 2" b=abs(x-@a*(y-@a2)^2-@a3) elseif @trap=="Parabola 3" b=abs(y-@a*x^2-@a2*x-@a3) elseif @trap=="Parabolic Trifolium" b=abs(x^2*(x^2+y^2)-(@a+5)*y*(x^2-y^2)) elseif @trap=="Pear-Shaped Quartic" b=abs(@a2^2*y^2-x^3*(@a-x)) elseif @trap=="Pearls of Sluze" b=abs(y^(@a2+1)-@a3*(@a-x)^@a4*x^@a5) elseif @trap=="Pursuit Curve" b=abs(y-@a*x^2+log(x)) elseif @trap=="Pursuit Curve 2" b=abs(y-@a*x+log(x)) elseif @trap=="Quadratix of Hippias" b=abs(x-y*cotan(y/@a)) elseif @trap=="Quadrifolium" b=abs((x^2+y^2)^3-4*@a^2*x^2*y^2) elseif @trap=="Regular Trifolium" b=abs((x^2+y^2)^2-@a*x*(x^2-3*y^2)) elseif @trap=="Right Strophoid" b=abs(y^2-x^2*(@a-x)/(@a+x)) elseif @trap=="Rose Curve" b=abs(x-@a*sin(@a2*y)) elseif @trap=="Rose Curve 2" b=abs(x-@a*cos(@a2*y)) elseif @trap=="Satchel" b=abs((x^2-@a2*y)^2-@a^2*(x^2-y^2)) elseif @trap=="Scarab" b=abs((x^2+y^2)*(x^2+y^2+@a*x)^2-@a2^2*(x^2-y^2)^2) elseif @trap=="Scyphoid" b=abs(x^4-y^4-4*@a*x*y^2) elseif @trap=="Secantoid" b=abs(y-@a/cos(x/@a2)) elseif @trap=="Seccoid" b=abs(y-@a2/(x*cos(x))) elseif @trap=="Semi-Trident" b=abs(x*y^2-@a*x) elseif @trap=="Serpentine Curve" b=abs(y-@a*@a2*x/(x^2+@a^2)) elseif @trap=="Sincoid" b=abs(y-@a*sin(x)/x) elseif @trap=="Sinus Chain" b=abs(y^2-abs(sin(x)+0.1*sin(2*x))) elseif @trap=="Sinusoid" b=abs(y-@a*sin(x/@a2)) elseif @trap=="Spiric Curve" b=abs((x^2+y^2)^2+(@a-2)*x^2+@a2*y^2+2*@a3*x+@a4) elseif @trap=="Spiric of Perseus" b=abs((x^2+y^2)^2-2*@a*x^2-2*@a2*y^2+@a3) elseif @trap=="Spiric Sections" b=abs((@a3^2-@a^2+@a2^2+x^2+y^2)^2-4*@a3^2*(x^2+@a2^2)) elseif @trap=="Superellipse" b=abs((x/@a)^@a3+(y/@a2)^@a3-1) elseif @trap=="Superellipse 2" b=abs(cabs((x-@a)/@a3)^@a4+cabs((y-@a2)/@a3)^@a4-1) elseif @trap=="Swastika Curve" b=abs(2*x*y-x^4+y^4) elseif @trap=="Syntractrix" b=abs(x+sqrt((@a2+1)^2-y^2)-@a*log(((@a2+1)+sqrt((@a2+1)^2-y^2))/y)) elseif @trap=="Szego Curve" b=abs(x^2+y^2-e^(2*x-2)) elseif @trap=="Tancoid" b=abs(y-@a*tan(x)/x) elseif @trap=="Tangentoid" b=abs(y-@a*tan(x/@a2)) elseif @trap=="Tetracuspid" b=abs(@a^@a2*(cabs(x)^@a2+cabs(y)^@a2)-(x^2+y^2)^@a2) elseif @trap=="Torpedo" b=abs((x^2+y^2)^2-@a*x*(x^2-y^2)) elseif @trap=="Tractrix" b=abs(x-log(((@a+1)-sqrt((@a+1)^2-y^2))/y)-sqrt((@a+1)^2-y^2)) elseif @trap=="Trident" b=abs(y-x^2-@a/x) elseif @trap=="Trident 2" b=abs(x*y+@a*x^3+@a2*x^2+@a3*x-@a4) elseif @trap=="Trifolium" b=abs((x^2+y^2)^2-(x^2+y^2)*(@a*x+@a2*y)-@a3*x*(x^2-3*y^2)) elseif @trap=="Trifolium 2" b=abs((x^2+y^2)^2-(@a*x+@a2*y)*(x^2-y^2)) elseif @trap=="Trisectrix of Delange" b=abs((x^2+y^2-2*@a^2)^2-x^2*(x^2+y^2)) elseif @trap=="Trisectrix of Maclaurin" b=abs(y^2*(@a+x)-x^2*(3*@a-x)) elseif @trap=="Trisectrix of Maclaurin 2" b=abs(2*x^3+2*x*y^2-3*x^2+y^2) elseif @trap=="Trott Curve" b=abs(144*(x^4+y^4)-225*(x^2+y^2)+350*x^2*y^2+81) elseif @trap=="Tschirnhaus' Cubic" b=abs(3*@a*y^2-x*(x-@a)^2) elseif @trap=="Tschirnhaus' Cubic 2" b=abs(27*@a*y^2-(@a-x)*(x+8*@a)^2) elseif @trap=="Visiera" b=abs(x*(x^2+y^2)-@a*(x^2+2*y^2)) elseif @trap=="Viviani's Curve" b=abs(y^2-x^2*(@a^2-x^2)) elseif @trap=="Watt's Curve" b=abs((x^2+y^2)*(x^2+y^2-@a3^2)^2+4*@a^2*y^2*(x^2+y^2-@a2^2)) elseif @trap=="Witch of Agnesi" b=abs(y-8*@a^3/(x^2+4*@a^2)) elseif @trap=="OM1" b=abs((x^2+y^2)^3-@a*x*(x-@a)+y*(y+@a)) elseif @trap=="OM2" b=abs((x^2-y^2)*(x^2+y^2)^2-2*@a*x*y*(x-@a^2)) elseif @trap=="OM3" b=abs(@a*sin(x^2+y^2)+@a2*x*(x^2-y^2)-2*@a*x*y*(@a^2-@a2^2)) elseif @trap=="OM4" b=abs(recip(@a*(x^2-1))*@a2^2*x*tanh(@a*(y^2-1))-@a*@a2*(x*y+1)) elseif @trap=="OM5" b=abs(x+y^2+@a*x^3+@a2*y^4+@a^2*@a2^2*x^5*y^5) elseif @trap=="OM6" b=abs(sin(x)^3+sin(y)^3-@a) elseif @trap=="OM7" b=abs(x^(2/3)+(@a*y)^(2/3)+(@a^2*x*y)^(2/3)-@a^3) elseif @trap=="OM8" b=abs((x^2-@a^2)*(x-@a)+(y^2-@a^2)^2) elseif @trap=="OM9" b=abs((x^2-(@a-0.5)^2)*(x-(@a-0.5))^2+(y^2-(@a-0.5)^2)^3) elseif @trap=="OM10" b=abs((x^2-@a^2)*(x-@a)^3+(y^2-@a2^2)^2) elseif @trap=="OM11" b=abs(((@a*@a2-x)^2+(@a2-y)^2)/@a3^2-1) elseif @trap=="OM12" b=abs((x^2+y^2)^2-@a/(x^2-y^2)) elseif @trap=="OM13" b=abs((x^2+y^2)^4-@a*(x^2+y^2)^3+(x^2+y^2)^2-(x^2+y^2)+y-(1-@a2)) elseif @trap=="OM14" b=abs((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)) elseif @trap=="OM15" b=abs((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y) elseif @trap=="OM16" b=abs(@a*y-@a2/(x*cos(x))+@a3/(x*cos(y))) elseif @trap=="OM17" b=abs((x^2+y^2)*(x^2-y^2)/(2*@a*x*y)+(@a-1)) elseif @trap=="OM18" b=abs(y^2+@a*x^3*tanh(x^2-y^2)-x^2*y*(x^2+y^2)) elseif @trap=="OM19" b=abs(((@a*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))) elseif @trap=="OM20" b=abs(y^2+x^2-((x+(@a3*(x-@a))/sqrt((x-@a)^2+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqrt((x-@a)^2+(y-@a2)^2)))) elseif @trap=="OM21" b=abs(x^2-4*@a*y*(x^2+y^2)+y^3*@a^2*(x^2-y^2)^4) elseif @trap=="OM22" b=abs(y-x*(x^4-@a)*(x^2+y^2)^2) elseif @trap=="OM23" b=abs((x^3-x^2-(3*x+@a)*y^2)*(x^3-x^2+(3*x+@a)*y^2)) elseif @trap=="OM24" b=abs(-@a*(x^2-y^2)^2+@a^2*x^2+@a2^2*y^2-@a2*(x^4-y^3-x^2+y)) elseif @trap=="OM25" b=abs((@a+1)*y-@a2*(x^2+y^2)+@a3*(x*y-y^2)-@a4*x^2*y) elseif @trap=="OM26" b=abs(@a*sin(x)^4+@a2*y^3-@a3*(x^2-y^3)) elseif @trap=="OM27" b=abs((x^2-@a^2)*((x-y)^3-@a2)+(y^2-@a3^2)^2) elseif @trap=="OM28" b=abs((x^3-(@a-0.5)^2)*(x-(@a2-0.5))^2+(y^2-(@a3-0.5)^3)^3-x*y) elseif @trap=="OM29" b=abs(((@a*@a2+x)^2+(@a2-y^2)^2)/@a3^2-1) elseif @trap=="OM30" b=abs(@a*(x^2+y^2)^4-@a*(x^2+y^2)^3+@a2*(x^2+y^2)^2-(x^2+y^2)+@a3*y) elseif @trap=="OM31" b=abs((2*@a)^@a2*y^2-(@a+x)*(@a-x)^(@a2+1)) elseif @trap=="OM32" b=abs(x+y^2+@a*x+x^2+y+@a2*x-x^3) elseif @trap=="OM33" b=abs(@a*y-@a2*x^2+@a3*x*y+x^2*y) elseif @trap=="OM34" b=abs((x^2+y^2)^5+@a*(x^2-y^2)^3-@a^2*y) elseif @trap=="OM35" b=abs((((@a-0.5)*@a2-x*y)^3+(@a2*@a3-(X^2+y^2)^2))) elseif @trap=="OM36" b=abs(y^2+x^2-((x+(@a3*(x-@a))/sqr((x-@a)^3+(y-@a2)^2))-(y+(@a3*(y-@a2))/sqr((x+@a)^2+(y-@a2)^4)))) elseif @trap=="OM37" b=abs(x^2-@a*y*(x^2-y^2)+y^3*@a^2*(x^2+y)^2-(@a2+3)*x^2*y^2) elseif @trap=="OM38" b=abs(@a*y-@a2*x^2+@a3*x*y+@a4*sqr(x^2*y)) elseif @trap=="OM39" b=abs((@a+1)*y-@a2*(x^2+y^2)+@a3*(x*y-y^2)-@a4*x^2*y) elseif @trap=="OM40" b=abs(-@a*(x^2-y^2+x)^2+@a^2*x^2+@a2^2*y^2-@a2*(x^5+y^3-x^2+y)) elseif @trap=="OM41" b=abs(y*x+x^2-(@a+2)*x^4-@a2*x^3+y*x^2) elseif @trap=="OM42" b=abs(@a*x+@a2^2*x^4+@a^2*y-@a2*x*y^2) elseif @trap=="OM43" b=abs(@a*x+x*y^3+@a2*abs(x-y)-x^4*y) elseif @trap=="OM44" b=abs((@a+3)*x+x*y^3+@a2*sqr(x-y)-1/(x*y)) endif b2=cabs(pz)+@f b=abs(b^(0.01*@pow1)-b2^0.01)^2 a=b/(cabs(pz)+1)^@pow2+a endif endfunc float func ResultIndex(complex pz) if @solid if @invert if 1000*a<@p7 index=1000*a else m_Solid=true endif else if 1000*a>@p7 index=1000*a else m_Solid=true endif endif else index=1000*a endif return index endfunc private: float a float b float b2 int i float index default: title="Diet Traps" int param version caption="Version" default=100 visible=@version<100 endparam param trap caption="Trapshape" default=0 enum="Alain Curve""Ampersand Curve""Arcs of Samothrace""Astroid""Atriphthaloid""Bean Curve""Bean Curve 2"\ "Beetle""Biaxial Eight Reverse""Bicorn""Bicuspid""Biquartic""Blade's Cubic"\ "Bolza""Bow Curve""Bullet-Nose Curve""Butterfly Curve""Butterfly Knot"\ "Cardioid""Cartesian Oval""Cassinian Ovals""Catenary""Cayley's Sextic""Cayley's Sextic 2""Ceva's Trisectrix"\ "Chasles Cubic""Circle""Circular Cubic""Cissoid of Diocles""Cissoid of Diocles 2""Cissoid of Zahradnik"\ "Clairaut Curve""Clinoid""Cochleoid""Conchoid of a Circle""Conchoid of Nicomedes""Conchoid of de Sluze"\ "Conic Sections""Cornoid""Cornoid 2""Coscoid""Cosecantoid""Cosinusoid""Cotangentoid""Cross Curve""Cubic Joint""Cubic of Apollonius"\ "Curve of Cramer""Curve of Jefabek""Curve of Loriga""Curve of Rosillo""Deltoid""Deltoid 2"\ "Devil's Curve""Devil's Curve 2""Dipole Curve""Double Egg""Double Egg 2""Double Folium"\ "Double U""Dumbbell Curve""Duplicatrix Cubic""Durer's Conchoid""Durer's Conchoid 2""Dwulistne""Egg of Columbus"\ "Egg of Granville""Egg of Granville 2""Egg of Kepler""Eight Curve""Elkies Trinomial Curve""Ellipse"\ "Fish Curve""Focal Conic Conchoid""Folium""Folium of Descartes""Folium of Durer""Frequency Curve"\ "Heart Curve""Heart of Eugene Beutel""Heart of Raphael Laporte""Hippopede""Hippopede of Proclus"\ "Hoerl Curve""Humbert's Cubic""Hyperbola""Hyperbola 2""Hyperbolic Cosecantoid""Hyperbolic Cosinusoid"\ "Hyperbolic Cotangentoid""Hyperbolic Secantoid""Hyperbolic Sinusoid""Hyperbolic Tangentoid"\ "Hyperelliptic Curve""Illumination Curve""Inverse Nephroid""Isoptic Curve""Kampyle of Eudoxus"\ "Kappa Curve""Kepler's Folium""Kiepert Curve""Kieroid""Kiss Curve""Klein Quartic""Kulp Quartic"\ "Lemniscate of Bernoulli""Lemniscate of Booth""Limacon of Pascal""Limacon of Pascal 2"\ "Links Curve""Lissajous Curve""Lissajous Curve 2""Lissajous Quadratic""Logarithmic Lemniscate"\ "Logarithmic Sinusoid""Logistic Growth Curve""Maltese Cross Curve""Neile's Semi-Cubical Parabola""Neile's Semi-Cubical Parabola 2""Nephroid"\ "Nephroid of Freeth""Newton's Diverging Parabolas""Newton's Diverging Parabolas 2""Nodal Curve""Oblique Bifolium""Oblique Cappa"\ "Oblique Cissoid""Oblique Pancappa""Oblique Strophoid""Ophiuride""Parabola""Parabola 2""Parabola 3"\ "Parabolic Trifolium""Pear-Shaped Quartic""Pearls of Sluze""Pursuit Curve""Pursuit Curve 2"\ "Quadratix of Hippias""Quadrifolium""Regular Trifolium""Right Strophoid""Rose Curve""Rose Curve 2""Satchel"\ "Scarab""Scyphoid""Secantoid""Seccoid""Semi-Trident""Serpentine Curve""Sincoid""Sinus Chain""Sinusoid" \ "Spiric Curve""Spiric of Perseus""Spiric Sections""Superellipse"\ "Superellipse 2""Swastika Curve""Syntractrix""Szego Curve""Tancoid""Tangentoid""Tetracuspid""Torpedo""Tractrix"\ "Trident""Trident 2""Trifolium""Trifolium 2""Trisectrix of Delange""Trisectrix of Maclaurin""Trisectrix of Maclaurin 2"\ "Trott Curve""Tschirnhaus' Cubic""Tschirnhaus' Cubic 2""Visiera""Viviani's Curve""Watt's Curve""Witch of Agnesi""OM1"\ "OM2""OM3""OM4""OM5""OM6""OM7""OM8""OM9""OM10""OM11""OM12""OM13""OM14""OM15""OM16""OM17""OM18""OM19""OM20""OM21""OM22"\ "OM23""OM24""OM25""OM26""OM27""OM28""OM29""OM30""OM31""OM32""OM33""OM34""OM35""OM36""OM37""OM38""OM39""OM40""OM41""OM42""OM43""OM44" endparam param Fs caption="Function" enum="sin""sinh""asin""asinh""cos""cosh""acos""acosh""tan""tanh""atan"\ "atanh""cotan""cotanh""sqr""sqrt""log""exp""abs""cabs""conj"\ "flip""ident""recip""versin""aversin""haversin""ahaversin""coversin""acoversin"\ "hacoversin""vercos""avercos""havercos""ahavercos""covercos"\ "acovercos""hacovercos""acotan""acotanh" \ "sec""sech""asec""asech""cosec""cosech""acosec""acosech""exsec""aexsec"\ "excosec""aexcosec""crd""acrd""gd""agd""sinc""sinhc""cosc""coshc"\ "tanc""tanhc""cotanc""cotanhc""secc""sechc""cosecc""cosechc"\ "cube""cuberoot""colog""logit""expit""gauss""softplus"\ "primecount""sqr+""cube+""sin+""cos+""tan+""cotan+""sec+""cosec+""sin*""cos*""tan*""cotan*""sec*"\ "cosec*""loglog""sinsin""coscos""+pixel""-pixel""*pixel""/pixel""+pixel+sqr(pixel)""+pixel-sqr(pixel)""-pixel+sqr(pixel)""-pixel-sqr(pixel)"\ "(sqr-pixel)/(+pixel)""(sqr+pixel)/(-pixel)""(sqr-pixel)/(+pixel)+pixel""(sqr+pixel)/(-pixel)+pixel""(sqr-pixel)/(+pixel)-pixel""(sqr+pixel)/(-pixel)-pixel"\ "-abs(pixel)+pixel""+abs(pixel)-pixel""+pixel^3""-pixel^3""sqr+pixel+pixel^3""sqr+pixel-pixel^3""+recip(pixel)""-recip(pixel)"\ "ceil""floor""trunc""round" default=22 endparam param a caption="Trapshape Parameter" default=1.0 visible=@trap!="Frequency Curve" \ && @trap!="Arcs of Samothrace" && @trap!="Illumination Curve" \ && @trap!="Logarithmic Sinusoid" \ && @trap!="Elkies Trinomial Curve" && @trap!="Bolza" \ && @trap!="Hyperelliptic Curve" \ && @trap!="Maltese Cross Curve" && @trap!="Ampersand Curve" \ && @trap!="Heart of Eugene Beutel" && @trap!="Heart of Raphael Laporte" \ && @trap!="Butterfly Knot" && @trap!="Trott Curve" && @trap!="Swastika Curve" \ && @trap!="Biquartic" && @trap!="Butterfly Curve" && @trap!="Bean Curve" \ && @trap!="Bean Curve 2" && @trap!="Egg of Columbus" && @trap!="Sinus Chain" \ && @trap!="Szego Curve" && @trap!="Links Curve" && @trap!="Double Egg 2" \ && @trap!="Heart Curve" && @trap!="Cornoid 2" \ && @trap!="Nodal Curve" && @trap!="Trisectrix of Maclaurin 2" \ && @trap!="Neile's Semi-Cubical Parabola 2" endparam param a2 caption="Trapshape Parameter 2" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Conchoid of de Sluze" \ || @trap=="Ellipse" || @trap=="Folium" || @trap=="Kampyle of Eudoxus" \ || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" \ || @trap=="Bullet-Nose Curve" \ || @trap=="Dwulistne" || @trap=="Cubic Joint" || @trap=="Syntractrix" \ || @trap=="Oblique Strophoid" || @trap=="Superellipse 2" || @trap=="Oblique Cissoid" \ || @trap=="Hippopede" || @trap=="Oblique Pancappa" || @trap=="Oblique Cappa" \ || @trap=="Oblique Bifolium" || @trap=="Lemniscate of Booth" \ || @trap=="Curve of Jefabek" || @trap=="Curve of Cramer" \ || @trap=="OM3" || @trap=="OM4" || @trap=="OM5" || @trap=="Hippopede of Proclus" \ || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Rose Curve" || @trap=="Rose Curve 2" || @trap=="Cassinian Ovals" \ || @trap=="Conchoid of Nicomedes" || @trap=="Devil's Curve" || @trap=="Durer's Conchoid" \ || @trap=="Devil's Curve 2" || @trap=="Durer's Conchoid 2" || @trap=="Hyperbola" \ || @trap=="Parabola" || @trap=="Hyperbola 2" \ || @trap=="Pear-Shaped Quartic" || @trap=="Serpentine Curve" || @trap=="Sinusoid"\ || @trap=="Trident 2" || @trap=="Atriphthaloid" || @trap=="Clairaut Curve" || @trap=="Clinoid" \ || @trap=="Cross Curve" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" || @trap=="Circular Cubic" \ || @trap=="Dumbbell Curve" || @trap=="Kieroid"\ || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" || @trap=="OM13" || @trap=="Ophiuride" \ || @trap=="Klein Quartic" || @trap=="Tangentoid" || @trap=="Beetle" || @trap=="Secantoid" || @trap=="Hyperbolic Secantoid" \ || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" || @trap=="Tetracuspid" || @trap=="Trifolium" \ || @trap=="Trifolium 2" || @trap=="OM14" || @trap=="OM10"|| @trap=="Isoptic Curve" || @trap=="Cotangentoid" \ || @trap=="Cosinusoid" || @trap=="Hyperbolic Cosinusoid" || @trap=="Cosecantoid" || @trap=="Hyperbolic Cosecantoid" \ || @trap=="Hyperbolic Sinusoid" || @trap=="Hyperbolic Cotangentoid" || @trap=="OM16" || @trap=="Alain Curve" \ || @trap=="OM19" || @trap=="OM20" || @trap=="Focal Conic Conchoid" || @trap=="Conchoid of a Circle" || @trap=="Satchel" \ || @trap=="Kepler's Folium" || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Scarab" || @trap=="Lissajous Quadratic" \ || @trap=="Watt's Curve" || @trap=="Limacon of Pascal 2" || @trap=="Newton's Diverging Parabolas 2" || @trap=="OM24" \ || @trap=="OM25" || @trap=="OM26" || @trap=="OM27" || @trap=="OM28" || @trap=="OM29" || @trap=="OM30" || @trap=="OM31" || @trap=="OM32" \ || @trap=="OM33" || @trap=="OM35" || @trap=="OM36" || @trap=="OM37" || @trap=="OM38" || @trap=="OM39" || @trap=="OM40" \ || @trap=="OM41" || @trap=="OM42" || @trap=="OM43" || @trap=="OM44" endparam param a3 caption="Trapshape Parameter 3" default=1.0 visible=@trap=="Cartesian Oval" || @trap=="Superellipse" || @trap=="Newton's Diverging Parabolas" \ || @trap=="Pearls of Sluze" || @trap=="Spiric Sections" || @trap=="Superellipse 2" \ || @trap=="Oblique Pancappa" || @trap=="OM11" || @trap=="Cissoid of Zahradnik" \ || @trap=="Parabola" \ || @trap=="Trident 2" || @trap=="Clinoid" || @trap=="Cubic of Apollonius" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Kieroid" || @trap=="Egg of Granville" || @trap=="Curve of Rosillo" \ || @trap=="Klein Quartic" || @trap=="Beetle" || @trap=="Spiric Curve" || @trap=="Spiric of Perseus" \ || @trap=="Trifolium" || @trap=="OM16" || @trap=="OM19" || @trap=="OM20" || @trap=="Conchoid of a Circle" \ || @trap=="Parabola 2" || @trap=="Parabola 3" || @trap=="Watt's Curve" || @trap=="OM25" || @trap=="OM26" || @trap=="OM27" \ || @trap=="OM28" || @trap=="OM29" || @trap=="OM33" || @trap=="OM35" || @trap=="OM36" || @trap=="OM38" || @trap=="OM39" endparam param a4 caption="Trapshape Parameter 4" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Superellipse 2" || @trap=="Cissoid of Zahradnik" \ || @trap=="Trident 2" || @trap=="Cartesian Oval" || @trap=="Chasles Cubic" \ || @trap=="Circular Cubic" || @trap=="Spiric Curve" || @trap=="OM25" || @trap=="OM38" || @trap=="OM39" endparam param a5 caption="Trapshape Parameter 5" default=1.0 visible=@trap=="Pearls of Sluze" || @trap=="Cissoid of Zahradnik" \ || @trap=="Circular Cubic" endparam param p4 caption="Parameter 1" default=1.0 endparam param p5 caption="Parameter 2" default=1.0 endparam param f caption="Parameter 3" default=1.0 endparam param p2 caption="Center" default=(0,0) endparam param p3 caption="Rotation" default=0.0 endparam param pow1 caption="Exponent 1" default=.2 endparam param pow2 caption="Exponent 2" default=1.0 endparam param solid caption="Solid Colour" default=false endparam param p7 caption="Solid Colour Adjustment" default=0.1 visible=@solid==true endparam param invert caption="Invert Solid Colour" default=false visible=@solid==true endparam } class OM_DasDebataX1(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@sf(pz) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 float d=real(pz) if d<0 fz=imag(pz)-log(cotan(@p2*real(pz)-@p3))+flip(@p1-real(pz)) else fz=imag(pz)+log(cotan(@p2*real(pz)-@p3))+flip(@p1-real(pz)) endif u=(1-@ddp1)*pz+@ddp1*fz float d2=real(u) if d2<0 fu=imag(u)-log(cotan(@p5*real(u)-@p6))+flip(@p4-real(u)) else fu=imag(u)+log(cotan(@p5*real(u)-@p6))+flip(@p4-real(u)) endif pz=(1-@ddp2)*pz+@ddp2*fu return pz endfunc private: complex fz complex fu default: title="Das-Debata X 1" int param version caption="Version" default=100 visible=@version<100 endparam param ddp1 caption="Das-Debata Parameter 1" default=(1.25,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(-0.05,0.25) endparam param p1 caption="X Parameter 1" default=(-1.25,0) endparam param p2 caption="X Parameter 2" default=(0,-0.4) endparam param p3 caption="X Parameter 3" default=(2,0) endparam param p4 caption="X Parameter 4" default=(-1.25,0) endparam param p5 caption="X Parameter 5" default=(0,-0.4) endparam param p6 caption="X Parameter 6" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=1000000.0 exponential=true endparam } class OM_DasDebataX2(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) else if @st==0 pz=@sf(pz) else pz=@sp endif endif fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 fz=@p1*pz^3+@p2*pz^2+@p3/pz u=(1-@ddp1)*pz+@ddp1*fz fu=@p4*u^3+@p5*u^2+@p6/u pz=(1-@ddp2)*pz+@ddp2*fu elseif @jm==1 fz=@p1*pz^3+@p2*pz^2+@p3*fpixel/pz u=(1-@ddp1)*pz+@ddp1*fz fu=@p4*u^3+@p5*u^2+@p6*fpixel/u pz=(1-@ddp2)*pz+@ddp2*fu elseif @jm==2 fz=@p1*pz^3+@p2*pz^2+@p3/pz+fpixel u=(1-@ddp1)*pz+@ddp1*fz fu=@p4*u^3+(@p5-1.4)*u^2+@p6/u+fpixel pz=(1-@ddp2)*pz+@ddp2*fu else fz=@p1*pz^3+@p2*pz^2+@p3*fpixel/pz+fpixel u=(1-@ddp1)*pz+@ddp1*fz fu=@p4*u^3+@p5*u^2+@p6*fpixel/u+fpixel pz=(1-@ddp2)*pz+@ddp2*fu endif return pz endfunc private: complex fz complex fu complex fpixel default: title="Das-Debata X 2" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M1""M2""M3" endparam param st caption="Start Type" enum="Pixel""Parameter" visible=@jm!=0 endparam param sp caption="Start Parameter" default=(-0.5,0) visible=(@jm!=0 && @st==1) endparam param ddp1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(-0.5,0) endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(-0.65,0) endparam param p3 caption="X Parameter 3" default=(1,0) endparam param p4 caption="X Parameter 4" default=(-0.3,0) endparam param p5 caption="X Parameter 5" default=(1,0) endparam param p6 caption="X Parameter 6" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_SierpinskiSurprise(common.ulb:DivergentFormula) { public: complex func Init(complex pz) pz=@fn7(pz)^@pow return pz endfunc complex func Iterate(complex pz) if imag(pz)>0.5 pz=@p11*@fn6(@p1*fn1(2*real(pz) + flip(2*imag(pz)-1))+@p6)+@p12 elseif real(pz)>0.5 pz=@p11*@fn6(@p2*fn2(2*real(pz)-1 + flip(2*imag(pz)))+@p7)+@p12 elseif imag(pz)<-0.5 pz=@p11*@fn6(@p3*fn3(2*real(pz) + flip(2*imag(pz)+1))+@p8)+@p12 elseif real(pz)<-0.5 pz=@p11*@fn6(@p4*fn4(2*real(pz)+1 + flip(2*imag(pz)))+@p9)+@p12 else pz=@p11*@fn6(@p5*@fn5(2*real(pz) + flip(2*imag(pz)))+@p10)+@p12 endif return pz endfunc default: title="Sierpinski Surprise" int param version caption="Version" default=100 visible=@version<100 endparam func fn7 caption="Function (Start)" default=ident() endfunc param pow caption="Exponent (Start)" default=1.0 endparam func fn1 caption="Function (Top)" default=ident() endfunc param p1 caption="Parameter (Top) 1" default=(1,0) endparam param p6 caption="Parameter (Top) 2" default=(0,0) endparam func fn2 caption="Function (Right)" default=ident() endfunc param p2 caption="Parameter (Right) 1" default=(1,0) endparam param p7 caption="Parameter (Right) 2" default=(0,0) endparam func fn3 caption="Function (Bottom)" default=ident() endfunc param p3 caption="Parameter (Bottom) 1" default=(1,0) endparam param p8 caption="Parameter (Bottom) 2" default=(0,0) endparam func fn4 caption="Function (Left)" default=ident() endfunc param p4 caption="Parameter (Left) 1" default=(1,0) endparam param p9 caption="Parameter (Left) 2" default=(0,0) endparam func fn5 caption="Function (Centre)" default=ident() endfunc param p5 caption="Parameter (Centre) 1" default=(1,0) endparam param p10 caption="Parameter (Centre) 2" default=(0,0) endparam func fn6 caption="Function (Whole)" default=ident() endfunc param p11 caption="Parameter (Whole) 1" default=(1,0) endparam param p12 caption="Parameter (Whole) 2" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=4.0 exponential=true endparam } class OM_DasDebataX3(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) c1=@js c2=@js2 else pz=@sp c1=@sf(fpixel) c2=@sf(fpixel) endif fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 fz=pz^@pow1+@p1*e^pz+c1 u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@p2*e^u+c2 pz=(1-@ddp2)*pz+@ddp2*fu return pz endfunc private: complex c1 complex c2 complex fz complex fu default: title="Das-Debata X 3" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed 1" default=(-2,0) visible=@jm==0 endparam param js2 caption="Julia Seed 2" default=(-1.25,0) visible=@jm==0 endparam param ddp1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(-0.5,0) endparam param p1 caption="X Parameter 1" default=(1,0) endparam param p2 caption="X Parameter 2" default=(1,0) endparam param pow1 caption="Exponent 1" default=(3,0) endparam param pow2 caption="Exponent 2" default=(3,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_DasDebataX4(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz if @jm==0 pz=@sf(pz) c1=@js c2=@js2 else pz=@sp c1=@sf(fpixel) c2=@sf(fpixel) endif fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 fz=pz^@pow1+1/((pz)^2+@xp1*fn1(pz)+c1) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+1/((u)^2+@xp2*fn2(u)+c2) pz=(1-@ddp2)*pz+@ddp2*fu return pz endfunc private: complex c1 complex c2 complex fz complex fu default: title="Das-Debata X 4" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp caption="Start Parameter" default=(0,0) visible=@jm==1 endparam param js caption="Julia Seed 1" default=(0.5,0) visible=@jm==0 endparam param js2 caption="Julia Seed 2" default=(-2,0) visible=@jm==0 endparam param ddp1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param xp1 caption="X Parameter 1" default=(1,0) endparam param xp2 caption="X Parameter 2" default=(1,0) endparam func fn1 caption="X Function 1" default=ident() endfunc func fn2 caption="X Function 2" default=ident() endfunc param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10.0 exponential=true endparam } class OM_DasDebataX5(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz pz=@sp c1=@pp1*@sf(fpixel) c2=@pp2*@sf(fpixel) fz=(0,0) fu=(0,0) return pz endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 fz=pz^@pow1+@xp1*pz+c1+@xp2/fn1(c1*pz) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*u+c2+@xp4/fn2(c2*u) pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==1 fz=pz^@pow1+@xp1*pz+c1+1/(c1*pz)-(1-c1)/(1+c1)+@xp2*(pz-1)/(pz+1) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*u+c2+1/(c2*u)-(1-c2)/(1+c2)+@xp4*(u-1)/(u+1) pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==2 fz=pz^@pow1+@xp1*c1/(pz+@xp2*c1/fn1(pz))+(1/c1-c1)/(c1+1)+c1^2/(1-c1) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*c2/(u+@xp4*c2/fn2(u))+(1/c2-c2)/(c2+1)+c2^2/(1-c2) pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==3 fz=pz^@pow1+@xp1*c1/(pz+@xp2*c1/fn1(pz))+(c1+1)/(1/c1-c1)+c1^2/(1-c1) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*c2/(u+@xp4*c2/fn2(u))+(c2+1)/(1/c2-c2)+c2^2/(1-c2) pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==4 fz=pz^@pow1+@xp1*c1/(pz+@xp2*c1/fn1(pz))+(1/c1-c1)/(c1+1)+c1^2/(1-c1)+1/c1 u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2-@xp3*c2/(u+@xp4*c2/fn2(u))+(1/c2-c2)/(c2+1)+c2^2/(1-c2)+1/c2 pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==5 fz=pz^@pow1+@xp1*c1/(pz+@xp2*c1/fn1(pz))+(c1+1)/(1/c1-c1)+c1^2/(1-c1)+1/c1 u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*c2/(u+@xp4*c2/fn2(u))+(c2+1)/(1/c2-c2)+c2^2/(1-c2)+1/c2 pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==6 fz=pz^(@pow1-1)+(pz^2-(@xp1+1.75)^2)*(pz-(@xp1+1.75))^2+fn1(c1/pz-(@xp2+1.75)^2+1/c1) u=(1-(@ddp1-0.75))*pz+(@ddp1-0.75)*fz fu=u^(@pow2-1)+(u^2-(@xp3+3)^2)*(u-(@xp3+3))^2+fn2(c2/u-@xp4^2+1/c2) pz=(1-(@ddp2-1))*pz+(@ddp2-1)*fu else fz=pz^@pow1+@xp1*c1/pz+(@xp2+2)/c1+c1/(1-c1)+fn1(1/(c1-pz)) u=(1-@ddp1)*pz+@ddp1*fz fu=u^@pow2+@xp3*c2/u+@xp4/c2+c2/(1-c2)+fn2(1/(c2-u)) pz=(1-@ddp2)*pz+@ddp2*fu endif return pz endfunc private: complex c1 complex c2 complex fz complex fu default: title="Das-Debata X 5" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3""4""5""6""7""8" endparam param sp caption="Start Parameter" default=(1,0) endparam param ddp1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param xp1 caption="X Parameter 1" default=(-1,0) endparam param xp2 caption="X Parameter 2" default=(-1,0) endparam param xp3 caption="X Parameter 3" default=(-2,0) endparam param xp4 caption="X Parameter 4" default=(1,0) endparam param pow1 caption="Exponent 1" default=(2,0) endparam param pow2 caption="Exponent 2" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func fn1 caption="X Function 1" default=ident() endfunc func fn2 caption="X Function 2" default=ident() endfunc param pp1 caption="Pixel Parameter 1" default=(1,0) endparam param pp2 caption="Pixel Parameter 2" default=(1,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100000.0 exponential=true endparam } class OM_ModifiedDasDebataPhoenix(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif c=@sf(pixel) return pz return a endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz+@ar/pz if @jm==0 u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a+1/pz) b=(1-@p2)*pz+@p2*(u^@pow1b+u^@pow2b*@pp2b+@pp1b*a+1/u) else u=(1-@p1)*pz+@p1*(pz^@pow1a+pz^@pow2a*c+@pp1a*a+1/pz) b=(1-@p2)*pz+@p2*(u^@pow1b+u^@pow2b*c+@pp1b*a+1/u) endif a=pz pz=b return pz return a endfunc private: complex c complex a complex b default: title="Modified Das-Debata Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.5,0) visible=@jm==1 endparam param p1 caption="Das-Debata Parameter 1" default=(0.5,0) endparam param p2 caption="Das-Debata Parameter 2" default=(-0.5,0) endparam param pp1a caption="Phoenix Parameter 1a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter 1b" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(-0.5,0) visible=@jm==0 endparam param pp2b caption="Phoenix Parameter 2b" default=(0.75,0) visible=@jm==0 endparam param pow1a caption="Exponent 1a" default=(3,0) endparam param pow1b caption="Exponent 1b" default=(2,0) endparam param pow2a caption="Exponent 2a" default=(1,0) endparam param pow2b caption="Exponent 2b" default=(2,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param ar caption="Add recip Parameter" default=(0,0) endparam param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedAleatorFloorPhoenixJ(common.ulb:DivergentFormula) { public: complex func Init(complex pz) i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) z2=(0,0) z1=fn2(pz) c=@c i2=0 return pz return z1 return z2 endfunc private: float values[#maxiter] int i int seed complex z1 complex z2 complex c int i2 complex func Iterate(complex pz) pz=@zp1*pz+@zp2 pz=pz^2+@pp1*pz+@pp2*z2+@ap*fn3(floor(values[i2]))+c+@mp1*c/pz z2=z1 i2=i2+1 return pz return z1 return z2 endfunc default: title="Modified Aleator Floor Phoenix J" int param version caption="Version" default=100 visible=@version<100 endparam param seed caption="Random Seed" default=12345678 endparam param ap caption="Aleator Parameter" default=(1,0) endparam func fn3 caption="Aleator Function" default=ident() endfunc param pp1 caption="Phoenix Parameter 1" default=(0.5,0) endparam param pp2 caption="Phoenix Parameter 2" default=(0.5,0) endparam func fn2 caption="Phoenix Function" default=ident() endfunc param mp1 caption="Mod Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.8,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param c caption="C Parameter" default=(-0.35,0) endparam func fn1 Caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedAleatorFloorPhoenixM(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fpixel=pz i=0 seed=@seed while i<100 seed=random(seed) values[i]=seed/#randomrange i=i+1 endwhile pz=fn1(pz) z2=(0,0) z1=fn2(pz) c=fn1(fpixel) i2=0 return pz return z1 return z2 endfunc private: float values[#maxiter] int i int seed complex z1 complex z2 complex c int i2 complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @v==0 pz=pz^2+@pp1*pz+@pp2*z2+@ap*fn3(floor(values[i2]))+@c*c+@mp1*@c*c/pz^2 elseif @v==1 pz=pz^2+@pp1*pz+@pp2*z2+@ap*fn3(floor(values[i2]))+@c*c*pz+@mp1*@c*c/pz^2 else pz=pz^2+@pp1*pz+@pp2*z2+@ap*fn3(floor(values[i2]))+@c*c*pz^2+@mp1*@c*c/pz^2 endif z2=z1 i2=i2+1 return pz return z1 return z2 endfunc default: title="Modified Aleator Floor Phoenix M" int param version caption="Version" default=100 visible=@version<100 endparam param v caption="Variant" enum="1""2""3" endparam param seed caption="Random Seed" default=12345678 endparam param sp caption="Start Parameter" default=(1,0) endparam param ap caption="Aleator Parameter" default=(1,0) endparam func fn3 caption="Aleator Function" default=ident() endfunc param pp1 caption="Phoenix Parameter 1" default=(0.5,0) endparam param pp2 caption="Phoenix Parameter 2" default=(0.5,0) endparam func fn2 caption="Phoenix Function" default=ident() endfunc param mp1 caption="Mod Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.8,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam param c caption="C Parameter" default=(-0.35,0) endparam func fn1 Caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedRajputTenguriaPandeyPhoenix(common.ulb:DivergentFormula) { ;Rajput-Tenguria-Pandey iteration from ;https://www.arpapress.com/Volumes/Vol24Issue1/IJRRAS_24_1_01.pdf ;(8) public: complex func Init(complex pz) fpixel=pz c=@sf(fpixel) a=@sp1 b=(0,0) if @jm==0 pz=@sf(pz) else pz=@sp2 endif return pz return a endfunc complex func Iterate(complex pz) pz=@zp1*pz+@zp2 if @jm==0 u=@p1*pz+@p2*(pz^@pow1a+pz^@pow2a*@pp2a+@pp1a*a+@mp1/pz)+@p3*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a+@mp1/pz)+@p4*(pz^@pow1c+pz^@pow2c*@pp2c+@pp1c*a+@mp1/pz) b=@p1*pz+@p2*(pz^@pow1b+pz^@pow2b*@pp2b+@pp1b*a+@mp2/pz)+@p3*(pz^@pow1c+pz^@pow2c*@pp2c+@pp1c*a+@mp2/pz)+@p4*(u^@pow1a+u^@pow2a*@pp2a+@pp1a*a+@mp2/u) else u=@p1*pz+@p2*(pz^@pow1a+pz^@pow2a*@pp2a*c+@pp1a*a+@mp1*c/pz)+@p3*(pz^@pow1b+pz^@pow2b*@pp2b*c+@pp1b*a+@mp1*c/pz)+@p4*(pz^@pow1c+pz^@pow2c*@pp2c*c+@pp1c*a+@mp1*c/pz) b=@p1*pz+@p2*(pz^@pow1b+pz^@pow2b*@pp2b*c+@pp1b*a+@mp2*c/pz)+@p3*(pz^@pow1c+pz^@pow2c*@pp2c*c+@pp1c*a+@mp2*c/pz)+@p4*(u^@pow1a+u^@pow2a*@pp2a*c+@pp1a*a+@mp2*c/u) endif a=pz pz=b return pz return a endfunc private: complex c complex a complex b default: title="Modified Rajput-Tenguria-Pandey Phoenix" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param sp1 caption="Start Parameter" default=(0,0) endparam param sp2 caption="Start Parameter 2" default=(0.5,0) visible=@jm==1 endparam param p1 caption="RTP Parameter 1" default=(-0.875,0) endparam param p2 caption="RTP Parameter 2" default=(-0.85,0) endparam param p3 caption="RTP Parameter 3" default=(0.65,0) endparam param p4 caption="RTP Parameter 4" default=(-0.1,0) endparam param pp1a caption="Phoenix Parameter a" default=(-0.5,0) endparam param pp1b caption="Phoenix Parameter b" default=(-1.5,0) endparam param pp1c caption="Phoenix Parameter c" default=(-1.5,0) endparam param pp2a caption="Phoenix Parameter 2a" default=(1,0) endparam param pp2b caption="Phoenix Parameter 2b" default=(1,0) endparam param pp2c caption="Phoenix Parameter 2c" default=(1,0) endparam param mp1 caption="Modification Parameter 1" default=(1,0) endparam param mp2 caption="Modification Parameter 2" default=(1,0) endparam param pow1a caption="Exponent 1a" default=3 endparam param pow1b caption="Exponent 1b" default=2 endparam param pow1c caption="Exponent 1c" default=2 endparam param pow2a caption="Exponent 2a" default=1 endparam param pow2b caption="Exponent 2b" default=1 endparam param pow2c caption="Exponent 2c" default=1 endparam param zp1 caption="Z Parameter 1" default=(1,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=100.0 exponential=true endparam } class OM_ModifiedLog-XP(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==0 c=@js+1.85 else c=@js endif else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) if @v==0 && @jm==1 pz=(@zp1+0.05)*pz+@zp2 else pz=@zp1*pz+@zp2 endif if @v==0 pz=pz^2+(@xp2-1.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2+c+@mp1/pz elseif @v==1 pz=pz^2+(@xp2-1.75)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2+@mp1/pz else pz=pz^2+(@xp2-0.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)))^2+c+@mp1/pz endif return pz endfunc default: title="Modified Log-XP" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3" endparam param sp caption="Start Parameter" default=(-0.85,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(-2,0) visible=@jm==0 endparam param xp1 caption="Log-XP Parameter 1" default=(1,0) endparam param xp2 caption="Log-XP Parameter 2" default=(1,0) endparam param mp1 caption="Modification Parameter" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(0.5,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam } class OM_DasDebataModifiedLogXP(common.ulb:DivergentFormula) { public: complex func Init(complex pz) fPixel=pz if @jm==0 pz=@sf(pz) if @v==0 c=@js+1.85 else c=@js endif else pz=@sp c=@sf(fpixel) endif return pz endfunc private: complex c complex func Iterate(complex pz) if @v==0 && @jm==1 pz=(@zp1+0.05)*pz+@zp2 else pz=@zp1*pz+@zp2 endif if @v==0 fz=pz^2+(@xp2-1.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2+c+@mp1/pz u=(1-@ddp1)*pz+@ddp1*fz fu=u^2+(@xp4-1.5)*log(1/(exp(1/u)^2+@xp3*exp(1/u)+exp(1/c)))^2+c+@mp2/u pz=(1-@ddp2)*pz+@ddp2*fu elseif @v==1 fz=pz^2+(@xp2-1.75)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)+exp(1/c)))^2+@mp1/pz u=(1-@ddp1)*pz+@ddp1*fz fu=u^2+(@xp4-1.75)*log(1/(exp(1/u)^2+@xp3*exp(1/u)+exp(1/c)))^2+@mp2/u pz=(1-@ddp2)*pz+@ddp2*fu else fz=pz^2+(@xp2-0.5)*log(1/(exp(1/pz)^2+@xp1*exp(1/pz)))^2+c+@mp1/pz u=(1-@ddp1)*pz+@ddp1*fz fu=u^2+(@xp4-0.5)*log(1/(exp(1/u)^2+@xp3*exp(1/u)))^2+c+@mp2/u pz=(1-@ddp2)*pz+@ddp2*fu endif return pz endfunc default: title="Das-Debata Modified Log-XP" int param version caption="Version" default=100 visible=@version<100 endparam param jm caption="J/M" enum="J""M" endparam param v caption="Variant" enum="1"\ "2"\ "3" endparam param sp caption="Start Parameter" default=(0.75,0) visible=@jm==1 endparam param js caption="Julia Seed" default=(3.5,0) visible=@jm==0 endparam param ddp1 caption="Das-Debata Parameter 1" default=(0.2,0) endparam param ddp2 caption="Das-Debata Parameter 2" default=(0.5,0) endparam param xp1 caption="Log-XP Parameter 1" default=(1,0) endparam param xp2 caption="Log-XP Parameter 2" default=(-1,0) endparam param xp3 caption="Log-XP Parameter 3" default=(-0.2,0) endparam param xp4 caption="Log-XP Parameter 4" default=(-1,0) endparam param mp1 caption="Modification Parameter 1" default=(1,0) endparam param mp2 caption="Modification Parameter 2" default=(1,0) endparam param zp1 caption="Z Parameter 1" default=(-0.75,0) endparam param zp2 caption="Z Parameter 2" default=(0,0) endparam func sf caption="Pixel Function" default=ident() endfunc param p_power visible=false endparam float param p_bailout caption="Bailout" default=10000.0 exponential=true endparam }