/// <summary> /// Expands factorized polynomial p_1(x)^(k_1)*...*p_r(x)^(k_r) to its normal form a_0 + a_1 x + ... + a_n x^n. /// </summary> /// <param name="p"></param> /// <returns></returns> public static Polynomial Expand(FactorizedPolynomial p) { Polynomial q = new Polynomial(new Complex[] { Complex.One }); for (int i = 0; i < p.Factor.Length; i++) { for (int j = 0; j < p.Power[i]; j++) { q *= p.Factor[i]; } q.Clean(); } // clean... for (int k = 0; k <= q.Degree; k++) { q.Coefficients[k].Re = Math.Round(q.Coefficients[k].Re, 12); q.Coefficients[k].Im = Math.Round(q.Coefficients[k].Im, 12); } return(q); }
/// <summary> /// Expands factorized polynomial p_1(x)^(k_1)*...*p_r(x)^(k_r) to its normal form a_0 + a_1 x + ... + a_n x^n. /// </summary> /// <param name="p"></param> /// <returns></returns> public static Polynomial Expand(FactorizedPolynomial p) { Polynomial q = new Polynomial(new Complex[] { Complex.One }); for (int i = 0; i < p.Factor.Length; i++) { for (int j = 0; j < p.Power[i]; j++) q *= p.Factor[i]; q.Clean(); } // clean... for (int k = 0; k <= q.Degree; k++) { q.Coefficients[k].Re = Math.Round(q.Coefficients[k].Re, 12); q.Coefficients[k].Im = Math.Round(q.Coefficients[k].Im, 12); } return q; }