from typing import Tuple
from typing import Union


def quadratic_roots(
    a: float,
    b: float,
    c: float,
) -> Tuple[Union[float, complex], Union[float, complex]]:
    """Finds all roots of the quadratic polynomial ``ax^2 + bx + c = 0``.

    Args:
        a: The coefficient of ``x^2`` in the polynomial. Must be non-zero.
        b: The coefficient of ``x`` in the polynomial.
        c: The constant addend term in the polynomial.

    Returns:
        A tuple ``(x0, x1)``, where ``x0`` and ``x1`` are solutions for ``x``
        in ``ax^2 + bx + c = 0`` and ``x0 <= x1``, assuming a natural ordering.
    """
    axis = -b
    delta = (b**2 - 4 * a * c)**0.5
    denom = 2 * a
    return (axis - delta) / denom, (axis + delta) / denom