def rischDE(fa, fd, ga, gd, DE):
 (_, (fa, fd)) = weak_normalizer(fa, fd, DE)
 (a, (ba, bd), (ca, cd), hn) = normal_denom(fa, fd, ga, gd, DE)
 (A, B, C, hs) = special_denom(a, ba, bd, ca, cd, DE)
 try:
  n = bound_degree(A, B, C, DE)
 except NotImplementedError:
  n = oo
 (B, C, m, alpha, beta) = spde(A, B, C, n, DE)
 if C.is_zero:
  y = C
 else:
  y = solve_poly_rde(B, C, m, DE)
 return (((alpha * y) + beta), (hn * hs))

def rischDE ( fa , fd , ga , gd , DE ) : ( _ , ( fa , fd ) ) = weak_normalizer ( fa , fd , DE ) ( a , ( ba , bd ) , ( ca , cd ) , hn ) = normal_denom ( fa , fd , ga , gd , DE ) ( A , B , C , hs ) = special_denom ( a , ba , bd , ca , cd , DE ) try : n = bound_degree ( A , B , C , DE ) except NotImplementedError : n = oo ( B , C , m , alpha , beta ) = spde ( A , B , C , n , DE ) if C . is_zero : y = C else : y = solve_poly_rde ( B , C , m , DE ) return ( ( ( alpha * y ) + beta ) , ( hn * hs ) )
solve a risch differential equation: dy + f*y == g .