The monic linear factor vanishing at a.
Equations
Instances For
The point factor is x - a.
Evaluating the point factor at x gives x - a.
The point factor vanishes at its defining point.
Over a nontrivial ring, a point factor has size two.
Every point factor is monic, including over the trivial ring.
Internal balanced remainder-tree shape, indexed by its exact point sequence and product polynomial. Public clients use it only through opaque plans.
- leaf {R : Type u} [DecidableEq R] [Lean.Grind.CommRing R] {mul : MulPlan R} (a : R) : PointNode R mul [a] (pointFactor a)
- branch {R : Type u} [DecidableEq R] [Lean.Grind.CommRing R] {mul : MulPlan R} {leftPoints rightPoints : List R} {leftPoly rightPoly : DensePoly R} (left : PointNode R mul leftPoints leftPoly) (right : PointNode R mul rightPoints rightPoly) (leftPlan rightPlan : DivPlan R) (leftZero : ∀ (a : R), a ∈ leftPoints → leftPlan.divisor.eval a = 0) (rightZero : ∀ (a : R), a ∈ rightPoints → rightPlan.divisor.eval a = 0) : PointNode R mul (leftPoints ++ rightPoints) (mulWith mul leftPoly rightPoly)
Instances For
The cached child plans have the exact divisor sizes and sibling capacities needed by a bounded remainder-tree traversal.
Equations
- One or more equations did not get rendered due to their size.
- (Hex.DensePoly.PointNode.leaf a).CapacitySafe = True
Instances For
An opaque reusable multipoint-evaluation plan.
- mulData : Hex.DensePoly.MulPlan R
- pointsData : Array R
- nodeData : Option ((poly : Hex.DensePoly R) × { node : Hex.DensePoly.PointNode R (mulData self) (pointsData self).toList poly // node.CapacitySafe })
Instances For
Build the point-product tree and all finite-capacity reciprocal plans.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The planned point sequence.
Equations
- plan.points = Hex.DensePoly.EvalPlan.pointsData✝ plan
Instances For
Building an evaluation plan preserves the supplied point sequence.
Number of planned points.
Instances For
Lawful multiplication plan used by the cached tree.
Equations
- plan.mulPlan = Hex.DensePoly.EvalPlan.mulData✝ plan
Instances For
The cached indexed tree, when the point sequence and coefficient ring are nondegenerate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A nonempty point sequence over a nontrivial ring has a cached node.
Rebuild the observational leaf-and-root product-tree view. Constructing an evaluation plan does not eagerly recompute this redundant product tree.
Equations
- plan.treeView = Hex.DensePoly.ProductTree.build plan.mulPlan (Array.map Hex.DensePoly.pointFactor plan.points)
Instances For
Specification of multipoint evaluation. The compiled implementation below replaces this direct map by the cached remainder tree.
Instances For
Evaluation preserves the planned point count.
The points accessor has the advertised plan size.
Semantic expansion of the evaluation specification.
Executable cached remainder-tree evaluation. Oversized inputs and the degenerate ring use direct Horner evaluation, exactly as specified.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cached implementation agrees exactly with direct evaluation.
Compile multipoint evaluation through the cached remainder tree.