HomeCalculatorsMathAlgebra & EquationsPolynomial Roots Calculator
Math calculator

Polynomial Roots Calculator

Find all roots of real polynomials of degree 1–8, including complex and repeated roots. Check numerical limits, share inputs, and export complete results.

Instant result
Result
—

Enter values to calculate.

Inputs—
Mode—
Formula—
Trust summary CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance · all published methods
Input interpretation
Enter values to calculate.
Result
—
Verified scope
all published methods
Assurance
Core
Declared partition coverage
PASS · 4/4 declared partitions (all-roots, cardano, evaluate, invalid-domain) · Matrix
Numerical scope
67 listed independent full-pack vectors only
Known limitations
  • Core CVP does not include live graph, viewport, or pointer interaction.
Model
All roots of a real polynomial of degree 1–8, with an engine-linked figure of p and the real roots.
Scope
The Result Card includes an engine-linked figure of p (markers are published real roots on y=0; complex roots stay off the real plane). Same Horner nesting as REST/MCP. Curve samples are not a REST field.
Verification
Engine tested · Source checked · v1.2.2 · CVP VERIFIED · CVP protocol 1.0.0-proposed · Core assurance · all published methods· View Manifest · CVP overview · Specification
Versions
Calculation 1.2.2 · CVP protocol 1.0.0-proposed · Evidence 2026-10-28.metric-scope-v3
Verification revision
2026-10-28.metric-scope-v3 · 3/3 property · digest eca488fa2ce7
Legacy regression
21/21 tests · Production surface contract 6/6
Trust layers
Verification VERIFIED · Production CURRENT · Overall CVP state: VERIFIED under CVP 1.0.0-proposed
Reference
O1 model · O2 expected_values · O2 numerical_behavior
Interfaces
PASS · UI (SSR) / REST / MCP — ui-ssr is query-result HTML, not a live browser session. Error-path engine·REST·MCP 28/28 (status, code, calculation_version). SSR compared on URL-canonical requested calculations; empty query is idle (not an error) and JSON-typed object/array inputs are REST/MCP-only.
Supplemental domain review
Not performed
Named expert review
Not performed
CVP suite
67/67 golden · 3/3 CVP boundary · 34/34 invalid · 3/3 property · 2/2 metamorphic · 95/95 cross-interface · 1/1 cross-calculator · 6/6 CVP contract · Manifest
Evidence
7 legacy golden · 6 legacy boundary · legacy regression suite · 67/67 oracle-backed golden · 34/34 invalid · Artifact integrity PASS
This calculator CURRENT · Public schema 1.2.2 matches · Semantic contract ✓ · Production attested · Public/cache ✓ · Origin ✓
Semantic contract
PASS
Full verification

Manifest identity, reference classes, interfaces, suite, and production records.

Formulas

Core equations used by this calculator.

All n rootsc0 + c1 x + … + cn x^n = 0
Linearx = −c0 / c1
Quadraticx = (−b ± √(b² − 4ac)) / (2a)
CubicCardano / trigonometric closed form
Degree 4–8Durand–Kerner simultaneous iteration
iNot /calc/math/quadratic (discriminant, vertex, parabola). Cubic closed form lives here and at /cubic-equation. Horner evaluation at /polynomial-evaluate. Not Ferrari. Not a single Newton/bisection root. Not symbolic factoring. Leading coefficient must be nonzero. Degree ≤ 8.

How to use

1

Enter coefficients constant-first

(x−1)(x−2)(x−3) is −6, 11, −6, 1. Trailing zeros are rejected; drop them instead.

2

Read every root

Real roots first by value; complex conjugates appear as a ± bi. The figure shows p and the real roots on y=0.

Example calculations

Common configurations with formula and result.

ϟ

Cubic with three real roots

(x−1)(x−2)(x−3) = 0

coeffs −6, 11, −6, 1
1, 2, 3
ϟ

x² + 1 = 0

coeffs 1, 0, 1

closed-form quadratic
± i

Polynomial Roots calculator specification

Version 1.2.2 · Engine tested

Calculation status

Review policy · Evidence

Definition
A degree-n polynomial c0 + c1 x + … + cn x^n = 0 has n roots in the complex plane (counting multiplicity). This page returns a complete validated set or an explicit numerical error. Coefficients are constant-first.
What it calculates
All roots of a real polynomial of degree 1–8, with an engine-linked figure of p and the real roots.
Inputs
  • coeffs
  • method?
Outputs
  • roots
  • degree
  • solver
  • residual_max
Formula
closed form (deg 1–3 Cardano) or Durand–Kerner (deg 4–8)
Assumptions
  • The Result Card includes an engine-linked figure of p (markers are published real roots on y=0; complex roots stay off the real plane). Same Horner nesting as REST/MCP. Curve samples are not a REST field.
  • Real coefficients
  • Leading coefficient nonzero
  • Degree ≤ 8
  • Not a second quadratic page
  • Not Ferrari quartic
  • Not CAS factoring
Units
  • dimensionless
Boundary conditions
  • degree 0 or one coefficient → INVALID_INPUT
  • leading coefficient 0 → INVALID_INPUT
  • degree > 8 → VALUE_OUT_OF_RANGE
  • method quadratic / cas / ferrari / newton / eigen / factor → INVALID_MODE
Example
coeffs=-6,11,-6,1 → 1, 2, 3
Validation cases

2 published on this page · 21/21 tests · Production surface contract 6/6 · View evidence

  • coeffs=-6,11,-6,1 → 1, 2, 3
  • method=quadratic coeffs=8,-6,1 → INVALID_MODE
Sources
  • ISO 80000-2:2019 Quantities and units — Mathematics
    Supports: Mathematical symbols and notation. This standard is not numerical verification or an endorsement of this implementation.
  • NIST DLMF / Cardano cubic and Durand–Kerner simultaneous iteration
    Supports: Closed form for degree 1–3; Weierstrass–Durand–Kerner iteration for degree 4–8; Horner evaluation
  • NIST DLMF §3.8 — Nonlinear Equations — §3.8
    Supports: Iterative root finding, convergence considerations, and polynomial-root methods.
  • NumPy — numpy.polynomial.polynomial.polyval
    Supports: Polynomial evaluation using Horner’s method; NumPy’s documented coefficients are in ascending degree order. CalculatorX’s input order must follow its own specification. Mathematical reference only; not validation or endorsement of this implementation.
Calculation version
1.2.2

Background

Interpretation and common distinctions.

What does this polynomial roots calculator compute?

A degree-n polynomial c0 + c1 x + … + cn x^n = 0 has n roots in the complex plane (counting multiplicity). This page returns a complete validated set or an explicit numerical error. Coefficients are constant-first.

The published formula or method is closed form (deg 1–3 Cardano) or Durand–Kerner (deg 4–8). The following references support the stated mathematics or method:

  • NIST DLMF §3.8 — Nonlinear Equations: Iterative root finding, convergence considerations, and polynomial-root methods.
  • NumPy — numpy.polynomial.polynomial.polyval: Polynomial evaluation using Horner’s method; NumPy’s documented coefficients are in ascending degree order. CalculatorX’s input order must follow its own specification. Mathematical reference only; not validation or endorsement of this implementation.

Which inputs and limits should you check?

Follow the input domain, units, branch or solve direction, and rounding policy in the specification. Preserve exact outputs and any additional candidates or warnings.

The worked example uses (x−1)(x−2)(x−3) = 0 with coeffs −6, 11, −6, 1. Compare it with the Example calculations and the complete result for the same inputs.

How can you verify and cite this result?

CalculatorX is responsible for this page. The mathematical references above explain the model; implementation checks and their scope are documented separately in the math.polynomial.roots v1.2.2 Evidence and capability contract. Read the displayed verification and production state together with the specification's numerical limits.

Use the clean calculator URL to cite the tool. A shared input link identifies a particular calculation. Content updates, numerical verification, and domain reviews have separate dates and scopes.

Numerical scope and interpretation

Coefficients are constant first, finite real binary64 values, with degree 1–8 and a nonzero leading coefficient. Decimal/scientific strings are limited to 512 characters per token and 4608 characters per coefficient list. Arrays contain 2–9 entries. A nonzero textual number that rounds to zero is rejected with NUMERIC_UNDERFLOW; invalid numbers, unknown fields, conflicting aliases, and inapplicable evaluation inputs are rejected. The cubic page locks Cardano; the evaluation page locks Horner.

The accepted binary64 coefficients define the polynomial. Exact rational square-free decomposition preserves its repeated-root multiplicities. Stable closed forms handle degree 1–3; higher degrees use scaled, bounded iteration with exact real-root isolation. Each square-free factor must pass disjoint exact rational Weierstrass/Gershgorin inclusion disks, a relative L1 inclusion-error budget of 2e-10, and normalized residual at most 2e-12. A small residual alone does not establish a complete root set. Overlapping disks or exhausted iteration reject NON_CONVERGENCE; difficult finite inputs need not succeed. Exact arithmetic is bounded to 16384 bits; iteration is limited to two attempts of 2048 steps and real isolation to 512 levels / 4096 steps.

Horner evaluation uses exact rational arithmetic on the accepted binary64 inputs and rounds once to binary64. Unrepresentable nonzero roots or values reject overflow/underflow. residual_max is the largest unscaled Euclidean |p(z)|, or null if its binary64 projection is outside range. normalized_residual uses (|Re p|+|Im p|) / Σ |cᵢ|(|Re z|+|Im z|)ⁱ. The exact depressed cubic discriminant determines cubic_case; delta can be null when projection loses range. Rounded zero residuals do not prove exact roots.

Independent CPython Fraction factor constructions and Decimal250/750 references check 67 complete result packs, root multiplicities and returned-root diagnostics. The fixed-vector root budget is 4e-10 relative L2 plus two subnormal quanta; exact zero roots remain zero and Horner values are checked within one ULP. These tests do not establish accuracy for every possible input or identical results across runtimes. Closely spaced roots can be highly sensitive to coefficient changes.

The real curve uses the same exact Horner evaluator. Complex roots are listed outside the real plane; repeated roots retain multiplicity in the result. The graph is omitted with a text explanation when finite coordinates or labels cannot be distinguished. Scalar results and native CSV/JSON exports retain the full result pack and raw inputs without snapping small nonzero roots to zero.

Typing computes locally. Share URLs and REST/MCP requests transmit inputs and may enter browser, server, or intermediary logs. Avoid confidential values in shared URLs. See NIST DLMF polynomial definitions and evaluation and Neumaier–Polzer polynomial zero enclosures for mathematical background; implementation checks are independent of these references.

Frequently asked questions

Key distinctions behind the calculation.

Is this the quadratic formula page?

No. /calc/math/quadratic is ax²+bx+c with discriminant, vertex, and a parabola. This page returns every root of a general degree-n polynomial.

How is this different from numerical root?

Numerical root finds one real root of a polynomial with Newton, bisection, or secant. This page returns all n roots, including complex conjugates.

Can I factor symbolically?

No. Symbolic CAS is out of scope. The solver is closed form for degree 1–3 (Cardano on cubics) and Durand–Kerner for degree 4–8. Evaluate p(x) at /polynomial-evaluate.

Where does this run?

Locally in the browser by default. REST and MCP call the same polynomial-roots engine.