Recursive PM-Basis Driver #
Runtime data for recursive PM-basis computation, the fuel-bounded
divide-and-conquer driver, root normalization, the pmBasis entry point, and
the PMBasisContext contract structure.
References #
- [Beckermann, B., and Labahn, G., A uniform approach for the fast computation of matrix-type Pade approximants][BL94]
- [Giorgi, P., Jeannerod, C.-P., and Villard, G., On the complexity of polynomial matrix computations][GJV03]
Runtime data for recursive PM-basis computation.
- mulContext : CPolynomial.MulContext F
- lowMulContext : MulLowContext F
- composeBasis : PolynomialMatrix F → PolynomialMatrix F → PolynomialMatrix F
- residualProduct : Array ℕ → PolynomialMatrix F → PolynomialMatrix F → PolynomialMatrix F
- leafCutoff : ℕ
- leafBasis : XAdicProblem F → Array ℕ → PolynomialMatrix F
Instances For
Recursive PM-basis runtime using the scalar dense-kernel routine as its small-leaf solver and an independently tuned basis-composition cutoff.
Instances For
Recursive PM-basis runtime using the scalar dense-kernel routine as its small-leaf solver.
Instances For
Compatibility runtime whose low products are obtained by truncating full products.
Instances For
Fuel-bounded recursive PM-basis driver, compacting zero rows after each leaf and composition step.
Internal nodes return the composed product P₂ * P₁ without re-reduction:
composition of minimal half-bases under the updated shift is itself a basis of
the full-order approximant module, so re-reducing at every node would only add
work that is quadratic in the row degrees and outside the PM-basis cost model.
A single weak-Popov normalization pass runs once at the root entry points.
Instances For
Root normalization for a recursively composed approximant basis: one weak-Popov reduction pass plus completion rows for any leading position that lost its representative. When the recursion preserved minimality this pass performs no cascading cancellations; it is a semantic guard, not part of the recursive cost model.
Instances For
Fuel-bounded recursive PM-basis driver with root normalization.
Instances For
Default fuel choice, large enough to split each positive order down to the leaf cutoff.
Instances For
Recursive PM-basis entry point.
Instances For
Monomial completion never returns an empty matrix for problems with at least one module row: an empty candidate set is completed with one monomial row per module coordinate.
The root-normalized recursive PM-basis is nonempty for problems with at least one module row.
Context packaging the executable PM-basis operation with theorem fields.
- runtime : PMBasisRuntime F
- basis : XAdicProblem F → Array ℕ → PolynomialMatrix F
- sound (problem : XAdicProblem F) (shift : Array ℕ) (row : PolynomialRow F) : row ∈ (self.basis problem shift).MatrixRows → ∀ j < problem.orders.size, truncateX (problem.orders.getD j 0) (rowGet (rowMulMatrixWith self.runtime.mulContext row problem.matrix) j) = 0
- complete_minimal (problem : XAdicProblem F) (shift : Array ℕ) (row : PolynomialRow F) : 0 < Array.size problem.matrix → problem.matrix.WellFormed → (∀ j < problem.orders.size, truncateX (problem.orders.getD j 0) (rowGet (rowMulMatrixWith self.runtime.mulContext row problem.matrix) j) = 0) → rowIsZero row = false → Array.size row ≤ Array.size problem.matrix → ∃ (basisRow : PolynomialRow F) (degree : ℕ), basisRow ∈ (self.basis problem shift).MatrixRows ∧ Array.size basisRow ≤ Array.size problem.matrix ∧ rowShiftedDegree? basisRow shift = some degree ∧ ∀ (rowDegree : ℕ), rowShiftedDegree? row shift = some rowDegree → degree ≤ rowDegree