double absComplex(struct Complex aArg)
{
return aArg.r;
}

struct Complex multComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = aArg.r * bArg.r;
ret.theta = aArg.theta + bArg.theta;

return ret;
}

struct Complex subComplex(struct Complex aArg, struct Complex bArg)
{
struct Complex ret;

ret.r = sqrt(aArg.r * aArg.r + bArg.r * bArg.r + 2 * aArg.r * bArg.r * cos(bArg.theta));
ret.theta = aArg.theta - acos((aArg.r * aArg.r + ret.r * ret.r - bArg.r * bArg.r) / (2 * aArg.r * ret.r));

return ret;
}