public MultipoleCoefficients(Point center, MultipoleCoefficients m1, MultipoleCoefficients m2)
 {
     ValidateArg.IsNotNull(m1, "m1");
     ValidateArg.IsNotNull(m2, "m2");
     Debug.Assert(m1.p == m2.p);
     this.p = m1.p;
     z0 = new Complex(center.X, center.Y);
     Complex[] m1a = m1.shift(z0), m2a = m2.shift(z0);
     a = new Complex[p];
     for (int i = 0; i < p; ++i)
     {
         a[i] = m1a[i] + m2a[i];
     }
 }