a(float x, float y) { return arg(vec2(x,y)); }
    vec2 complex(float x, float y) { return vec2(x,y); }

    // https://en.wikipedia.org/wiki/Complex_number#Elementary_operations
    vec2 complex_add(vec2 x, vec2 y) { return x + y; }
    vec2 complex_sub(vec2 x, vec2 y) { return x - y; }
    vec2 complex_mul(vec2 x, vec2 y) { return vec2( A*C-B*D, B*C+A*D); }
    vec2 complex_div(vec2 x, vec2 y) { return vec2( (A*C+B*D)/(C*C+D*D), (B*C-A*D)/(C*C+D*D)); }

    // http://www.abecedarical.com/zenosamples/zs_co