(P, Q)
return assemble_partfrac_list(apart_list(P/Q, P.gens[0]))
Bronstein's full partial fraction decomposition algorithm.

    Given a univariate rational function ``f``, performing only GCD
    operations over the algebraic closure of the initial ground domain
    of definition, compute full partial fraction decomposition with
    fractions having linear denominators.

    Note that no factorization of the initial denominator of ``f`` is
    performed. The final decomposition is formed in terms of a sum of
    :class:`RootSum` instances.

    References
    ==========

    1. [Bronstein93]_
Bronstein's full partial fraction decomposition algorithm.
Bronstein s full partial fraction decomposition algorithm .
def apart_full_decomposition(P, Q):
    """
    Bronstein's full partial fraction decomposition algorithm.

    Given a univariate rational function ``f``, performing only GCD
    operations over the algebraic closure of the initial ground domain
    of definition, compute full partial fraction decomposition with
    fractions having linear denominators.

    Note that no factorization of the initial denominator of ``f`` is
    performed. The final decomposition is formed in terms of a sum of
    :class:`RootSum` instances.

    References
    ==========

    1. [Bronstein93]_

    """
    return assemble_partfrac_list(apart_list(P/Q, P.gens[0]))
def apart_full_decomposition ( P , Q ) : return assemble_partfrac_list ( apart_list ( P / Q , P . gens [ 0 ] ) )