Regard an integer polynomial in y as a polynomial in y whose
coefficients are constant polynomials in a second variable t.
Equations
Instances For
Coefficients of the outer lift are the corresponding constant polynomials.
The eliminant whose roots are pairwise sums of roots of p and q.
Equations
- p.addEliminant q = p.liftOuter.resultant (q.liftOuter.compose (Hex.DensePoly.C Hex.ZPoly.X - Hex.DensePoly.monomial 1 1))
Instances For
The polynomial y^degree(q) q(t/y), viewed as a polynomial in y
with coefficients in Int[t].
Equations
- One or more equations did not get rendered due to their size.
Instances For
The eliminant whose roots are pairwise products of roots of p and q.
Equations
- p.mulEliminant q = p.liftOuter.resultant q.mulSubstitute
Instances For
Remove the largest power of X dividing an integer polynomial.
Equations
- p.removeX = Hex.DensePoly.ofCoeffs (Array.popWhile (fun (x : Int) => x == 0) (Hex.DensePoly.toArray p).reverse).reverse
Instances For
Reverse coefficients, automatically trimming the degree drop caused by an original zero constant coefficient.
Equations
Instances For
Negating roots preserves positive leading normalization.
Negating roots preserves positive degree.
Negating roots preserves squarefreeness.
The Mahler precision is invariant under reflection and unit normalization.
Reflection of a complex ball.
Instances For
Minkowski difference of complex balls.
Instances For
Checked reciprocal enclosure. The centre reciprocal is rounded downward coordinatewise; three ulps cover both coordinate errors and the downward rounding of the radial distortion bound.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reflect a refined isolation while preserving its root certificate and separation precision.
Equations
Instances For
Certify the enclosed root using a rounded centre and checked containment. Linear polynomials retain global isolation and canonical parent reuse. Failure leaves the global isolation route available.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Select the enclosed root directly when possible. Otherwise run the
consumer while the global producer's certified isolations are available.
Callers prove the consumers agree using withEliminant?_eq.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Normalize an eliminant and certify the root enclosed by the supplied operation ball. If direct certification fails, isolate all distinct roots and retain the unique root meeting that ball.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Expose direct selection and its global fallback without consumer callbacks.
A consumer using the certified producer run returns exactly the result of selecting the lazy root first and then applying its ordinary consumer.
Canonicalize a selected eliminant root, reusing its producer run for a factor equal to the whole enclosing polynomial.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fusing selection and exactification preserves the complete checked result.
Total canonical consumption of an eliminant, retaining the original lazy-operation fallback and exactification fallback separately. The producer fallback is thunked so successful selection never evaluates its panic branch.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reuse preserves the total pipeline and both original fallback branches.
Certified operation ball shared by lazy and canonical addition.
Equations
Instances For
Checked canonical sum, consuming the producer's isolation before its transient certificates go out of scope.
Equations
- a.exactAdd? b = Hex.AlgebraicRoot.exactEliminant? (a.p.addEliminant b.p) (a.addBall? b)
Instances For
Certificate-free negation by reflection.
Equations
Instances For
Checked lazy sum through the addition eliminant.
Equations
- a.add? b = Hex.AlgebraicRoot.ofEliminant? (a.p.addEliminant b.p) (a.addBall? b)
Instances For
Fused canonical addition preserves the original lazy-then-exact pipeline.
Total lazy sum.
Equations
- a.add b = (a.add? b).getD (Hex.panicWith Hex.AlgebraicNumber.zero.toRoot "AlgebraicRoot.add: certification failed")
Instances For
Checked lazy difference.
Instances For
Total lazy difference.
Equations
- a.sub b = (a.sub? b).getD (Hex.panicWith Hex.AlgebraicNumber.zero.toRoot "AlgebraicRoot.sub: certification failed")
Instances For
Guard bits for multiplication-ball amplification.
Equations
- a.mulGuardBits b = 8 + Hex.PolyQuot.rootBits a.rep.val.square + Hex.PolyQuot.rootBits b.rep.val.square
Instances For
Guard bits for reciprocal-ball amplification. For a nonzero root of the
primitive integer polynomial p, reciprocal Cauchy gives
|a| ≥ 1 / (1 + coeffAbsMax p). Doubling the bit bound pays for the
|a|⁻² distortion in inversion; sixteen further bits cover the strict
nonzero guard and dyadic rounding.
Equations
- a.invGuardBits = 2 * Hex.ceilLog2 (a.p.coeffAbsMax + 1) + 16
Instances For
Certified operation ball shared by lazy and canonical multiplication.
Equations
Instances For
Checked lazy product through the product eliminant.
Equations
Instances For
Checked canonical product reusing its eliminant producer's isolation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fused canonical multiplication preserves zeros, representatives and failures.
Total lazy product.
Equations
- a.mul b = (a.mul? b).getD (Hex.panicWith Hex.AlgebraicNumber.zero.toRoot "AlgebraicRoot.mul: certification failed")
Instances For
Checked lazy inverse through coefficient reversal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Total lazy inverse, with inv 0 = 0.
Equations
- a.inv = a.inv?.getD (Hex.panicWith Hex.AlgebraicNumber.zero.toRoot "AlgebraicRoot.inv: certification failed")
Instances For
Checked lazy quotient.
Instances For
Total lazy quotient.
Equations
- a.div b = (a.div? b).getD (Hex.panicWith Hex.AlgebraicNumber.zero.toRoot "AlgebraicRoot.div: certification failed")
Instances For
Canonical sum, reusing the producer's isolation when the chosen factor is the whole eliminant.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Canonical addition keeps the exact result of lazy addition followed by exactification.
Canonical difference: perform the lazy operation, then exactify.
Instances For
Canonical product, reusing the producer's isolation when the chosen factor is the whole eliminant.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Canonical multiplication keeps the exact old result, including its zero case.
Canonical negation: reflect the lazy root, then exactify.
Instances For
Canonical inverse, with inv 0 = 0: perform the lazy operation, then
exactify.
Instances For
Canonical quotient: perform the lazy operation, then exactify.