public static PComplex Normalize(PComplex c)
    {
        c._a += (c._m < 0 ? PI : 0);
        c._m *= (c._m < 0 ? -1 : 1);

        c._a = (float)Math.IEEERemainder(c._a, 2 * PI);
        c._a += (c._a < 0 ? 2 * PI : 0);

        return c;
    }
 public CComplex(PComplex c)
 {
     _r = c._m * (float)Math.Cos(c._a);
     _i = c._m * (float)Math.Sin(c._a);
 }
 public static PComplex Multiply(PComplex c, float d)
 {
     return new PComplex(c._m * d, c._a);
 }
 public static PComplex Multiply(PComplex c1, PComplex c2)
 {
     return new PComplex(c1._m * c2._m, c1._a + c2._a);
 }
 public static PComplex Invert(PComplex c)
 {
     return new PComplex(1.0f / c._m, -c._a);
 }
 public static PComplex Divide(PComplex c, float d)
 {
     return new PComplex(c._m / d, c._a);
 }
 public static PComplex Divide(PComplex c1, PComplex c2)
 {
     return new PComplex(c1._m / c2._m, c1._a - c2._a);
 }