I can do any formula in perturbation as long as each term only contains one abs value.
abs(a)*abs(a) is equal to abs(a*a)
However for example "4th Celtic Real Quasi Heart" contains
zi = 4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
This is not the same as 4 * zi * abs(zr*zrsqr - zr*zisqr) + JuliaI so I don't know how to handle that.
So, what do we call the new formula from Simon Snake, is "FT_Simon100A_plain" a good name?
Expanding this function, also to be used for calculating the high precision reference, gives:
xn = y*y*abs(y*y)-4*y*abs(x*y)*x-x*x*abs(y*y)-y*y*abs(x*x)+x*x*abs(x*x) + x0;
yn = - 2*x*y*abs(y*y)-2*y*y*abs(x*y)+2*x*x*abs(x*y)+2*x*y*abs(x*x) + y0;
Adding perturbation, (reference+delta)-reference, gives:
xn = (y+b)*(y+b)*abs((y+b)*(y+b))-4*(y+b)*abs((x+a)*(y+b))*(x+a)-(x+a)*(x+a)*abs((y+b)*(y+b))-(y+b)*(y+b)*abs((x+a)*(x+a))+(x+a)*(x+a)*abs((x+a)*(x+a))
- y*y*abs(y*y)+4*y*abs(x*y)*x+x*x*abs(y*y)+y*y*abs(x*x)-x*x*abs(x*x) + x0;
yn = - 2*(x+a)*(y+b)*abs((y+b)*(y+b))-2*(y+b)*(y+b)*abs((x+a)*(y+b))+2*(x+a)*(x+a)*abs((x+a)*(y+b))+2*(x+a)*(y+b)*abs((x+a)*(x+a))
+ 2*x*y*abs(y*y)+2*y*y*abs(x*y)-2*x*x*abs(x*y)-2*x*y*abs(x*x) + y0;
Analyzing the first term, we have (reference+delta)=(y+b)*(y+b)*abs((y+b)*(y+b)) and reference=y*y*abs(y*y)
Expand gives (y*y+2*b*y+b*b)*abs(y*y+2*b*y+b*b) - y*y*abs(y*y)
Rearranging so that we can identify what's in laser-blaster's abs-method and what's the rest:
y*y*abs(y*y+2*b*y+b*b) - y*y*abs(y*y) + (2*b*y+b*b)*abs(y*y+2*b*y+b*b)
y*y is the ref for laser-blaster's abs-method and 2*b*y+b*b is the delta:
y*y*lb_abs_db(y*y,2*b*y+b*b) + (2*b*y+b*b)*abs(y*y+2*b*y+b*b)
Repeat for the next 8 terms, and you get:
xn = y*y*lb_abs_db(y*y,2*b*y+b*b)-4*y*x*lb_abs_db(x*y,x*b+a*y+a*b)-x*x*lb_abs_db(y*y,2*b*y+b*b)-y*y*lb_abs_db(x*x,2*x*a+a*a)+x*x*lb_abs_db(x*x,2*x*a+a*a)
+ (2*b*y+b*b)*abs(y*y+2*b*y+b*b)-4*(y*a+b*x+b*a)*abs(x*y+x*b+a*y+a*b)-(2*x*a+a*a)*abs(y*y+2*b*y+b*b)-(2*b*y+b*b)*abs(x*x+2*x*a+a*a)+(2*x*a+a*a)*abs(x*x+2*x*a+a*a) + a0;
yn = 2*x*x*lb_abs_db(x*y,x*b+a*y+a*b)+2*x*y*lb_abs_db(x*x,2*x*a+a*a)-2*x*y*lb_abs_db(y*y,2*b*y+b*b)-2*y*y*lb_abs_db(x*y,x*b+a*y+a*b)
+ 2*(2*x*a+a*a)*abs(x*y+x*b+a*y+a*b) +2*(x*b+a*y+a*b)*abs(x*x+2*x*a+a*a)-2*(x*b+a*y+a*b)*abs(y*y+2*b*y+b*b)-2*(2*b*y+b*b)*abs(x*y+x*b+a*y+a*b) + b0;
And the result is stunning:
http://www.youtube.com/v/ENS4r4fdyKE&rel=1&fs=1&hd=1