Suppose you have your formula, and have done the maths to derive the perturbation iterations, then you need to pick a new m_nFractalType identifier number, give it a name for the GUI, and implement 6 pieces of code (really 2 pieces, but the duplication is needed in lieu of using C++ templates or similar):
* double reference iterations in fraktal_sft/fraktal_sft.cpp
* long double reference iterations in fraktal_sft/dbl_functions.cpp
* floatexp reference iterations in fraktal_sft/exp_functions.cpp
* double pertubation iterations in fraktal_sft/fraktal_sft.cpp
* long double perturbation iterations in ldbl/ldbl.cpp
* floatexp pertubation iterations in fraktal_sft/exp_functions2.cpp
I wonder if it's possible to rejig all this part of the code, remove the duplication across different types by using templates, and make it easier to add new formulas - perhaps by having a class per formula? OOP programming isn't really my thing...
I don't know enough about Windows programming (or that part of Kalles Fraktaler) to help with adding your new fractal type to the GUI. But you probably shouldn't publish your changes without coordinating with Karl, because otherwise all chaos could occur with different formula having the same fractal type number in different forks, making settings files incompatible...
EDIT since posting this I changed the way formulas are compiled in Kalles Fraktaler. There is now a preprocessor that compiles a formula definition from XML to C++. Defining new formulas would now work like this example:
<formulas>
<group type="0" name="Mandelbrot">
<formula power="2" glitch="0.0000001">
<reference t="R">
Xrn = Xr2 - Xi2 + Cr;
Xin = sqr(Xr + Xi) - Xr2 - Xi2 + Ci;
</reference>
<perturbation t="R">
xrn = (2 * Xr + xr) * xr - (2 * Xi + xi) * xi + cr;
xin = 2 * ((Xr + xr) * xi + Xi * xr) + ci;
</perturbation>
</formula>
...
</group>
...
</formulas>
* Append a new group with the next consecutive unused type number and name.
* For each power, add a formula with the Pauldelbrot glitch detection threshold.
* The formula needs a reference part and a perturbation part.
* The parts can have type R (separate real and imaginary) or C (complex variables) - see the file for examples:
https://code.mathr.co.uk/kalles-fraktaler-2/blob/503dcfc3c3f851d986c46bfebbcfec1abe092745:/formula/formula.xml* Operators include + - * ^
* Functions include sqr(x) (reference only), abs(x), diffabs(x, y) where diffabs() is the magic formula for perturbation developed by laserblaster here
http://www.fractalforums.com/new-theories-and-research/perturbation-formula-for-burning-ship-(hopefully-correct-p)/