Polynomial multiplication: definitions #
The inputs of polynomial multiplication polyMul n are the coefficients of two polynomials of
degree below n: the first n inputs (Fin.castAdd n i) are the coefficients x₀, …, x_{n-1}
of x(t) = ∑ᵢ xᵢ tⁱ and the last n inputs (Fin.natAdd n j) the coefficients
y₀, …, y_{n-1} of y(t). Output m, for 0 ≤ m ≤ 2n - 2, is the coefficient
z_m = ∑_{i + j = m} xᵢ yⱼ of t ^ m in the product x(t) y(t).
polyMul n: polynomial multiplication as a function over a commutative semiring.polyMulPolynomial K n m: the outputz_mas a polynomial in the2ninputs.hankel n μ: then × nHankel matrix(μ (i + j)).crossMatrix Λ: the2n × 2nsymmetric block matrix[[0, Λ], [Λᵀ, 0]], with the firstnrows and columns for the inputsxand the lastnfor the inputsy. The Hessian of∑ₘ μₘ z_miscrossMatrix (hankel n μ).firstIn XandsecondIn X: the coefficients ofxand ofywhose inputs lie inX.
Polynomial multiplication. Output m is ∑_{i + j = m} xᵢ yⱼ, the coefficient of
t ^ m in (∑ᵢ xᵢ tⁱ) (∑ⱼ yⱼ tʲ), where xᵢ is input Fin.castAdd n i and yⱼ is input
Fin.natAdd n j.
Equations
- Algebraic.Cutwidth.MultiOutput.polyMul n z m = ∑ i : Fin n, ∑ j : Fin n, if ↑i + ↑j = ↑m then z (Fin.castAdd n i) * z (Fin.natAdd n j) else 0
Instances For
Output m of polynomial multiplication as a polynomial in the inputs.
Equations
- Algebraic.Cutwidth.MultiOutput.polyMulPolynomial K n m = ∑ i : Fin n, ∑ j : Fin n, if ↑i + ↑j = ↑m then MvPolynomial.X (Fin.castAdd n i) * MvPolynomial.X (Fin.natAdd n j) else 0
Instances For
The 2n × 2n block matrix [[0, Λ], [Λᵀ, 0]]: the entries in rows Fin.castAdd n i and
columns Fin.natAdd n j, and in rows Fin.natAdd n j and columns Fin.castAdd n i, are
Λ i j, and the others are zero.
Equations
Instances For
The coefficients of the first factor whose inputs lie in X.
Equations
- Algebraic.Cutwidth.MultiOutput.firstIn X = {i : Fin n | Fin.castAdd n i ∈ X}
Instances For
The coefficients of the second factor whose inputs lie in X.
Equations
- Algebraic.Cutwidth.MultiOutput.secondIn X = {j : Fin n | Fin.natAdd n j ∈ X}