(fa, fd, G, DE)
Solve a Parametric Risch Differential Equation: Dy + f*y == Sum(ci*Gi, (i, 1, m)).
Solve a Parametric Risch Differential Equation: Dy + f*y == Sum(ci*Gi, (i, 1, m)).
Solve a Parametric Risch Differential Equation : Dy + f * y == Sum ( ci * Gi ( i 1 m )) .
def param_rischDE(fa, fd, G, DE):
    """
    Solve a Parametric Risch Differential Equation: Dy + f*y == Sum(ci*Gi, (i, 1, m)).
    """
    _, (fa, fd) = weak_normalizer(fa, fd, DE)
    a, (ba, bd), G, hn = prde_normal_denom(ga, gd, G, DE)
    A, B, G, hs = prde_special_denom(a, ba, bd, G, DE)
    g = gcd(A, B)
    A, B, G = A.quo(g), B.quo(g), [gia.cancel(gid*g, include=True) for
        gia, gid in G]
    Q, M = prde_linear_constraints(A, B, G, DE)
    M, _ = constant_system(M, zeros(M.rows, 1), DE)
    # Reduce number of constants at this point
    try:
        # Similar to rischDE(), we try oo, even though it might lead to
        # non-termination when there is no solution.  At least for prde_spde,
        # it will always terminate no matter what n is.
        n = bound_degree(A, B, G, DE, parametric=True)
    except NotImplementedError:
        # Useful for debugging:
        # import warnings
        # warnings.warn("param_rischDE: Proceeding with n = oo; may cause "
        #     "non-termination.")
        n = oo

    A, B, Q, R, n1 = prde_spde(A, B, Q, n, DE)
def param_rischDE ( fa , fd , G , DE ) : _ , ( fa , fd ) = weak_normalizer ( fa , fd , DE ) a , ( ba , bd ) , G , hn = prde_normal_denom ( ga , gd , G , DE ) A , B , G , hs = prde_special_denom ( a , ba , bd , G , DE ) g = gcd ( A , B ) A , B , G = A . quo ( g ) , B . quo ( g ) , [ gia . cancel ( gid * g , include = True ) for gia , gid in G ] Q , M = prde_linear_constraints ( A , B , G , DE ) M , _ = constant_system ( M , zeros ( M . rows , 1 ) , DE ) # Reduce number of constants at this point try : # Similar to rischDE(), we try oo, even though it might lead to # non-termination when there is no solution.  At least for prde_spde, # it will always terminate no matter what n is. n = bound_degree ( A , B , G , DE , parametric = True ) except NotImplementedError : # Useful for debugging: # import warnings # warnings.warn("param_rischDE: Proceeding with n = oo; may cause " #     "non-termination.") n = oo A , B , Q , R , n1 = prde_spde ( A , B , Q , n , DE )