complex comp_sub(complex comp1, complex comp2) { complex result; result.n = comp1.n - comp2.n; result.i = comp1.i - comp2.i; return result; } complex comp_flip(complex comp) { complex result; result.n = comp.i; result.i = comp.n; return result; } complex comp_pow(complex comp, double power) { // THINKING IS HARD, remind me to shoot myself complex result; double length, kulma; length = sqrt(comp.n*comp.n + comp.i*comp.i); if(length!=0.0) { kulma = asin(comp.i/length)*power; length = pow(length, power); result.n = cos(kulma)*length; result.i = sin(kulma)*length; } return result; } complex comp_mul(complex comp1, complex comp2) { complex result; result.n = comp1.n*comp2.n - comp1.i*comp2.i; result.i = comp1.n*comp2.i + comp2.n*comp1.i; return result; } complex comp_mulf(complex comp, double multiplier) { comp.n *= multiplier; comp.i *= multiplier; return comp; } complex comp_div(complex comp1, complex comp2) { complex z2; z2.n = comp2.n; z2.i = -comp2.i; return comp_mulf(comp_mul(comp1, z2), 1.0/(comp2.n*comp2.n + comp2.i*comp2.i)); }