int_rules_1_1_3_2 = @theory begin

    #= ::Subsection::Closed:: =#
    #= 1.1.3.2*(c*x)^m*(a+b*x^n)^p =#
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => Antiderivative((~c * ~x) ^ ~m * (~a1 * ~a2 + ~b1 * ~b2 * (~x) ^ (2 * ~n)) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(~p) || GtQ(~a1, 0) && GtQ(~a2, 0)))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => log(RemoveContent(~a + ~b * (~x) ^ ~n, ~x)) / (~b * ~n) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && EqQ(~m, ~n - 1)
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (~a + ~b * (~x) ^ ~n) ^ (~p + 1) / (~b * ~n * (~p + 1)) <-- FreeQ([~a, ~b, ~m, ~n, ~p], ~x) && (EqQ(~m, ~n - 1) && NeQ(~p, -1))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~(n')) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~(n')) ^ ~p, ~x) => ((~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (2 * ~b1 * ~b2 * ~n * (~p + 1)) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (EqQ(~m, 2 * ~n - 1) && NeQ(~p, -1)))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => Antiderivative((~x) ^ (~m + ~n * ~p) * (~b + ~a * (~x) ^ -(~n)) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && (IntegerQ(~p) && NegQ(~n))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * (~m + 1)) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && (EqQ((~m + 1) / ~n + ~p + 1, 0) && NeQ(~m, -1))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~a1 * ~a2 * ~c * (~m + 1)) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (EqQ((~m + 1) / (2 * ~n) + ~p + 1, 0) && NeQ(~m, -1)))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (1 / ~n) * Subst(Antiderivative((~x) ^ (Simplify((~m + 1) / ~n) - 1) * (~a + ~b * ~x) ^ ~p, ~x), ~x, (~x) ^ ~n) <-- FreeQ([~a, ~b, ~m, ~n, ~p], ~x) && IntegerQ(Simplify((~m + 1) / ~n))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (1 / ~n) * Subst(Antiderivative((~x) ^ (Simplify((~m + 1) / ~n) - 1) * (~a1 + ~b1 * ~x) ^ ~p * (~a2 + ~b2 * ~x) ^ ~p, ~x), ~x, (~x) ^ ~n) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && IntegerQ(Simplify((~m + 1) / (2 * ~n))))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && IntegerQ(Simplify((~m + 1) / ~n))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && IntegerQ(Simplify((~m + 1) / (2 * ~n))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~(p'), ~x) => Antiderivative(ExpandIntegrand((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x), ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && IGtQ(~p, 0)
    @apply_utils Antiderivative((~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * (~m + 1)) - ((~b * (~m + ~n * (~p + 1) + 1)) / (~a * (~m + 1))) * Antiderivative((~x) ^ (~m + ~n) * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~m, ~n, ~p], ~x) && (ILtQ(Simplify((~m + 1) / ~n + ~p + 1), 0) && NeQ(~m, -1))
    @apply_utils Antiderivative((~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~a1 * ~a2 * (~m + 1)) - ((~b1 * ~b2 * (~m + 2 * ~n * (~p + 1) + 1)) / (~a1 * ~a2 * (~m + 1))) * Antiderivative((~x) ^ (~m + 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (ILtQ(Simplify((~m + 1) / (2 * ~n) + ~p + 1), 0) && NeQ(~m, -1)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * ~n * (~p + 1)) + ((~m + ~n * (~p + 1) + 1) / (~a * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && (ILtQ(Simplify((~m + 1) / ~n + ~p + 1), 0) && NeQ(~p, -1))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (2 * ~a1 * ~a2 * ~c * ~n * (~p + 1)) + ((~m + 2 * ~n * (~p + 1) + 1) / (2 * ~a1 * ~a2 * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (ILtQ(Simplify((~m + 1) / (2 * ~n) + ~p + 1), 0) && NeQ(~p, -1)))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => With([k = GCD(~m + 1, ~n)], (1 / k) * Subst(Antiderivative((~x) ^ ((~m + 1) / k - 1) * (~a + ~b * (~x) ^ (~n / k)) ^ ~p, ~x), ~x, (~x) ^ k) <-- k != 1) <-- FreeQ([~a, ~b, ~p], ~x) && (IGtQ(~n, 0) && IntegerQ(~m))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => With([k = GCD(~m + 1, 2 * ~n)], (1 / k) * Subst(Antiderivative((~x) ^ ((~m + 1) / k - 1) * (~a1 + ~b1 * (~x) ^ (~n / k)) ^ ~p * (~a2 + ~b2 * (~x) ^ (~n / k)) ^ ~p, ~x), ~x, (~x) ^ k) <-- k != 1) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && IntegerQ(~m)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ ~p) / (~c * (~m + 1)) - ((~b * ~n * ~p) / ((~c) ^ ~n * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + ~n) * (~a + ~b * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && (IGtQ(~n, 0) && (GtQ(~p, 0) && (LtQ(~m, -1) && (Not(ILtQ((~m + ~n * ~p + ~n + 1) / ~n, 0)) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x)))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p) / (~c * (~m + 1)) - ((2 * ~b1 * ~b2 * ~n * ~p) / ((~c) ^ (2 * ~n) * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p - 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (GtQ(~p, 0) && (LtQ(~m, -1) && (NeQ(~m + 2 * ~n * ~p + 1, 0) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x))))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ ~p) / (~c * (~m + ~n * ~p + 1)) + ((~a * ~n * ~p) / (~m + ~n * ~p + 1)) * Antiderivative((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a, ~b, ~c, ~m], ~x) && (IGtQ(~n, 0) && (GtQ(~p, 0) && (NeQ(~m + ~n * ~p + 1, 0) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p) / (~c * (~m + 2 * ~n * ~p + 1)) + ((2 * ~a1 * ~a2 * ~n * ~p) / (~m + 2 * ~n * ~p + 1)) * Antiderivative((~c * ~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p - 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (GtQ(~p, 0) && (NeQ(~m + 2 * ~n * ~p + 1, 0) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x)))))
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4) ^ (5 / 4), ~x) => ((~x * (1 + ~a / (~b * (~x) ^ 4)) ^ (1 / 4)) / (~b * (~a + ~b * (~x) ^ 4) ^ (1 / 4))) * Antiderivative(1 / ((~x) ^ 3 * (1 + ~a / (~b * (~x) ^ 4)) ^ (5 / 4)), ~x) <-- FreeQ([~a, ~b], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ 4) ^ (5 / 4), ~x) => (~x) ^ (~m - 3) / (~b * (~m - 4) * (~a + ~b * (~x) ^ 4) ^ (1 / 4)) - ((~a * (~m - 3)) / (~b * (~m - 4))) * Antiderivative((~x) ^ (~m - 4) / (~a + ~b * (~x) ^ 4) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b], ~x) && (PosQ(~b / ~a) && IGtQ((~m - 2) / 4, 0))
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ 4) ^ (5 / 4), ~x) => (~x) ^ (~m + 1) / (~a * (~m + 1) * (~a + ~b * (~x) ^ 4) ^ (1 / 4)) - ((~b * ~m) / (~a * (~m + 1))) * Antiderivative((~x) ^ (~m + 4) / (~a + ~b * (~x) ^ 4) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b], ~x) && (PosQ(~b / ~a) && ILtQ((~m - 2) / 4, 0))
    @apply_utils Antiderivative(sqrt(~(c') * ~x) / (~a + ~(b') * (~x) ^ 2) ^ (5 / 4), ~x) => ((sqrt(~c * ~x) * (1 + ~a / (~b * (~x) ^ 2)) ^ (1 / 4)) / (~b * (~a + ~b * (~x) ^ 2) ^ (1 / 4))) * Antiderivative(1 / ((~x) ^ 2 * (1 + ~a / (~b * (~x) ^ 2)) ^ (5 / 4)), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m / (~a + ~(b') * (~x) ^ 2) ^ (5 / 4), ~x) => (2 * ~c * (~c * ~x) ^ (~m - 1)) / (~b * (2 * ~m - 3) * (~a + ~b * (~x) ^ 2) ^ (1 / 4)) - ((2 * ~a * (~c) ^ 2 * (~m - 1)) / (~b * (2 * ~m - 3))) * Antiderivative((~c * ~x) ^ (~m - 2) / (~a + ~b * (~x) ^ 2) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && (PosQ(~b / ~a) && (IntegerQ(2 * ~m) && GtQ(~m, 3 / 2)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m / (~a + ~(b') * (~x) ^ 2) ^ (5 / 4), ~x) => (~c * ~x) ^ (~m + 1) / (~a * ~c * (~m + 1) * (~a + ~b * (~x) ^ 2) ^ (1 / 4)) - ((~b * (2 * ~m + 1)) / (2 * ~a * (~c) ^ 2 * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + 2) / (~a + ~b * (~x) ^ 2) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && (PosQ(~b / ~a) && (IntegerQ(2 * ~m) && LtQ(~m, -1)))
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4) ^ (5 / 4), ~x) => -1 / (~b * ~x * (~a + ~b * (~x) ^ 4) ^ (1 / 4)) - (1 / ~b) * Antiderivative(1 / ((~x) ^ 2 * (~a + ~b * (~x) ^ 4) ^ (1 / 4)), ~x) <-- FreeQ([~a, ~b], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (~n - 1) * (~c * ~x) ^ ((~m - ~n) + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~b * ~n * (~p + 1)) - (((~c) ^ ~n * ((~m - ~n) + 1)) / (~b * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ (~m - ~n) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && (IGtQ(~n, 0) && (LtQ(~p, -1) && (GtQ(~m + 1, ~n) && (Not(ILtQ((~m + ~n * (~p + 1) + 1) / ~n, 0)) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x)))))
    #= Antiderivative(((~c')*(~x))^(~m')*(~u)^(~p)*(~v)^(~p),~x) :=  With([a=BinomialParts(u,x)((1)),b=BinomialParts(u,x)((2)),n= BinomialParts(u,x)((3))], c^(n-1)*(c*x)^(m-n+1)*u^(p+1)*v^(p+1)/(b*n*(p+1)) - c^n*(m-n+1)/(b*n*(p+1))*Antiderivative((c*x)^(m-n)*u^(p+1)*v^(p+1),x) <--  IGtQ(n,0) && m+1>n && Not(ILtQ((m+n*(p+1)+1)/n,0)) && IntBinomialQ(a,b,c,n,m,p,x)) <-- FreeQ(c,x) && BinomialQ(u*v,x) &&  LtQ(p,-1) =#
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (2 * ~n - 1) * (~c * ~x) ^ ((~m - 2 * ~n) + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (2 * ~b1 * ~b2 * ~n * (~p + 1)) - (((~c) ^ (2 * ~n) * ((~m - 2 * ~n) + 1)) / (2 * ~b1 * ~b2 * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ (~m - 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (LtQ(~p, -1) && (~m + 1 > 2 * ~n && (Not(ILtQ((~m + 2 * ~n * (~p + 1) + 1) / (2 * ~n), 0)) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x))))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * ~n * (~p + 1)) + ((~m + ~n * (~p + 1) + 1) / (~a * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a, ~b, ~c, ~m], ~x) && (IGtQ(~n, 0) && (LtQ(~p, -1) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (2 * ~a1 * ~a2 * ~c * ~n * (~p + 1)) + ((~m + 2 * ~n * (~p + 1) + 1) / (2 * ~a1 * ~a2 * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (LtQ(~p, -1) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x))))
    @apply_utils Antiderivative(~x / (~a + ~(b') * (~x) ^ 3), ~x) => (-1 / (3 * Rt(~a, 3) * Rt(~b, 3))) * Antiderivative(1 / (Rt(~a, 3) + Rt(~b, 3) * ~x), ~x) + (1 / (3 * Rt(~a, 3) * Rt(~b, 3))) * Antiderivative((Rt(~a, 3) + Rt(~b, 3) * ~x) / ((Rt(~a, 3) ^ 2 - Rt(~a, 3) * Rt(~b, 3) * ~x) + Rt(~b, 3) ^ 2 * (~x) ^ 2), ~x) <-- FreeQ([~a, ~b], ~x)
    #= Antiderivative((~x)^(~m')/((~a)+(~b')*(~x)^5),~x) :=  With([r=Numerator(Rt(a/b,5)), s=Denominator(Rt(a/b,5))], (-1)^m*r^(m+1)/(5*a*s^m)*Antiderivative(1/(r+s*x),x) + 2*r^(m+1)/(5*a*s^m)*Antiderivative((r*cos(m*pi/5)-s*cos((m+1)*pi/5)*x)/(r^2-1/ 2*(1+sqrt(5))*r*s*x+s^2*x^2),x) + 2*r^(m+1)/(5*a*s^m)*Antiderivative((r*cos(3*m*pi/5)-s*cos(3*(m+1)*pi/5)*x)/(r^ 2-1/2*(1-sqrt(5))*r*s*x+s^2*x^2),x)) <-- FreeQ([a,b],x) && IGtQ(m,0) &&  LtQ(m,4) && PosQ(a/b) =#
    #= Antiderivative((~x)^(~m')/((~a)+(~b')*(~x)^5),~x) :=  With([r=Numerator(Rt(-a/b,5)), s=Denominator(Rt(-a/b,5))], (r^(m+1)/(5*a*s^m))*Antiderivative(1/(r-s*x),x) + 2*(-1)^m*r^(m+1)/(5*a*s^m)*Antiderivative((r*cos(m*pi/5)+s*cos((m+1)*pi/5)*x)/( r^2+1/2*(1+sqrt(5))*r*s*x+s^2*x^2),x) + 2*(-1)^m*r^(m+1)/(5*a*s^m)*Antiderivative((r*cos(3*m*pi/5)+s*cos(3*(m+1)*pi/5)* x)/(r^2+1/2*(1-sqrt(5))*r*s*x+s^2*x^2),x)) <-- FreeQ([a,b],x) &&  IGtQ(m,0) && LtQ(m,4) && NegQ(a/b) =#
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => Module([r = Numerator(Rt(~a / ~b, ~n)), s = Denominator(Rt(~a / ~b, ~n)), k, u], u = Antiderivative((r * cos(((2k - 1) * ~m * pi) / ~n) - s * cos(((2k - 1) * (~m + 1) * pi) / ~n) * ~x) / ((r ^ 2 - 2 * r * s * cos(((2k - 1) * pi) / ~n) * ~x) + s ^ 2 * (~x) ^ 2), ~x); (-((-r) ^ (~m + 1)) / (~a * ~n * s ^ ~m)) * Antiderivative(1 / (r + s * ~x), ~x) + Dist((2 * r ^ (~m + 1)) / (~a * ~n * s ^ ~m), Sum(u, [k, 1, (~n - 1) / 2]), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ((~n - 1) / 2, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n - 1) && PosQ(~a / ~b))))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => Module([r = Numerator(Rt(-(~a) / ~b, ~n)), s = Denominator(Rt(-(~a) / ~b, ~n)), k, u], u = Antiderivative((r * cos(((2k - 1) * ~m * pi) / ~n) + s * cos(((2k - 1) * (~m + 1) * pi) / ~n) * ~x) / (r ^ 2 + 2 * r * s * cos(((2k - 1) * pi) / ~n) * ~x + s ^ 2 * (~x) ^ 2), ~x); (r ^ (~m + 1) / (~a * ~n * s ^ ~m)) * Antiderivative(1 / (r - s * ~x), ~x) - Dist((2 * (-r) ^ (~m + 1)) / (~a * ~n * s ^ ~m), Sum(u, [k, 1, (~n - 1) / 2]), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ((~n - 1) / 2, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n - 1) && NegQ(~a / ~b))))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => Module([r = Numerator(Rt(~a / ~b, ~n)), s = Denominator(Rt(~a / ~b, ~n)), k, u], u = Antiderivative((r * cos(((2k - 1) * ~m * pi) / ~n) - s * cos(((2k - 1) * (~m + 1) * pi) / ~n) * ~x) / ((r ^ 2 - 2 * r * s * cos(((2k - 1) * pi) / ~n) * ~x) + s ^ 2 * (~x) ^ 2), ~x) + Antiderivative((r * cos(((2k - 1) * ~m * pi) / ~n) + s * cos(((2k - 1) * (~m + 1) * pi) / ~n) * ~x) / (r ^ 2 + 2 * r * s * cos(((2k - 1) * pi) / ~n) * ~x + s ^ 2 * (~x) ^ 2), ~x); ((2 * (-1) ^ (~m / 2) * r ^ (~m + 2)) / (~a * ~n * s ^ ~m)) * Antiderivative(1 / (r ^ 2 + s ^ 2 * (~x) ^ 2), ~x) + Dist((2 * r ^ (~m + 1)) / (~a * ~n * s ^ ~m), Sum(u, [k, 1, (~n - 2) / 4]), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ((~n - 2) / 4, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n - 1) && PosQ(~a / ~b))))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => Module([r = Numerator(Rt(-(~a) / ~b, ~n)), s = Denominator(Rt(-(~a) / ~b, ~n)), k, u], u = Antiderivative((r * cos((2 * k * ~m * pi) / ~n) - s * cos((2 * k * (~m + 1) * pi) / ~n) * ~x) / ((r ^ 2 - 2 * r * s * cos((2 * k * pi) / ~n) * ~x) + s ^ 2 * (~x) ^ 2), ~x) + Antiderivative((r * cos((2 * k * ~m * pi) / ~n) + s * cos((2 * k * (~m + 1) * pi) / ~n) * ~x) / (r ^ 2 + 2 * r * s * cos((2 * k * pi) / ~n) * ~x + s ^ 2 * (~x) ^ 2), ~x); ((2 * r ^ (~m + 2)) / (~a * ~n * s ^ ~m)) * Antiderivative(1 / (r ^ 2 - s ^ 2 * (~x) ^ 2), ~x) + Dist((2 * r ^ (~m + 1)) / (~a * ~n * s ^ ~m), Sum(u, [k, 1, (~n - 2) / 4]), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ((~n - 2) / 4, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n - 1) && NegQ(~a / ~b))))
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4), ~x) => With([r = Numerator(Rt(~a / ~b, 2)), s = Denominator(Rt(~a / ~b, 2))], (1 / (2s)) * Antiderivative((r + s * (~x) ^ 2) / (~a + ~b * (~x) ^ 4), ~x) - (1 / (2s)) * Antiderivative((r - s * (~x) ^ 2) / (~a + ~b * (~x) ^ 4), ~x)) <-- FreeQ([~a, ~b], ~x) && (GtQ(~a / ~b, 0) || PosQ(~a / ~b) && (AtomQ(SplitProduct(SumBaseQ, ~a)) && AtomQ(SplitProduct(SumBaseQ, ~b))))
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4), ~x) => With([r = Numerator(Rt(-(~a) / ~b, 2)), s = Denominator(Rt(-(~a) / ~b, 2))], (s / (2 * ~b)) * Antiderivative(1 / (r + s * (~x) ^ 2), ~x) - (s / (2 * ~b)) * Antiderivative(1 / (r - s * (~x) ^ 2), ~x)) <-- FreeQ([~a, ~b], ~x) && Not(GtQ(~a / ~b, 0))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => With([r = Numerator(Rt(~a / ~b, 4)), s = Denominator(Rt(~a / ~b, 4))], (s ^ 3 / (2 * sqrt(2) * ~b * r)) * Antiderivative((~x) ^ (~m - ~n / 4) / ((r ^ 2 - sqrt(2) * r * s * (~x) ^ (~n / 4)) + s ^ 2 * (~x) ^ (~n / 2)), ~x) - (s ^ 3 / (2 * sqrt(2) * ~b * r)) * Antiderivative((~x) ^ (~m - ~n / 4) / (r ^ 2 + sqrt(2) * r * s * (~x) ^ (~n / 4) + s ^ 2 * (~x) ^ (~n / 2)), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~n / 4, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n - 1) && GtQ(~a / ~b, 0))))
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ ~n), ~x) => With([r = Numerator(Rt(-(~a) / ~b, 2)), s = Denominator(Rt(-(~a) / ~b, 2))], (r / (2 * ~a)) * Antiderivative((~x) ^ ~m / (r + s * (~x) ^ (~n / 2)), ~x) + (r / (2 * ~a)) * Antiderivative((~x) ^ ~m / (r - s * (~x) ^ (~n / 2)), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~n / 4, 0) && (IGtQ(~m, 0) && (LtQ(~m, ~n / 2) && Not(GtQ(~a / ~b, 0)))))
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ ~n), ~x) => With([r = Numerator(Rt(-(~a) / ~b, 2)), s = Denominator(Rt(-(~a) / ~b, 2))], (s / (2 * ~b)) * Antiderivative((~x) ^ (~m - ~n / 2) / (r + s * (~x) ^ (~n / 2)), ~x) - (s / (2 * ~b)) * Antiderivative((~x) ^ (~m - ~n / 2) / (r - s * (~x) ^ (~n / 2)), ~x)) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~n / 4, 0) && (IGtQ(~m, 0) && (LeQ(~n / 2, ~m) && (LtQ(~m, ~n) && Not(GtQ(~a / ~b, 0))))))
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ ~n), ~x) => Antiderivative(PolynomialDivide((~x) ^ ~m, ~a + ~b * (~x) ^ ~n, ~x), ~x) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~m, 0) && (IGtQ(~n, 0) && GtQ(~m, 2 * ~n - 1)))
    @apply_utils Antiderivative(~x / sqrt(~a + ~(b') * (~x) ^ 3), ~x) => With([r = Numer(Rt(~b / ~a, 3)), s = Denom(Rt(~b / ~a, 3))], ((-((1 - sqrt(3))) * s) / r) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 3), ~x) + (1 / r) * Antiderivative(((1 - sqrt(3)) * s + r * ~x) / sqrt(~a + ~b * (~x) ^ 3), ~x)) <-- FreeQ([~a, ~b], ~x) && PosQ(~a)
    @apply_utils Antiderivative(~x / sqrt(~a + ~(b') * (~x) ^ 3), ~x) => With([r = Numer(Rt(~b / ~a, 3)), s = Denom(Rt(~b / ~a, 3))], ((-((1 + sqrt(3))) * s) / r) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 3), ~x) + (1 / r) * Antiderivative(((1 + sqrt(3)) * s + r * ~x) / sqrt(~a + ~b * (~x) ^ 3), ~x)) <-- FreeQ([~a, ~b], ~x) && NegQ(~a)
    @apply_utils Antiderivative((~x) ^ 2 / sqrt(~a + ~(b') * (~x) ^ 4), ~x) => With([q = Rt(~b / ~a, 2)], (1 / q) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 4), ~x) - (1 / q) * Antiderivative((1 - q * (~x) ^ 2) / sqrt(~a + ~b * (~x) ^ 4), ~x)) <-- FreeQ([~a, ~b], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative((~x) ^ 2 / sqrt(~a + ~(b') * (~x) ^ 4), ~x) => With([q = Rt(-(~b) / ~a, 2)], (1 / q) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 4), ~x) - (1 / q) * Antiderivative((1 - q * (~x) ^ 2) / sqrt(~a + ~b * (~x) ^ 4), ~x)) <-- FreeQ([~a, ~b], ~x) && (LtQ(~a, 0) && GtQ(~b, 0))
    @apply_utils Antiderivative((~x) ^ 2 / sqrt(~a + ~(b') * (~x) ^ 4), ~x) => With([q = Rt(-(~b) / ~a, 2)], (-1 / q) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 4), ~x) + (1 / q) * Antiderivative((1 + q * (~x) ^ 2) / sqrt(~a + ~b * (~x) ^ 4), ~x)) <-- FreeQ([~a, ~b], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative((~x) ^ 4 / sqrt(~a + ~(b') * (~x) ^ 6), ~x) => With([r = Numer(Rt(~b / ~a, 3)), s = Denom(Rt(~b / ~a, 3))], (((sqrt(3) - 1) * s ^ 2) / (2 * r ^ 2)) * Antiderivative(1 / sqrt(~a + ~b * (~x) ^ 6), ~x) - (1 / (2 * r ^ 2)) * Antiderivative(((sqrt(3) - 1) * s ^ 2 - 2 * r ^ 2 * (~x) ^ 4) / sqrt(~a + ~b * (~x) ^ 6), ~x)) <-- FreeQ([~a, ~b], ~x)
    #= Antiderivative((~x)^4/sqrt((~a)+(~b')*(~x)^6),~x) :=  With([r=Numer(Rt(b/a,3)), s=Denom(Rt(b/a,3))], (1+sqrt(3))*r*x*sqrt(a+b*x^6)/(2*b*(s+(1+sqrt(3))*r*x^2)) - 3^(1/4)*s*x*(s+r*x^2)*sqrt((s^2-r*s*x^2+r^2*x^4)/(s+(1+sqrt(3))*r*x^ 2)^2)/ (2*r^2*sqrt(a+b*x^6)*sqrt(r*x^2*(s+r*x^2)/(s+(1+sqrt(3))*r*x^2)^2) )* Elliptic.E(acos((s+(1-sqrt(3))*r*x^2)/(s+(1+sqrt(3))*r*x^2)),(2+ sqrt(3))/4) - (1-sqrt(3))*s*x*(s+r*x^2)*sqrt((s^2-r*s*x^2+r^2*x^4)/(s+(1+sqrt(3))* r*x^2)^2)/ (4*3^(1/4)*r^2*sqrt(a+b*x^6)*sqrt(r*x^2*(s+r*x^2)/(s+(1+sqrt(3))* r*x^2)^2))* Elliptic.F(acos((s+(1-sqrt(3))*r*x^2)/(s+(1+sqrt(3))*r*x^2)),(2+ sqrt(3))/4)) <-- FreeQ([a,b],x) =#
    @apply_utils Antiderivative((~x) ^ 2 / sqrt(~a + ~(b') * (~x) ^ 8), ~x) => (1 / (2 * Rt(~b / ~a, 4))) * Antiderivative((1 + Rt(~b / ~a, 4) * (~x) ^ 2) / sqrt(~a + ~b * (~x) ^ 8), ~x) - (1 / (2 * Rt(~b / ~a, 4))) * Antiderivative((1 - Rt(~b / ~a, 4) * (~x) ^ 2) / sqrt(~a + ~b * (~x) ^ 8), ~x) <-- FreeQ([~a, ~b], ~x)
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4) ^ (1 / 4), ~x) => (~x) ^ 3 / (2 * (~a + ~b * (~x) ^ 4) ^ (1 / 4)) - (~a / 2) * Antiderivative((~x) ^ 2 / (~a + ~b * (~x) ^ 4) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative((~x) ^ 2 / (~a + ~(b') * (~x) ^ 4) ^ (1 / 4), ~x) => (~a + ~b * (~x) ^ 4) ^ (3 / 4) / (2 * ~b * ~x) + (~a / (2 * ~b)) * Antiderivative(1 / ((~x) ^ 2 * (~a + ~b * (~x) ^ 4) ^ (1 / 4)), ~x) <-- FreeQ([~a, ~b], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative(1 / ((~x) ^ 2 * (~a + ~(b') * (~x) ^ 4) ^ (1 / 4)), ~x) => -1 / (~x * (~a + ~b * (~x) ^ 4) ^ (1 / 4)) - ~b * Antiderivative((~x) ^ 2 / (~a + ~b * (~x) ^ 4) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative(1 / ((~x) ^ 2 * (~a + ~(b') * (~x) ^ 4) ^ (1 / 4)), ~x) => ((~x * (1 + ~a / (~b * (~x) ^ 4)) ^ (1 / 4)) / (~a + ~b * (~x) ^ 4) ^ (1 / 4)) * Antiderivative(1 / ((~x) ^ 3 * (1 + ~a / (~b * (~x) ^ 4)) ^ (1 / 4)), ~x) <-- FreeQ([~a, ~b], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative(sqrt(~c * ~x) / (~a + ~(b') * (~x) ^ 2) ^ (1 / 4), ~x) => (~x * sqrt(~c * ~x)) / (~a + ~b * (~x) ^ 2) ^ (1 / 4) - (~a / 2) * Antiderivative(sqrt(~c * ~x) / (~a + ~b * (~x) ^ 2) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative(sqrt(~c * ~x) / (~a + ~(b') * (~x) ^ 2) ^ (1 / 4), ~x) => (~c * (~a + ~b * (~x) ^ 2) ^ (3 / 4)) / (~b * sqrt(~c * ~x)) + ((~a * (~c) ^ 2) / (2 * ~b)) * Antiderivative(1 / ((~c * ~x) ^ (3 / 2) * (~a + ~b * (~x) ^ 2) ^ (1 / 4)), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative(1 / ((~(c') * ~x) ^ (3 / 2) * (~a + ~(b') * (~x) ^ 2) ^ (1 / 4)), ~x) => -2 / (~c * sqrt(~c * ~x) * (~a + ~b * (~x) ^ 2) ^ (1 / 4)) - (~b / (~c) ^ 2) * Antiderivative(sqrt(~c * ~x) / (~a + ~b * (~x) ^ 2) ^ (5 / 4), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && PosQ(~b / ~a)
    @apply_utils Antiderivative(1 / ((~(c') * ~x) ^ (3 / 2) * (~a + ~(b') * (~x) ^ 2) ^ (1 / 4)), ~x) => ((sqrt(~c * ~x) * (1 + ~a / (~b * (~x) ^ 2)) ^ (1 / 4)) / ((~c) ^ 2 * (~a + ~b * (~x) ^ 2) ^ (1 / 4))) * Antiderivative(1 / ((~x) ^ 2 * (1 + ~a / (~b * (~x) ^ 2)) ^ (1 / 4)), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && NegQ(~b / ~a)
    @apply_utils Antiderivative(sqrt(~x) / sqrt(~a + ~(b') * (~x) ^ 2), ~x) => (-2 / (sqrt(~a) * (-(~b) / ~a) ^ (3 / 4))) * Subst(Antiderivative(sqrt(1 - 2 * (~x) ^ 2) / sqrt(1 - (~x) ^ 2), ~x), ~x, sqrt(1 - sqrt(-(~b) / ~a) * ~x) / sqrt(2)) <-- FreeQ([~a, ~b], ~x) && (GtQ(-(~b) / ~a, 0) && GtQ(~a, 0))
    @apply_utils Antiderivative(sqrt(~x) / sqrt(~a + ~(b') * (~x) ^ 2), ~x) => (sqrt(1 + (~b * (~x) ^ 2) / ~a) / sqrt(~a + ~b * (~x) ^ 2)) * Antiderivative(sqrt(~x) / sqrt(1 + (~b * (~x) ^ 2) / ~a), ~x) <-- FreeQ([~a, ~b], ~x) && (GtQ(-(~b) / ~a, 0) && Not(GtQ(~a, 0)))
    @apply_utils Antiderivative(sqrt(~c * ~x) / sqrt(~a + ~(b') * (~x) ^ 2), ~x) => (sqrt(~c * ~x) / sqrt(~x)) * Antiderivative(sqrt(~x) / sqrt(~a + ~b * (~x) ^ 2), ~x) <-- FreeQ([~a, ~b, ~c], ~x) && GtQ(-(~b) / ~a, 0)
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (~n - 1) * (~c * ~x) ^ ((~m - ~n) + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~b * (~m + ~n * ~p + 1)) - ((~a * (~c) ^ ~n * ((~m - ~n) + 1)) / (~b * (~m + ~n * ~p + 1))) * Antiderivative((~c * ~x) ^ (~m - ~n) * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~p], ~x) && (IGtQ(~n, 0) && (GtQ(~m, ~n - 1) && (NeQ(~m + ~n * ~p + 1, 0) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (~n - 1) * (~c * ~x) ^ ((~m - ~n) + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~b * (~m + ~n * ~p + 1)) - ((~a * (~c) ^ ~n * ((~m - ~n) + 1)) / (~b * (~m + ~n * ~p + 1))) * Antiderivative((~c * ~x) ^ (~m - ~n) * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~p], ~x) && (IGtQ(~n, 0) && (SumSimplerQ(~m, -(~n)) && (NeQ(~m + ~n * ~p + 1, 0) && ILtQ(Simplify((~m + 1) / ~n + ~p), 0))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (2 * ~n - 1) * (~c * ~x) ^ ((~m - 2 * ~n) + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~b1 * ~b2 * (~m + 2 * ~n * ~p + 1)) - ((~a1 * ~a2 * (~c) ^ (2 * ~n) * ((~m - 2 * ~n) + 1)) / (~b1 * ~b2 * (~m + 2 * ~n * ~p + 1))) * Antiderivative((~c * ~x) ^ (~m - 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (GtQ(~m, 2 * ~n - 1) && (NeQ(~m + 2 * ~n * ~p + 1, 0) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x)))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c) ^ (2 * ~n - 1) * (~c * ~x) ^ ((~m - 2 * ~n) + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~b1 * ~b2 * (~m + 2 * ~n * ~p + 1)) - ((~a1 * ~a2 * (~c) ^ (2 * ~n) * ((~m - 2 * ~n) + 1)) / (~b1 * ~b2 * (~m + 2 * ~n * ~p + 1))) * Antiderivative((~c * ~x) ^ (~m - 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (SumSimplerQ(~m, -2 * ~n) && (NeQ(~m + 2 * ~n * ~p + 1, 0) && ILtQ(Simplify((~m + 1) / (2 * ~n) + ~p), 0)))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * (~m + 1)) - ((~b * (~m + ~n * (~p + 1) + 1)) / (~a * (~c) ^ ~n * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + ~n) * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~p], ~x) && (IGtQ(~n, 0) && (LtQ(~m, -1) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * (~m + 1)) - ((~b * (~m + ~n * (~p + 1) + 1)) / (~a * (~c) ^ ~n * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + ~n) * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~p], ~x) && (IGtQ(~n, 0) && (SumSimplerQ(~m, ~n) && ILtQ(Simplify((~m + 1) / ~n + ~p), 0)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~a1 * ~a2 * ~c * (~m + 1)) - ((~b1 * ~b2 * (~m + 2 * ~n * (~p + 1) + 1)) / (~a1 * ~a2 * (~c) ^ (2 * ~n) * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (LtQ(~m, -1) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (~a1 * ~a2 * ~c * (~m + 1)) - ((~b1 * ~b2 * (~m + 2 * ~n * (~p + 1) + 1)) / (~a1 * ~a2 * (~c) ^ (2 * ~n) * (~m + 1))) * Antiderivative((~c * ~x) ^ (~m + 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (SumSimplerQ(~m, 2 * ~n) && ILtQ(Simplify((~m + 1) / (2 * ~n) + ~p), 0))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~m)], (k / ~c) * Subst(Antiderivative((~x) ^ (k * (~m + 1) - 1) * (~a + (~b * (~x) ^ (k * ~n)) / (~c) ^ ~n) ^ ~p, ~x), ~x, (~c * ~x) ^ (1 / k))) <-- FreeQ([~a, ~b, ~c, ~p], ~x) && (IGtQ(~n, 0) && (FractionQ(~m) && IntBinomialQ(~a, ~b, ~c, ~n, ~m, ~p, ~x)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~m)], (k / ~c) * Subst(Antiderivative((~x) ^ (k * (~m + 1) - 1) * (~a1 + (~b1 * (~x) ^ (k * ~n)) / (~c) ^ ~n) ^ ~p * (~a2 + (~b2 * (~x) ^ (k * ~n)) / (~c) ^ ~n) ^ ~p, ~x), ~x, (~c * ~x) ^ (1 / k))) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (FractionQ(~m) && IntBinomialQ(~a1 * ~a2, ~b1 * ~b2, ~c, 2 * ~n, ~m, ~p, ~x))))
    @apply_utils Antiderivative(~x / (~a + ~(b') * (~x) ^ 3) ^ (2 / 3), ~x) => With([q = Rt(~b, 3)], -(atan((1 + (2 * q * ~x) / (~a + ~b * (~x) ^ 3) ^ (1 / 3)) / sqrt(3))) / (sqrt(3) * q ^ 2) - log(q * ~x - (~a + ~b * (~x) ^ 3) ^ (1 / 3)) / (2 * q ^ 2)) <-- FreeQ([~a, ~b], ~x)
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (~a) ^ (~p + (~m + 1) / ~n) * Subst(Antiderivative((~x) ^ ~m / (1 - ~b * (~x) ^ ~n) ^ (~p + (~m + 1) / ~n + 1), ~x), ~x, ~x / (~a + ~b * (~x) ^ ~n) ^ (1 / ~n)) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~n, 0) && (LtQ(-1, ~p, 0) && (NeQ(~p, -1 / 2) && IntegersQ(~m, ~p + (~m + 1) / ~n))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (~a1 * ~a2) ^ (~p + (~m + 1) / (2 * ~n)) * Subst(Antiderivative((~x) ^ ~m / ((1 - ~b1 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n) + 1) * (1 - ~b2 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n) + 1)), ~x), ~x, ~x / ((~a1 + ~b1 * (~x) ^ ~n) ^ (1 / (2 * ~n)) * (~a2 + ~b2 * (~x) ^ ~n) ^ (1 / (2 * ~n)))) <-- FreeQ([~a1, ~b1, ~a2, ~b2], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (LtQ(-1, ~p, 0) && (NeQ(~p, -1 / 2) && IntegersQ(~m, ~p + (~m + 1) / (2 * ~n))))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (~a / (~a + ~b * (~x) ^ ~n)) ^ (~p + (~m + 1) / ~n) * (~a + ~b * (~x) ^ ~n) ^ (~p + (~m + 1) / ~n) * Subst(Antiderivative((~x) ^ ~m / (1 - ~b * (~x) ^ ~n) ^ (~p + (~m + 1) / ~n + 1), ~x), ~x, ~x / (~a + ~b * (~x) ^ ~n) ^ (1 / ~n)) <-- FreeQ([~a, ~b], ~x) && (IGtQ(~n, 0) && (LtQ(-1, ~p, 0) && (NeQ(~p, -1 / 2) && (IntegerQ(~m) && LtQ(Denominator(~p + (~m + 1) / ~n), Denominator(~p))))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (~a1 / (~a1 + ~b1 * (~x) ^ ~n)) ^ (~p + (~m + 1) / (2 * ~n)) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n)) * (~a2 / (~a2 + ~b2 * (~x) ^ ~n)) ^ (~p + (~m + 1) / (2 * ~n)) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n)) * Subst(Antiderivative((~x) ^ ~m / ((1 - ~b1 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n) + 1) * (1 - ~b2 * (~x) ^ ~n) ^ (~p + (~m + 1) / (2 * ~n) + 1)), ~x), ~x, ~x / ((~a1 + ~b1 * (~x) ^ ~n) ^ (1 / (2 * ~n)) * (~a2 + ~b2 * (~x) ^ ~n) ^ (1 / (2 * ~n)))) <-- FreeQ([~a1, ~b1, ~a2, ~b2], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IGtQ(2 * ~n, 0) && (LtQ(-1, ~p, 0) && (NeQ(~p, -1 / 2) && (IntegerQ(~m) && LtQ(Denominator(~p + (~m + 1) / (2 * ~n)), Denominator(~p)))))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => -(Subst(Antiderivative((~a + ~b * (~x) ^ -(~n)) ^ ~p / (~x) ^ (~m + 2), ~x), ~x, 1 / ~x)) <-- FreeQ([~a, ~b, ~p], ~x) && (ILtQ(~n, 0) && IntegerQ(~m))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => -(Subst(Antiderivative(((~a1 + ~b1 * (~x) ^ -(~n)) ^ ~p * (~a2 + ~b2 * (~x) ^ -(~n)) ^ ~p) / (~x) ^ (~m + 2), ~x), ~x, 1 / ~x)) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (ILtQ(2 * ~n, 0) && IntegerQ(~m)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~m)], (-k / ~c) * Subst(Antiderivative((~a + ~b * (~c) ^ -(~n) * (~x) ^ (-k * ~n)) ^ ~p / (~x) ^ (k * (~m + 1) + 1), ~x), ~x, 1 / (~c * ~x) ^ (1 / k))) <-- FreeQ([~a, ~b, ~c, ~p], ~x) && (ILtQ(~n, 0) && FractionQ(~m))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~m)], (-k / ~c) * Subst(Antiderivative(((~a1 + ~b1 * (~c) ^ -(~n) * (~x) ^ (-k * ~n)) ^ ~p * (~a2 + ~b2 * (~c) ^ -(~n) * (~x) ^ (-k * ~n)) ^ ~p) / (~x) ^ (k * (~m + 1) + 1), ~x), ~x, 1 / (~c * ~x) ^ (1 / k))) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (ILtQ(2 * ~n, 0) && FractionQ(~m)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (-1 / ~c) * (~c * ~x) ^ (~m + 1) * (1 / ~x) ^ (~m + 1) * Subst(Antiderivative((~a + ~b * (~x) ^ -(~n)) ^ ~p / (~x) ^ (~m + 2), ~x), ~x, 1 / ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~p], ~x) && (ILtQ(~n, 0) && Not(RationalQ(~m)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (-1 / ~c) * (~c * ~x) ^ (~m + 1) * (1 / ~x) ^ (~m + 1) * Subst(Antiderivative(((~a1 + ~b1 * (~x) ^ -(~n)) ^ ~p * (~a2 + ~b2 * (~x) ^ -(~n)) ^ ~p) / (~x) ^ (~m + 2), ~x), ~x, 1 / ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (ILtQ(2 * ~n, 0) && Not(RationalQ(~m))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~n)], k * Subst(Antiderivative((~x) ^ (k * (~m + 1) - 1) * (~a + ~b * (~x) ^ (k * ~n)) ^ ~p, ~x), ~x, (~x) ^ (1 / k))) <-- FreeQ([~a, ~b, ~m, ~p], ~x) && FractionQ(~n)
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(2 * ~n)], k * Subst(Antiderivative((~x) ^ (k * (~m + 1) - 1) * (~a1 + ~b1 * (~x) ^ (k * ~n)) ^ ~p * (~a2 + ~b2 * (~x) ^ (k * ~n)) ^ ~p, ~x), ~x, (~x) ^ (1 / k))) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && FractionQ(2 * ~n))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~p], ~x) && FractionQ(~n)
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && FractionQ(2 * ~n))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (1 / (~m + 1)) * Subst(Antiderivative((~a + ~b * (~x) ^ Simplify(~n / (~m + 1))) ^ ~p, ~x), ~x, (~x) ^ (~m + 1)) <-- FreeQ([~a, ~b, ~m, ~n, ~p], ~x) && (IntegerQ(Simplify(~n / (~m + 1))) && Not(IntegerQ(~n)))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (1 / (~m + 1)) * Subst(Antiderivative((~a1 + ~b1 * (~x) ^ Simplify(~n / (~m + 1))) ^ ~p * (~a2 + ~b2 * (~x) ^ Simplify(~n / (~m + 1))) ^ ~p, ~x), ~x, (~x) ^ (~m + 1)) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(Simplify((2 * ~n) / (~m + 1))) && Not(IntegerQ(2 * ~n))))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && (IntegerQ(Simplify(~n / (~m + 1))) && Not(IntegerQ(~n)))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(Simplify((2 * ~n) / (~m + 1))) && Not(IntegerQ(2 * ~n))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ ~p) / (~m + 1) - ((~b * ~n * ~p) / (~m + 1)) * Antiderivative((~x) ^ (~m + ~n) * (~a + ~b * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && (EqQ((~m + 1) / ~n + ~p, 0) && GtQ(~p, 0))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p) / (~m + 1) - ((2 * ~b1 * ~b2 * ~n * ~p) / (~m + 1)) * Antiderivative((~x) ^ (~m + 2 * ~n) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p - 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (EqQ((~m + 1) / (2 * ~n) + ~p, 0) && GtQ(~p, 0)))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && (EqQ((~m + 1) / ~n + ~p, 0) && GtQ(~p, 0))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (EqQ((~m + 1) / (2 * ~n) + ~p, 0) && GtQ(~p, 0)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a + ~b * (~x) ^ ~n) ^ ~p) / (~c * (~m + ~n * ~p + 1)) + ((~a * ~n * ~p) / (~m + ~n * ~p + 1)) * Antiderivative((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && (IntegerQ(~p + Simplify((~m + 1) / ~n)) && (GtQ(~p, 0) && NeQ(~m + ~n * ~p + 1, 0)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => ((~c * ~x) ^ (~m + 1) * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p) / (~c * (~m + 2 * ~n * ~p + 1)) + ((2 * ~a1 * ~a2 * ~n * ~p) / (~m + 2 * ~n * ~p + 1)) * Antiderivative((~c * ~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p - 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p - 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(~p + Simplify((~m + 1) / (2 * ~n))) && (GtQ(~p, 0) && NeQ(~m + 2 * ~n * ~p + 1, 0))))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~p)], ((k * (~a) ^ (~p + Simplify((~m + 1) / ~n))) / ~n) * Subst(Antiderivative((~x) ^ (k * Simplify((~m + 1) / ~n) - 1) / (1 - ~b * (~x) ^ k) ^ (~p + Simplify((~m + 1) / ~n) + 1), ~x), ~x, (~x) ^ (~n / k) / (~a + ~b * (~x) ^ ~n) ^ (1 / k))) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && (IntegerQ(~p + Simplify((~m + 1) / ~n)) && LtQ(-1, ~p, 0))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => With([k = Denominator(~p)], ((k * (~a1 * ~a2) ^ (~p + Simplify((~m + 1) / (2 * ~n)))) / (2 * ~n)) * Subst(Antiderivative((~x) ^ (k * Simplify((~m + 1) / (2 * ~n)) - 1) / (1 - ~b1 * ~b2 * (~x) ^ k) ^ (~p + Simplify((~m + 1) / (2 * ~n)) + 1), ~x), ~x, (~x) ^ ((2 * ~n) / k) / ((~a1 + ~b1 * (~x) ^ ~n) ^ (1 / k) * (~a2 + ~b2 * (~x) ^ ~n) ^ (1 / k)))) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(~p + Simplify((~m + 1) / (2 * ~n))) && LtQ(-1, ~p, 0)))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && (IntegerQ(~p + Simplify((~m + 1) / ~n)) && LtQ(-1, ~p, 0))
    @apply_utils Antiderivative((~c * ~x) ^ ~m * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ ~p * (~a2 + ~b2 * (~x) ^ ~n) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(~p + Simplify((~m + 1) / (2 * ~n))) && LtQ(-1, ~p, 0)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a + ~b * (~x) ^ ~n) ^ (~p + 1)) / (~a * ~c * ~n * (~p + 1)) + ((~m + ~n * (~p + 1) + 1) / (~a * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && (IntegerQ(~p + Simplify((~m + 1) / ~n)) && LtQ(~p, -1))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (-((~c * ~x) ^ (~m + 1)) * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1)) / (2 * ~a1 * ~a2 * ~c * ~n * (~p + 1)) + ((~m + 2 * ~n * (~p + 1) + 1) / (2 * ~a1 * ~a2 * ~n * (~p + 1))) * Antiderivative((~c * ~x) ^ ~m * (~a1 + ~b1 * (~x) ^ ~n) ^ (~p + 1) * (~a2 + ~b2 * (~x) ^ ~n) ^ (~p + 1), ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && (IntegerQ(~p + Simplify((~m + 1) / (2 * ~n))) && LtQ(~p, -1)))
    @apply_utils Antiderivative((~x) ^ ~(m') / (~a + ~(b') * (~x) ^ ~n), ~x) => With([mn = Simplify(~m - ~n)], (~x) ^ (mn + 1) / (~b * (mn + 1)) - (~a / ~b) * Antiderivative((~x) ^ mn / (~a + ~b * (~x) ^ ~n), ~x)) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && (FractionQ(Simplify((~m + 1) / ~n)) && SumSimplerQ(~m, -(~n)))
    @apply_utils Antiderivative((~x) ^ ~m / (~a + ~(b') * (~x) ^ ~n), ~x) => (~x) ^ (~m + 1) / (~a * (~m + 1)) - (~b / ~a) * Antiderivative((~x) ^ Simplify(~m + ~n) / (~a + ~b * (~x) ^ ~n), ~x) <-- FreeQ([~a, ~b, ~m, ~n], ~x) && (FractionQ(Simplify((~m + 1) / ~n)) && SumSimplerQ(~m, ~n))
    @apply_utils Antiderivative((~c * ~x) ^ ~m / (~a + ~(b') * (~x) ^ ~n), ~x) => (((~c) ^ IntPart(~m) * (~c * ~x) ^ FracPart(~m)) / (~x) ^ FracPart(~m)) * Antiderivative((~x) ^ ~m / (~a + ~b * (~x) ^ ~n), ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n], ~x) && (FractionQ(Simplify((~m + 1) / ~n)) && (SumSimplerQ(~m, ~n) || SumSimplerQ(~m, -(~n))))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~a) ^ ~p * (~c * ~x) ^ (~m + 1)) / (~c * (~m + 1))) * HypergeometricFunctions._₂F₁(-(~p), (~m + 1) / ~n, (~m + 1) / ~n + 1, (-(~b) * (~x) ^ ~n) / ~a) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && (Not(IGtQ(~p, 0)) && (ILtQ(~p, 0) || GtQ(~a, 0)))
    #= Antiderivative(((~c')*(~x))^(~m')*((~a)+(~b')*(~x)^(~n))^(~p),~x) :=  (c*x)^(m+1)*(a+b*x^n)^(p+1)/(a*c*(m+1))*HypergeometricFunctions._₂F₁(1,(m+1)/n+p+ 1,(m+1)/n+1,-b*x^n/a) <-- FreeQ([a,b,c,m,n,p],x) && Not(IGtQ(p,0)) &&  Not(ILtQ(p,0) || GtQ(a,0)) =#
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a + ~(b') * (~x) ^ ~n) ^ ~p, ~x) => (((~a) ^ IntPart(~p) * (~a + ~b * (~x) ^ ~n) ^ FracPart(~p)) / (1 + (~b * (~x) ^ ~n) / ~a) ^ FracPart(~p)) * Antiderivative((~c * ~x) ^ ~m * (1 + (~b * (~x) ^ ~n) / ~a) ^ ~p, ~x) <-- FreeQ([~a, ~b, ~c, ~m, ~n, ~p], ~x) && (Not(IGtQ(~p, 0)) && Not(ILtQ(~p, 0) || GtQ(~a, 0)))
    @apply_utils Antiderivative((~(c') * ~x) ^ ~(m') * (~a1 + ~(b1') * (~x) ^ ~n) ^ ~p * (~a2 + ~(b2') * (~x) ^ ~n) ^ ~p, ~x) => (((~a1 + ~b1 * (~x) ^ ~n) ^ FracPart(~p) * (~a2 + ~b2 * (~x) ^ ~n) ^ FracPart(~p)) / (~a1 * ~a2 + ~b1 * ~b2 * (~x) ^ (2 * ~n)) ^ FracPart(~p)) * Antiderivative((~c * ~x) ^ ~m * (~a1 * ~a2 + ~b1 * ~b2 * (~x) ^ (2 * ~n)) ^ ~p, ~x) <-- FreeQ([~a1, ~b1, ~a2, ~b2, ~c, ~m, ~n, ~p], ~x) && (EqQ(~a2 * ~b1 + ~a1 * ~b2, 0) && Not(IntegerQ(~p)))
    #= IntBinomialQ(a,b,c,n,m,p,x)*returns*True*iff*(c*x)^m*(a+b*x^n)^p  is*integrable*wrt*x*in*terms*of*non-hypergeometric*functions. =#IntBinomialQ((~a), (~b), (~c), (~n), (~m), (~p), (~x)) := IGtQ(p, 0) || RationalQ(m) && IntegersQ(n, 2*p) || IntegerQ((m + 1)/n + p) || (EqQ(n, 2) || EqQ(n, 4)) && IntegersQ(2*m, 4*p) || EqQ(n, 2) && IntegerQ(6*p) && (IntegerQ(m) || IntegerQ(m - p))
    @apply_utils Antiderivative((~(d') * ~x) ^ ~(m') * (~a + ~(b') * (~c * ~x) ^ ~n) ^ ~(p'), ~x) => (1 / ~c) * Subst(Antiderivative(((~d * ~x) / ~c) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x), ~x, ~c * ~x) <-- FreeQ([~a, ~b, ~c, ~d, ~m, ~n, ~p], ~x)
    @apply_utils Antiderivative((~(d') * ~x) ^ ~(m') * (~a + ~(b') * (~(c') * (~x) ^ ~q) ^ ~n) ^ ~(p'), ~x) => ((~d * ~x) ^ (~m + 1) / (~d * ((~c * (~x) ^ ~q) ^ (1 / ~q)) ^ (~m + 1))) * Subst(Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ (~n * ~q)) ^ ~p, ~x), ~x, (~c * (~x) ^ ~q) ^ (1 / ~q)) <-- FreeQ([~a, ~b, ~c, ~d, ~m, ~n, ~p, ~q], ~x) && (IntegerQ(~n * ~q) && NeQ(~x, (~c * (~x) ^ ~q) ^ (1 / ~q)))
    @apply_utils Antiderivative((~(d') * ~x) ^ ~(m') * (~a + ~(b') * (~(c') * (~x) ^ ~q) ^ ~n) ^ ~(p'), ~x) => With([k = Denominator(~n)], Subst(Antiderivative((~d * ~x) ^ ~m * (~a + ~b * (~c) ^ ~n * (~x) ^ (~n * ~q)) ^ ~p, ~x), (~x) ^ (1 / k), (~c * (~x) ^ ~q) ^ (1 / k) / ((~c) ^ (1 / k) * ((~x) ^ (1 / k)) ^ (~q - 1)))) <-- FreeQ([~a, ~b, ~c, ~d, ~m, ~p, ~q], ~x) && FractionQ(~n)
    @apply_utils Antiderivative((~(d') * ~x) ^ ~(m') * (~a + ~(b') * (~(c') * (~x) ^ ~q) ^ ~n) ^ ~(p'), ~x) => Subst(Antiderivative((~d * ~x) ^ ~m * (~a + ~b * (~c) ^ ~n * (~x) ^ (~n * ~q)) ^ ~p, ~x), (~x) ^ (~n * ~q), (~c * (~x) ^ ~q) ^ ~n / (~c) ^ ~n) <-- FreeQ([~a, ~b, ~c, ~d, ~m, ~n, ~p, ~q], ~x) && Not(RationalQ(~n))
    @apply_utils Antiderivative((~x) ^ ~(m') * (~a + ~(b') * (~v) ^ ~n) ^ ~(p'), ~x) => With([c = Coefficient(~v, ~x, 0), d = Coefficient(~v, ~x, 1)], (1 / d ^ (~m + 1)) * Subst(Antiderivative(SimplifyIntegrand((~x - c) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x), ~x), ~x, ~v) <-- NeQ(c, 0)) <-- FreeQ([~a, ~b, ~n, ~p], ~x) && (LinearQ(~v, ~x) && IntegerQ(~m))
    @apply_utils Antiderivative((~u) ^ ~(m') * (~a + ~(b') * (~v) ^ ~n) ^ ~(p'), ~x) => ((~u) ^ ~m / (Coefficient(~v, ~x, 1) * (~v) ^ ~m)) * Subst(Antiderivative((~x) ^ ~m * (~a + ~b * (~x) ^ ~n) ^ ~p, ~x), ~x, ~v) <-- FreeQ([~a, ~b, ~m, ~n, ~p], ~x) && LinearPairQ(~u, ~v, ~x)
end
