# Shape Estimate

V. Dolotin and A. Morozov “On the shapes of elementary domains or why Mandelbrot Set is made from almost ideal circles?” (2008) [eq. 5.8] derive a shape estimate \(s\), with derivatives evaluated at \(F^p(0,c)\) where \(c\) is a nucleus of period \(p\):

\[s = - \frac{1}{\left(\frac{\partial}{\partial c}\right) \left(\frac{\partial}{\partial z}\right)} \left(\frac{\frac{\partial}{\partial c}\frac{\partial}{\partial c}} {2 \frac{\partial}{\partial c}} + \frac{\frac{\partial}{\partial c}\frac{\partial}{\partial z}} { \frac{\partial}{\partial z}}\right) \]

\(s \approx 0\) corresponds to cardioid-like shapes. \(s \approx 1\) corresponds to circle-like shapes.

# 1 C99 Code

#include <complex.h>
#include <stdbool.h>

double _Complex m_shape_estimate
    (double _Complex c, int p)
{
    double _Complex z = c;
    double _Complex dc = 1;
    double _Complex dz = 1;
    double _Complex dcdc = 0;
    double _Complex dcdz = 0;
    for (int i = 1; i < p; ++i)
    {
        dcdc = 2 * (z * dcdc + dc * dc);
        dcdz = 2 * (z * dcdz + dc * dz);
        dc = 2 * z * dc + 1;
        dz = 2 * z * dz;
        z = z * z + c;
    }
    return -(dcdc / (2 * dc) + dcdz / dz) / (dc * dz);
}

bool m_shape_is_cardioid(double _Complex s)
{
    bool d = cabs(s) < cabs(s - 1);
    return d;
}

# 2 Examples

\(c = -0.12256116687665361 + 0.74486176661974424 i\), \(p = 3\): \[s = 1.0212516030641008 + 0.047630153362811116 i \approx 1\]

\(c = -0.15652016683375508 + 1.0322471089228318 i\), \(p = 4\): \[s = 0.058425597199448037 + 0.084498085298473649 i \approx 0\]