package org.matheclipse.core.integrate.rubi42;
import static org.matheclipse.core.expression.F.*;
import static org.matheclipse.core.integrate.rubi42.UtilityFunctionCtors.*;
import static org.matheclipse.core.integrate.rubi42.UtilityFunctions.*;
import org.matheclipse.core.interfaces.IAST;
import org.matheclipse.core.interfaces.IExpr;
import org.matheclipse.core.interfaces.ISymbol;
/**
* UtilityFunctions rules from the Rubi -
* rule-based integrator.
*
*/
public class UtilityFunctions3 {
public static IAST RULES = List(
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§csc"),$p(v)),$p(n,true)),$p(a,true)),Times(Power($($s("§cot"),$p(v)),$p(n,true)),$p(b,true))),$p(p,true)),$p(u,true))),
Condition(Times(u,Power(Csc(v),Times(n,p)),Power(Plus(a,Times(b,Power(Cos(v),n))),p)),IntegersQ(n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§tan"),$p(v)),$p(n,true)),$p(a,true)),Times(Power($($s("§sin"),$p(v)),$p(n,true)),$p(b,true))),$p(p,true)),$p(u,true))),
Condition(Times(u,Power(Tan(v),Times(n,p)),Power(Plus(a,Times(b,Power(Cos(v),n))),p)),IntegersQ(n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§cot"),$p(v)),$p(n,true)),$p(a,true)),Times(Power($($s("§cos"),$p(v)),$p(n,true)),$p(b,true))),$p(p,true)),$p(u,true))),
Condition(Times(u,Power(Cot(v),Times(n,p)),Power(Plus(a,Times(b,Power(Sin(v),n))),p)),IntegersQ(n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§tan"),$p(v)),$p(n,true)),$p(b,true)),Times(Power($($s("§sec"),$p(v)),$p(n,true)),$p(c,true)),$p(a,true)),$p(p,true)),Power($($s("§cos"),$p(v)),$p(m,true)),$p(u,true))),
Condition(Times(u,Power(Cos(v),Plus(m,Times(CN1,n,p))),Power(Plus(c,Times(b,Power(Sin(v),n)),Times(a,Power(Cos(v),n))),p)),IntegersQ(m,n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§tan"),$p(v)),$p(n,true)),$p(b,true)),Times(Power($($s("§sec"),$p(v)),$p(n,true)),$p(c,true)),$p(a,true)),$p(p,true)),Power($($s("§sec"),$p(v)),$p(m,true)),$p(u,true))),
Condition(Times(u,Power(Sec(v),Plus(m,Times(n,p))),Power(Plus(c,Times(b,Power(Sin(v),n)),Times(a,Power(Cos(v),n))),p)),IntegersQ(m,n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§cot"),$p(v)),$p(n,true)),$p(b,true)),Times(Power($($s("§csc"),$p(v)),$p(n,true)),$p(c,true)),$p(a,true)),$p(p,true)),Power($($s("§sin"),$p(v)),$p(m,true)),$p(u,true))),
Condition(Times(u,Power(Sin(v),Plus(m,Times(CN1,n,p))),Power(Plus(c,Times(b,Power(Cos(v),n)),Times(a,Power(Sin(v),n))),p)),IntegersQ(m,n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§cot"),$p(v)),$p(n,true)),$p(b,true)),Times(Power($($s("§csc"),$p(v)),$p(n,true)),$p(c,true)),$p(a,true)),$p(p,true)),Power($($s("§csc"),$p(v)),$p(m,true)),$p(u,true))),
Condition(Times(u,Power(Csc(v),Plus(m,Times(n,p))),Power(Plus(c,Times(b,Power(Cos(v),n)),Times(a,Power(Sin(v),n))),p)),IntegersQ(m,n,p))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§csc"),$p(v)),$p(m,true)),$p(a,true)),Times(Power($($s("§sin"),$p(v)),$p(n,true)),$p(b,true))),$p(p,true)),$p(u,true))),
Condition(If(And(ZeroQ(Plus(m,n,Times(CN1,C2))),ZeroQ(Plus(a,b))),Times(u,Power(Times(a,Power(Cos(v),C2),Power(Power(Sin(v),m),CN1)),p)),Times(u,Power(Times(Plus(a,Times(b,Power(Sin(v),Plus(m,n)))),Power(Power(Sin(v),m),CN1)),p))),IntegersQ(m,n))),
SetDelayed(TrigSimplifyAux(Times(Power(Plus(Times(Power($($s("§sec"),$p(v)),$p(m,true)),$p(a,true)),Times(Power($($s("§cos"),$p(v)),$p(n,true)),$p(b,true))),$p(p,true)),$p(u,true))),
Condition(If(And(ZeroQ(Plus(m,n,Times(CN1,C2))),ZeroQ(Plus(a,b))),Times(u,Power(Times(a,Power(Sin(v),C2),Power(Power(Cos(v),m),CN1)),p)),Times(u,Power(Times(Plus(a,Times(b,Power(Cos(v),Plus(m,n)))),Power(Power(Cos(v),m),CN1)),p))),IntegersQ(m,n))),
SetDelayed(TrigSimplifyAux($p(u)),
u),
SetDelayed(RemoveContent($p("expn"),$p(x,SymbolHead)),
Module(List(Set(u,NonfreeFactors(ContentFactor($s("expn")),x))),If(And(SumQ(u),NegQ(First(u))),Times(CN1,u),u))),
SetDelayed(ContentFactor($p("expn")),
TimeConstrained(ContentFactorAux($s("expn")),$s("TimeLimit"),$s("expn"))),
SetDelayed(ContentFactorAux($p("expn")),
If(AtomQ($s("expn")),$s("expn"),If(IntegerPowerQ($s("expn")),If(And(SumQ(Part($s("expn"),C1)),Less(NumericFactor(Part($s("expn"),C1,C1)),C0)),Times(Power(CN1,Part($s("expn"),C2)),Power(ContentFactorAux(Times(CN1,Part($s("expn"),C1))),Part($s("expn"),C2))),Power(ContentFactorAux(Part($s("expn"),C1)),Part($s("expn"),C2))),If(ProductQ($s("expn")),Module(List(Set($s("num"),C1),$s("tmp")),CompoundExpression(Set($s("tmp"),Map(Function(If(And(SumQ(Slot1),Less(NumericFactor(Part(Slot1,C1)),C0)),CompoundExpression(Set($s("num"),Times(CN1,$s("num"))),ContentFactorAux(Times(CN1,Slot1))),ContentFactorAux(Slot1))),$s("expn"))),Times($s("num"),UnifyNegativeBaseFactors($s("tmp"))))),If(SumQ($s("expn")),Module(List(Set($s("lst"),CommonFactors(Apply($s("List"),$s("expn"))))),If(Or(SameQ(Part($s("lst"),C1),C1),SameQ(Part($s("lst"),C1),CN1)),$s("expn"),Times(Part($s("lst"),C1),Apply($s("Plus"),Rest($s("lst")))))),$s("expn")))))),
SetDelayed(UnifyNegativeBaseFactors(Times(Power(Times(CN1,$p(v)),$p(m)),Power($p(v),$p(n,true)),$p(u,true))),
Condition(UnifyNegativeBaseFactors(Times(Power(CN1,n),u,Power(Times(CN1,v),Plus(m,n)))),IntegerQ(n))),
SetDelayed(UnifyNegativeBaseFactors($p(u)),
u),
SetDelayed(CommonFactors($p("lst")),
Module(List($s("lst1"),$s("lst2"),$s("lst3"),$s("lst4"),$s("common"),$s("base"),$s("num")),CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(Set($s("lst1"),Map($s("Integrate::NonabsurdNumberFactors"),$s("lst"))),Set($s("lst2"),Map($s("Integrate::AbsurdNumberFactors"),$s("lst")))),Set($s("num"),Apply($s("Integrate::AbsurdNumberGCD"),$s("lst2")))),Set($s("common"),$s("num"))),Set($s("lst2"),Map(Function(Times(Slot1,Power($s("num"),CN1))),$s("lst2")))),While(True,CompoundExpression(CompoundExpression(Set($s("lst3"),Map($s("Integrate::LeadFactor"),$s("lst1"))),If(Apply($s("SameQ"),$s("lst3")),CompoundExpression(Set($s("common"),Times($s("common"),Part($s("lst3"),C1))),Set($s("lst1"),Map($s("Integrate::RemainingFactors"),$s("lst1")))),If(And(MapAnd(Function(And(And(LogQ(Slot1),IntegerQ(First(Slot1))),Greater(First(Slot1),C0))),$s("lst3")),MapAnd($s("Integrate::RationalQ"),Set($s("lst4"),Map(Function(FullSimplify(Times(Slot1,Power(First($s("lst3")),CN1)))),$s("lst3"))))),CompoundExpression(CompoundExpression(CompoundExpression(Set($s("num"),Apply($s("GCD"),$s("lst4"))),Set($s("common"),Times($s("common"),Log(Power(Part(First($s("lst3")),C1),$s("num")))))),Set($s("lst2"),Map2(Function(Times(Slot1,Slot2,Power($s("num"),CN1))),$s("lst2"),$s("lst4")))),Set($s("lst1"),Map($s("Integrate::RemainingFactors"),$s("lst1")))),CompoundExpression(Set($s("lst4"),Map($s("Integrate::LeadDegree"),$s("lst1"))),If(And(Apply($s("SameQ"),Map($s("Integrate::LeadBase"),$s("lst1"))),MapAnd($s("Integrate::RationalQ"),$s("lst4"))),CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(Set($s("num"),Smallest($s("lst4"))),Set($s("base"),LeadBase(Part($s("lst1"),C1)))),If(Unequal($s("num"),C0),Set($s("common"),Times($s("common"),Power($s("base"),$s("num")))))),Set($s("lst2"),Map2(Function(Times(Slot1,Power($s("base"),Plus(Slot2,Times(CN1,$s("num")))))),$s("lst2"),$s("lst4")))),Set($s("lst1"),Map($s("Integrate::RemainingFactors"),$s("lst1")))),If(And(And(And(And(Equal(Length($s("lst1")),C2),ZeroQ(Plus(LeadBase(Part($s("lst1"),C1)),LeadBase(Part($s("lst1"),C2))))),NonzeroQ(Plus(Part($s("lst1"),C1),Times(CN1,C1)))),IntegerQ(Part($s("lst4"),C1))),FractionQ(Part($s("lst4"),C2))),CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(Set($s("num"),Min($s("lst4"))),Set($s("base"),LeadBase(Part($s("lst1"),C2)))),If(Unequal($s("num"),C0),Set($s("common"),Times($s("common"),Power($s("base"),$s("num")))))),Set($s("lst2"),List(Times(Part($s("lst2"),C1),Power(CN1,Part($s("lst4"),C1))),Part($s("lst2"),C2)))),Set($s("lst2"),Map2(Function(Times(Slot1,Power($s("base"),Plus(Slot2,Times(CN1,$s("num")))))),$s("lst2"),$s("lst4")))),Set($s("lst1"),Map($s("Integrate::RemainingFactors"),$s("lst1")))),If(And(And(And(And(Equal(Length($s("lst1")),C2),ZeroQ(Plus(LeadBase(Part($s("lst1"),C1)),LeadBase(Part($s("lst1"),C2))))),NonzeroQ(Plus(Part($s("lst1"),C2),Times(CN1,C1)))),IntegerQ(Part($s("lst4"),C2))),FractionQ(Part($s("lst4"),C1))),CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(Set($s("num"),Min($s("lst4"))),Set($s("base"),LeadBase(Part($s("lst1"),C1)))),If(Unequal($s("num"),C0),Set($s("common"),Times($s("common"),Power($s("base"),$s("num")))))),Set($s("lst2"),List(Part($s("lst2"),C1),Times(Part($s("lst2"),C2),Power(CN1,Part($s("lst4"),C2)))))),Set($s("lst2"),Map2(Function(Times(Slot1,Power($s("base"),Plus(Slot2,Times(CN1,$s("num")))))),$s("lst2"),$s("lst4")))),Set($s("lst1"),Map($s("Integrate::RemainingFactors"),$s("lst1")))),CompoundExpression(CompoundExpression(Set($s("num"),MostMainFactorPosition($s("lst3"))),Set($s("lst2"),ReplacePart($s("lst2"),Times(Part($s("lst3"),$s("num")),Part($s("lst2"),$s("num"))),$s("num")))),Set($s("lst1"),ReplacePart($s("lst1"),RemainingFactors(Part($s("lst1"),$s("num"))),$s("num"))))))))))),If(MapAnd(Function(SameQ(Slot1,C1)),$s("lst1")),Return(Prepend($s("lst2"),$s("common"))))))))),
SetDelayed(MostMainFactorPosition($p("lst",$s("List"))),
Module(List(Set($s("factor"),C1),Set($s("num"),C1),i),CompoundExpression(Do(If(Greater(FactorOrder(Part($s("lst"),i),$s("factor")),C0),CompoundExpression(Set($s("factor"),Part($s("lst"),i)),Set($s("num"),i))),List(i,Length($s("lst")))),$s("num")))),
SetDelayed(FactorOrder($p(u),$p(v)),
If(SameQ(u,C1),If(SameQ(v,C1),C0,CN1),If(SameQ(v,C1),C1,Order(u,v)))),
SetDelayed(Smallest($p("num1"),$p("num2")),
If(Greater($s("num1"),C0),If(Greater($s("num2"),C0),Min($s("num1"),$s("num2")),C0),If(Greater($s("num2"),C0),C0,Max($s("num1"),$s("num2"))))),
SetDelayed(Smallest($p("lst",$s("List"))),
Module(List(Set($s("num"),Part($s("lst"),C1))),CompoundExpression(Scan(Function(Set($s("num"),Smallest($s("num"),Slot1))),Rest($s("lst"))),$s("num")))),
SetDelayed(MonomialFactor($p(u),$p(x,SymbolHead)),
If(AtomQ(u),If(SameQ(u,x),List(C1,C1),List(C0,u)),If(PowerQ(u),If(IntegerQ(Part(u,C2)),Module(List(Set($s("lst"),MonomialFactor(Part(u,C1),x))),List(Times(Part($s("lst"),C1),Part(u,C2)),Power(Part($s("lst"),C2),Part(u,C2)))),If(And(SameQ(Part(u,C1),x),FreeQ(Part(u,C2),x)),List(Part(u,C2),C1),List(C0,u))),If(ProductQ(u),Module(List(Set($s("lst1"),MonomialFactor(First(u),x)),Set($s("lst2"),MonomialFactor(Rest(u),x))),List(Plus(Part($s("lst1"),C1),Part($s("lst2"),C1)),Times(Part($s("lst1"),C2),Part($s("lst2"),C2)))),If(SumQ(u),Module(List($s("lst"),$s("deg")),CompoundExpression(CompoundExpression(CompoundExpression(Set($s("lst"),Map(Function(MonomialFactor(Slot1,x)),Apply($s("List"),u))),Set($s("deg"),Part($s("lst"),C1,C1))),Scan(Function(Set($s("deg"),MinimumDegree($s("deg"),Part(Slot1,C1)))),Rest($s("lst")))),If(Or(ZeroQ($s("deg")),And(RationalQ($s("deg")),Less($s("deg"),C0))),List(C0,u),List($s("deg"),Apply($s("Plus"),Map(Function(Times(Power(x,Plus(Part(Slot1,C1),Times(CN1,$s("deg")))),Part(Slot1,C2))),$s("lst"))))))),List(C0,u)))))),
SetDelayed(MinimumDegree($p("deg1"),$p("deg2")),
If(RationalQ($s("deg1")),If(RationalQ($s("deg2")),Min($s("deg1"),$s("deg2")),$s("deg1")),If(RationalQ($s("deg2")),$s("deg2"),Module(List(Set($s("deg"),Simplify(Plus($s("deg1"),Times(CN1,$s("deg2")))))),If(RationalQ($s("deg")),If(Greater($s("deg"),C0),$s("deg2"),$s("deg1")),If(OrderedQ(List($s("deg1"),$s("deg2"))),$s("deg1"),$s("deg2"))))))),
SetDelayed(ConstantFactor($p(u),$p(x,SymbolHead)),
If(FreeQ(u,x),List(u,C1),If(AtomQ(u),List(C1,u),If(And(PowerQ(u),FreeQ(Part(u,C2),x)),Module(List(Set($s("lst"),ConstantFactor(Part(u,C1),x)),$s("tmp")),If(IntegerQ(Part(u,C2)),List(Power(Part($s("lst"),C1),Part(u,C2)),Power(Part($s("lst"),C2),Part(u,C2))),CompoundExpression(Set($s("tmp"),PositiveFactors(Part($s("lst"),C1))),If(SameQ($s("tmp"),C1),List(C1,u),List(Power($s("tmp"),Part(u,C2)),Power(Times(NonpositiveFactors(Part($s("lst"),C1)),Part($s("lst"),C2)),Part(u,C2))))))),If(ProductQ(u),Module(List(Set($s("lst"),Map(Function(ConstantFactor(Slot1,x)),Apply($s("List"),u)))),List(Apply($s("Times"),Map($s("First"),$s("lst"))),Apply($s("Times"),Map(Function(Part(Slot1,C2)),$s("lst"))))),If(SumQ(u),Module(List(Set($s("lst1"),Map(Function(ConstantFactor(Slot1,x)),Apply($s("List"),u)))),If(Apply($s("SameQ"),Map(Function(Part(Slot1,C2)),$s("lst1"))),List(Apply($s("Plus"),Map($s("First"),$s("lst1"))),Part($s("lst1"),C1,C2)),Module(List(Set($s("lst2"),CommonFactors(Map($s("First"),$s("lst1"))))),List(First($s("lst2")),Apply($s("Plus"),Map2($s("Times"),Rest($s("lst2")),Map(Function(Part(Slot1,C2)),$s("lst1")))))))),List(C1,u))))))),
SetDelayed(PositiveFactors($p(u)),
If(ZeroQ(u),C1,If(RationalQ(u),Abs(u),If(PositiveQ(u),u,If(ProductQ(u),Map($s("Integrate::PositiveFactors"),u),C1))))),
SetDelayed(NonpositiveFactors($p(u)),
If(ZeroQ(u),u,If(RationalQ(u),Sign(u),If(PositiveQ(u),C1,If(ProductQ(u),Map($s("Integrate::NonpositiveFactors"),u),u))))),
SetDelayed(PolynomialInQ($p(u),$p(v),$p(x,SymbolHead)),
PolynomialInAuxQ(u,NonfreeFactors(NonfreeTerms(v,x),x),x)),
SetDelayed(PolynomialInAuxQ($p(u),$p(v),$p(x)),
If(SameQ(u,v),True,If(AtomQ(u),UnsameQ(u,x),If(PowerQ(u),If(And(PowerQ(v),SameQ(Part(u,C1),Part(v,C1))),PositiveIntegerQ(Times(Part(u,C2),Power(Part(v,C2),CN1))),And(PositiveIntegerQ(Part(u,C2)),PolynomialInAuxQ(Part(u,C1),v,x))),If(Or(SumQ(u),ProductQ(u)),Catch(CompoundExpression(Scan(Function(If(Not(PolynomialInAuxQ(Slot1,v,x)),Throw(False))),u),True)),False))))),
SetDelayed(ExponentIn($p(u),$p(v),$p(x,SymbolHead)),
ExponentInAux(u,NonfreeFactors(NonfreeTerms(v,x),x),x)),
SetDelayed(ExponentInAux($p(u),$p(v),$p(x)),
If(SameQ(u,v),C1,If(AtomQ(u),C0,If(PowerQ(u),If(And(PowerQ(v),SameQ(Part(u,C1),Part(v,C1))),Times(Part(u,C2),Power(Part(v,C2),CN1)),Times(Part(u,C2),ExponentInAux(Part(u,C1),v,x))),If(ProductQ(u),Apply($s("Plus"),Map(Function(ExponentInAux(Slot1,v,x)),Apply($s("List"),u))),Apply($s("Max"),Map(Function(ExponentInAux(Slot1,v,x)),Apply($s("List"),u)))))))),
SetDelayed(PolynomialInSubst($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,NonfreeTerms(v,x))),ReplaceAll(PolynomialInSubstAux(u,NonfreeFactors(w,x),x),List(Rule(x,Times(Plus(x,Times(CN1,FreeTerms(v,x))),Power(FreeFactors(w,x),CN1))))))),
SetDelayed(PolynomialInSubstAux($p(u),$p(v),$p(x)),
If(SameQ(u,v),x,If(AtomQ(u),u,If(PowerQ(u),If(And(PowerQ(v),SameQ(Part(u,C1),Part(v,C1))),Power(x,Times(Part(u,C2),Power(Part(v,C2),CN1))),Power(PolynomialInSubstAux(Part(u,C1),v,x),Part(u,C2))),Map(Function(PolynomialInSubstAux(Slot1,v,x)),u))))),
SetDelayed(PolynomialDivide($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set($s("quo"),PolynomialQuotient(u,v,x)),Set($s("rem"),PolynomialRemainder(u,v,x)),$s("free"),$s("monomial")),CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(CompoundExpression(Set($s("quo"),Apply($s("Plus"),Map(Function(Simp(Together(Times(Coefficient($s("quo"),x,Slot1),Power(x,Slot1))),x)),Exponent($s("quo"),x,$s("List"))))),Set($s("rem"),Together($s("rem")))),Set($s("free"),FreeFactors($s("rem"),x))),Set($s("rem"),NonfreeFactors($s("rem"),x))),Set($s("monomial"),Power(x,Exponent($s("rem"),x,$s("Min"))))),If(NegQ(Coefficient($s("rem"),x,C0)),Set($s("monomial"),Times(CN1,$s("monomial"))))),Set($s("rem"),Apply($s("Plus"),Map(Function(Simp(Together(Times(Coefficient($s("rem"),x,Slot1),Power(x,Slot1),Power($s("monomial"),CN1))),x)),Exponent($s("rem"),x,$s("List")))))),If(BinomialQ(v,x),Plus($s("quo"),Times($s("free"),$s("monomial"),$s("rem"),Power(ExpandToSum(v,x),CN1))),Plus($s("quo"),Times($s("free"),$s("monomial"),$s("rem"),Power(v,CN1))))))),
SetDelayed(PolynomialDivide($p(u),$p(v),$p(w),$p(x,SymbolHead)),
ReplaceAll(PolynomialDivide(PolynomialInSubst(u,w,x),PolynomialInSubst(v,w,x),x),List(Rule(x,w)))),
SetDelayed(ExpandToSum($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,ExpandToSum(v,x))),If(SumQ(w),Map(Function(Times(u,Slot1)),w),Times(u,w)))),
SetDelayed(ExpandToSum($p(u),$p(x,SymbolHead)),
If(PolynomialQ(u,x),Apply($s("Plus"),Map(Function(Times(Coefficient(u,x,Slot1),Power(x,Slot1))),Exponent(u,x,$s("List")))),If(BinomialQ(u,x),$(Function(Plus(Part(Slot1,C1),Times(Part(Slot1,C2),Power(x,Part(Slot1,C3))))),BinomialTest(u,x)),If(TrinomialQ(u,x),$(Function(Plus(Part(Slot1,C1),Times(Part(Slot1,C2),Power(x,Part(Slot1,C4))),Times(Part(Slot1,C3),Power(x,Times(C2,Part(Slot1,C4)))))),TrinomialTest(u,x)),If(GeneralizedBinomialQ(u,x),$(Function(Plus(Times(Part(Slot1,C1),Power(x,Part(Slot1,C4))),Times(Part(Slot1,C2),Power(x,Part(Slot1,C3))))),GeneralizedBinomialTest(u,x)),If(GeneralizedTrinomialQ(u,x),$(Function(Plus(Times(Part(Slot1,C1),Power(x,Part(Slot1,C5))),Times(Part(Slot1,C2),Power(x,Part(Slot1,C4))),Times(Part(Slot1,C3),Power(x,Plus(Times(C2,Part(Slot1,C4)),Times(CN1,Part(Slot1,C5))))))),GeneralizedTrinomialTest(u,x)),CompoundExpression(Print(stringx("Warning: Unrecogized expression for expansion "),u),Expand(u,x)))))))),
SetDelayed(ExpandTrig($p(u),$p(x,SymbolHead)),
ActivateTrig(ExpandIntegrand(u,x))),
SetDelayed(ExpandTrig($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,ExpandTrig(v,x)),Set(z,ActivateTrig(u))),If(SumQ(w),Map(Function(Times(z,Slot1)),w),Times(z,w)))),
SetDelayed(ExpandIntegrand($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,ExpandIntegrand(v,x))),If(SumQ(w),Map(Function(Times(u,Slot1)),w),Times(u,w)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a,true)),$p(m,true)),Power(Plus(Times($p(h,true),$p(x)),$p(g,true)),CN1),Power($p(f),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c,true)),$p(n,true)),$p(e,true)))),$p(x,SymbolHead)),
Condition(Module(List(Set($s("tmp"),Plus(Times(a,h),Times(CN1,b,g)))),Plus(Times(SimplifyTerm(Times(Power($s("tmp"),m),Power(Power(h,m),CN1)),x),Power(f,Times(e,Power(Plus(c,Times(d,x)),n))),Power(Plus(g,Times(h,x)),CN1)),Sum(Times(SimplifyTerm(Times(b,Power($s("tmp"),Plus(k,Times(CN1,C1))),Power(Power(h,k),CN1)),x),Power(f,Times(e,Power(Plus(c,Times(d,x)),n))),Power(Plus(a,Times(b,x)),Plus(m,Times(CN1,k)))),List(k,C1,m)))),And(And(FreeQ(List(a,b,c,d,e,f,g,h),x),PositiveIntegerQ(m)),ZeroQ(Plus(Times(b,c),Times(CN1,a,d)))))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(f,true),$p(x)),$p(e)),$p(p,true)),Power($p("F"),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c,true)),$p(n,true)),$p(b,true))),Power($p(x),$p(m,true))),$p(x,SymbolHead)),
Condition(If(And(And(PositiveIntegerQ(m,p),LessEqual(m,p)),Or(OneQ(n),ZeroQ(Plus(Times(d,e),Times(CN1,c,f))))),ExpandLinearProduct(Times(Power(Plus(e,Times(f,x)),p),Power($s("§f"),Times(b,Power(Plus(c,Times(d,x)),n)))),Power(x,m),e,f,x),If(PositiveIntegerQ(p),Distribute(Times(Power(x,m),Power($s("§f"),Times(b,Power(Plus(c,Times(d,x)),n))),Expand(Power(Plus(e,Times(f,x)),p),x)),$s("Plus"),$s("Times")),Distribute(Times(Power($s("§f"),Times(b,Power(Plus(c,Times(d,x)),n))),ExpandIntegrand(Times(Power(x,m),Power(Plus(e,Times(f,x)),p)),x)),$s("Plus"),$s("Times")))),FreeQ(List($s("§f"),b,c,d,e,f,m,n,p),x))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(f,true),$p(x)),$p(e)),$p(p,true)),Power($p("F"),Plus(Times(Power(Plus(Times($p(d,true),$p(x)),$p(c,true)),$p(n,true)),$p(b,true)),$p(a,true))),Power($p(x),$p(m,true))),$p(x,SymbolHead)),
Condition(If(And(And(PositiveIntegerQ(m,p),LessEqual(m,p)),Or(OneQ(n),ZeroQ(Plus(Times(d,e),Times(CN1,c,f))))),ExpandLinearProduct(Times(Power(Plus(e,Times(f,x)),p),Power($s("§f"),Plus(a,Times(b,Power(Plus(c,Times(d,x)),n))))),Power(x,m),e,f,x),If(PositiveIntegerQ(p),Distribute(Times(Power(x,m),Power($s("§f"),Plus(a,Times(b,Power(Plus(c,Times(d,x)),n)))),Expand(Power(Plus(e,Times(f,x)),p),x)),$s("Plus"),$s("Times")),Distribute(Times(Power($s("§f"),Plus(a,Times(b,Power(Plus(c,Times(d,x)),n)))),ExpandIntegrand(Times(Power(x,m),Power(Plus(e,Times(f,x)),p)),x)),$s("Plus"),$s("Times")))),FreeQ(List($s("§f"),a,b,c,d,e,f,m,n,p),x))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a,true)),$p(m,true)),Power($p(f),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c,true)),$p(n,true)),$p(e,true))),$p(u)),$p(x,SymbolHead)),
Condition(Module(List(Set(v,ExpandIntegrand(Times(u,Power(Plus(a,Times(b,x)),m)),x))),Condition(Distribute(Times(Power(f,Times(e,Power(Plus(c,Times(d,x)),n))),v),$s("Plus"),$s("Times")),SumQ(v))),And(FreeQ(List(a,b,c,d,e,f,m,n),x),PolynomialQ(u,x)))),
SetDelayed(ExpandIntegrand(Times(Log(Times(Power(Plus(Times(Power($p(x),$p(n,true)),$p(e,true)),$p(d,true)),$p(p,true)),$p(c,true))),Power(Plus(Times($p(b,true),$p(x)),$p(a,true)),$p(m,true)),$p(u)),$p(x,SymbolHead)),
Condition(Distribute(Times(Log(Times(c,Power(Plus(d,Times(e,Power(x,n))),p))),ExpandIntegrand(Times(u,Power(Plus(a,Times(b,x)),m)),x)),$s("Plus"),$s("Times")),And(FreeQ(List(a,b,c,d,e,m,n,p),x),PolynomialQ(u,x)))),
SetDelayed(ExpandIntegrand(Times(Power($p(f),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c,true)),$p(n,true)),$p(e,true))),$p(u)),$p(x,SymbolHead)),
Condition(If(OneQ(n),ExpandIntegrand(Power(f,Times(e,Power(Plus(c,Times(d,x)),n))),u,x),ExpandLinearProduct(Power(f,Times(e,Power(Plus(c,Times(d,x)),n))),u,c,d,x)),And(FreeQ(List(c,d,e,f,n),x),PolynomialQ(u,x)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($($p("G"),$p(u)),$p(b,true)),$p(a)),$p(n,true)),Power($($p("F"),$p(u)),$p(m,true))),$p(x,SymbolHead)),
Condition(ReplaceAll(ExpandIntegrand(Times(Power(Plus(a,Times(b,x)),n),Power(Power(x,m),CN1)),x),Rule(x,$($s("§g"),u))),And(And(FreeQ(List(a,b),x),IntegersQ(m,n)),SameQ(Times($($s("§f"),u),$($s("§g"),u)),C1)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times(Log(Times(Power(Plus(Times($p(e,true),$p(x)),$p(d,true)),$p(n,true)),$p(c,true))),$p(b,true)),$p(a,true)),$p(p)),$p(u)),$p(x,SymbolHead)),
Condition(ExpandLinearProduct(Power(Plus(a,Times(b,Log(Times(c,Power(Plus(d,Times(e,x)),n))))),p),u,d,e,x),And(FreeQ(List(a,b,c,d,e,n,p),x),PolynomialQ(u,x)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($($p("F"),Plus(Times($p(d,true),$p(x)),$p(c,true))),$p(b,true)),$p(a,true)),$p(n)),$p(u)),$p(x,SymbolHead)),
Condition(ExpandLinearProduct(Power(Plus(a,Times(b,$($s("§f"),Plus(c,Times(d,x))))),n),u,c,d,x),And(And(FreeQ(List(a,b,c,d,n),x),PolynomialQ(u,x)),MemberQ(List($s("ArcSin"),$s("ArcCos"),$s("ArcSinh"),$s("ArcCosh")),$s("§f"))))),
SetDelayed(ExpandIntegrand(Times(Power($p(v),$p(p)),$p(u,true)),$p(x,SymbolHead)),
Condition(Distribute(Times(NormalizeIntegrand(Power(v,p),x),ExpandIntegrand(u,x)),$s("Plus"),$s("Times")),And(Not(IntegerQ(p)),Not(LinearQ(v,x))))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times(Power($p(x),$p(n)),$p(a,true)),Times(Power(Plus(Times(Power($p(x),$p(j)),$p(d,true)),$p(c)),C1D2),$p(b,true))),CN1),$p(u,true)),$p(x,SymbolHead)),
Condition(ExpandIntegrand(Times(u,Plus(Times(a,Power(x,n)),Times(CN1,b,Sqrt(Plus(c,Times(d,Power(x,Times(C2,n))))))),Power(Plus(Times(CN1,Power(b,C2),c),Times(Plus(Power(a,C2),Times(CN1,Power(b,C2),d)),Power(x,Times(C2,n)))),CN1)),x),And(FreeQ(List(a,b,c,d,n),x),ZeroQ(Plus(j,Times(CN1,C2,n)))))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a)),$p(m)),Power(Plus(Times($p(d,true),$p(x)),$p(c)),CN1)),$p(x,SymbolHead)),
Condition(If(RationalQ(a,b,c,d),ExpandExpression(Times(Power(Plus(a,Times(b,x)),m),Power(Plus(c,Times(d,x)),CN1)),x),Module(List(Set($s("tmp"),Plus(Times(a,d),Times(CN1,b,c)))),Plus(Times(SimplifyTerm(Times(Power($s("tmp"),m),Power(Power(d,m),CN1)),x),Power(Plus(c,Times(d,x)),CN1)),Sum(Times(SimplifyTerm(Times(b,Power($s("tmp"),Plus(k,Times(CN1,C1))),Power(Power(d,k),CN1)),x),Power(Plus(a,Times(b,x)),Plus(m,Times(CN1,k)))),List(k,C1,m))))),And(FreeQ(List(a,b,c,d),x),PositiveIntegerQ(m)))),
SetDelayed(ExpandIntegrand(Times(Plus(Times($p("B",true),$p(x)),$p("A")),Power(Plus(Times($p(b,true),$p(x)),$p(a)),$p(m,true)),Power(Plus(Times($p(d,true),$p(x)),$p(c)),CN1)),$p(x,SymbolHead)),
Condition(If(RationalQ(a,b,c,d,$s("A"),$s("B")),ExpandExpression(Times(Power(Plus(a,Times(b,x)),m),Plus($s("A"),Times($s("B"),x)),Power(Plus(c,Times(d,x)),CN1)),x),Module(List($s("tmp1"),$s("tmp2")),CompoundExpression(CompoundExpression(CompoundExpression(Set($s("tmp1"),Times(Plus(Times($s("A"),d),Times(CN1,$s("B"),c)),Power(d,CN1))),Set($s("tmp2"),ExpandIntegrand(Times(Power(Plus(a,Times(b,x)),m),Power(Plus(c,Times(d,x)),CN1)),x))),Set($s("tmp2"),If(SumQ($s("tmp2")),Map(Function(SimplifyTerm(Times($s("tmp1"),Slot1),x)),$s("tmp2")),SimplifyTerm(Times($s("tmp1"),$s("tmp2")),x)))),Plus(Times(SimplifyTerm(Times($s("B"),Power(d,CN1)),x),Power(Plus(a,Times(b,x)),m)),$s("tmp2"))))),And(FreeQ(List(a,b,c,d,$s("A"),$s("B")),x),PositiveIntegerQ(m)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a,true)),$p(m)),$p(u)),$p(x,SymbolHead)),
Condition(Module(List($s("tmp1"),$s("tmp2")),CompoundExpression(Set($s("tmp1"),ExpandLinearProduct(Power(Plus(a,Times(b,x)),m),u,a,b,x)),If(Not(IntegerQ(m)),$s("tmp1"),CompoundExpression(Set($s("tmp2"),ExpandExpression(Times(u,Power(Plus(a,Times(b,x)),m)),x)),If(And(SumQ($s("tmp2")),LessEqual(LeafCount($s("tmp2")),Plus(LeafCount($s("tmp1")),C2))),$s("tmp2"),$s("tmp1")))))),And(And(FreeQ(List(a,b,m),x),PolynomialQ(u,x)),Not(And(PositiveIntegerQ(m),MatchQ(u,Condition(Times($p(v,true),Power(Plus($p(c),Times($p(d,true),x)),$p(n))),And(And(FreeQ(List(c,d),x),IntegerQ(n)),Greater(n,m))))))))),
SetDelayed(ExpandIntegrand(Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1),$p(x,SymbolHead)),
Condition(Module(List(Set(r,Numerator(Rt(Times(CN1,a,Power(b,CN1)),n))),Set(s,Denominator(Rt(Times(CN1,a,Power(b,CN1)),n)))),Sum(Times(r,Power(Times(a,n,Plus(r,Times(CN1,Power(CN1,Times(C2,k,Power(n,CN1))),s,u))),CN1)),List(k,C1,n))),And(And(FreeQ(List(a,b),x),IntegerQ(n)),Greater(n,C1)))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1),Power($p(u),$p(m,true))),$p(x,SymbolHead)),
Condition(Module(List(Set(g,GCD(m,n)),Set(r,Numerator(Rt(Times(a,Power(b,CN1)),Times(n,Power(GCD(m,n),CN1))))),Set(s,Denominator(Rt(Times(a,Power(b,CN1)),Times(n,Power(GCD(m,n),CN1)))))),If(CoprimeQ(Plus(m,g),n),Sum(Times(r,Power(Times(CN1,r,Power(s,CN1)),Times(m,Power(g,CN1))),Power(CN1,Times(CN2,k,m,Power(n,CN1))),Power(Times(a,n,Plus(r,Times(Power(CN1,Times(C2,k,g,Power(n,CN1))),s,Power(u,g)))),CN1)),List(k,C1,Times(n,Power(g,CN1)))),Sum(Times(r,Power(Times(CN1,r,Power(s,CN1)),Times(m,Power(g,CN1))),Power(CN1,Times(C2,k,Plus(m,g),Power(n,CN1))),Power(Times(a,n,Plus(Times(Power(CN1,Times(C2,k,g,Power(n,CN1))),r),Times(s,Power(u,g)))),CN1)),List(k,C1,Times(n,Power(g,CN1)))))),And(And(And(And(FreeQ(List(a,b),x),IntegersQ(m,n)),Less(Less(C0,m),n)),OddQ(Times(n,Power(GCD(m,n),CN1)))),PosQ(Times(a,Power(b,CN1)))))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1),Power($p(u),$p(m,true))),$p(x,SymbolHead)),
Condition(Module(List(Set(g,GCD(m,n)),Set(r,Numerator(Rt(Times(CN1,a,Power(b,CN1)),Times(n,Power(GCD(m,n),CN1))))),Set(s,Denominator(Rt(Times(CN1,a,Power(b,CN1)),Times(n,Power(GCD(m,n),CN1)))))),If(Equal(Times(n,Power(g,CN1)),C2),Plus(Times(s,Power(Times(C2,b,Plus(r,Times(s,Power(u,g)))),CN1)),Times(CN1,s,Power(Times(C2,b,Plus(r,Times(CN1,s,Power(u,g)))),CN1))),If(CoprimeQ(Plus(m,g),n),Sum(Times(r,Power(Times(r,Power(s,CN1)),Times(m,Power(g,CN1))),Power(CN1,Times(CN2,k,m,Power(n,CN1))),Power(Times(a,n,Plus(r,Times(CN1,Power(CN1,Times(C2,k,g,Power(n,CN1))),s,Power(u,g)))),CN1)),List(k,C1,Times(n,Power(g,CN1)))),Sum(Times(r,Power(Times(r,Power(s,CN1)),Times(m,Power(g,CN1))),Power(CN1,Times(C2,k,Plus(m,g),Power(n,CN1))),Power(Times(a,n,Plus(Times(Power(CN1,Times(C2,k,g,Power(n,CN1))),r),Times(CN1,s,Power(u,g)))),CN1)),List(k,C1,Times(n,Power(g,CN1))))))),And(And(FreeQ(List(a,b),x),IntegersQ(m,n)),Less(Less(C0,m),n)))),
SetDelayed(ExpandIntegrand(Times(Plus(Times(Power($p(u),$p(m,true)),$p(d,true)),$p(c)),Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1)),$p(x,SymbolHead)),
Condition(Module(List(Set(r,Numerator(Rt(Times(CN1,a,Power(b,CN1)),n))),Set(s,Denominator(Rt(Times(CN1,a,Power(b,CN1)),n)))),Sum(Times(Plus(Times(r,c),Times(r,d,Power(Times(r,Power(s,CN1)),m),Power(CN1,Times(CN2,k,m,Power(n,CN1))))),Power(Times(a,n,Plus(r,Times(CN1,Power(CN1,Times(C2,k,Power(n,CN1))),s,u))),CN1)),List(k,C1,n))),And(And(FreeQ(List(a,b,c,d),x),IntegersQ(m,n)),Less(Less(C0,m),n)))),
SetDelayed(ExpandIntegrand(Times(Plus(Times(Power($p(u),$p(m,true)),$p(d,true)),Times(Power($p(u),$p(p)),$p(e,true)),$p(c,true)),Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1)),$p(x,SymbolHead)),
Condition(Module(List(Set(r,Numerator(Rt(Times(CN1,a,Power(b,CN1)),n))),Set(s,Denominator(Rt(Times(CN1,a,Power(b,CN1)),n)))),Sum(Times(Plus(Times(r,c),Times(r,d,Power(Times(r,Power(s,CN1)),m),Power(CN1,Times(CN2,k,m,Power(n,CN1)))),Times(r,e,Power(Times(r,Power(s,CN1)),p),Power(CN1,Times(CN2,k,p,Power(n,CN1))))),Power(Times(a,n,Plus(r,Times(CN1,Power(CN1,Times(C2,k,Power(n,CN1))),s,u))),CN1)),List(k,C1,n))),And(And(FreeQ(List(a,b,c,d,e),x),IntegersQ(m,n,p)),Less(Less(Less(C0,m),p),n)))),
SetDelayed(ExpandIntegrand(Times(Plus(Times(Power($p(u),$p(m,true)),$p(d,true)),Times(Power($p(u),$p(p)),$p(e,true)),Times(Power($p(u),$p(q)),$p(f,true)),$p(c,true)),Power(Plus(Times(Power($p(u),$p(n)),$p(b,true)),$p(a)),CN1)),$p(x,SymbolHead)),
Condition(Module(List(Set(r,Numerator(Rt(Times(CN1,a,Power(b,CN1)),n))),Set(s,Denominator(Rt(Times(CN1,a,Power(b,CN1)),n)))),Sum(Times(Plus(Times(r,c),Times(r,d,Power(Times(r,Power(s,CN1)),m),Power(CN1,Times(CN2,k,m,Power(n,CN1)))),Times(r,e,Power(Times(r,Power(s,CN1)),p),Power(CN1,Times(CN2,k,p,Power(n,CN1)))),Times(r,f,Power(Times(r,Power(s,CN1)),q),Power(CN1,Times(CN2,k,q,Power(n,CN1))))),Power(Times(a,n,Plus(r,Times(CN1,Power(CN1,Times(C2,k,Power(n,CN1))),s,u))),CN1)),List(k,C1,n))),And(And(FreeQ(List(a,b,c,d,e,f),x),IntegersQ(m,n,p,q)),Less(Less(Less(Less(C0,m),p),q),n)))),
SetDelayed(ExpandIntegrand(Power(Plus(Times(Power($p(u),$p(n,true)),$p(b,true)),Times(Power($p(u),$p(j,true)),$p(c,true)),$p(a,true)),CN1),$p(x,SymbolHead)),
Condition(Module(List(Set(q,Rt(Plus(Power(b,C2),Times(CN1,C4,a,c)),C2))),Plus(Times(C2,c,Power(Times(q,Plus(b,Times(CN1,q),Times(C2,c,Power(u,n)))),CN1)),Times(CN1,C2,c,Power(Times(q,Plus(b,q,Times(C2,c,Power(u,n)))),CN1)))),And(And(FreeQ(List(a,b,c,n),x),ZeroQ(Plus(j,Times(CN1,C2,n)))),NonzeroQ(Plus(Power(b,C2),Times(CN1,C4,a,c)))))),
SetDelayed(ExpandIntegrand(Times(Power(Plus(Times(Power($p(u),$p(n,true)),$p(b,true)),Times(Power($p(u),$p(j,true)),$p(c,true)),$p(a,true)),CN1),Power($p(u),$p(m,true))),$p(x,SymbolHead)),
Condition(Module(List(Set(q,Rt(Plus(Power(b,C2),Times(CN1,C4,a,c)),C2))),Plus(Times(C2,c,Power(u,m),Power(Times(q,Plus(b,Times(CN1,q),Times(C2,c,Power(u,n)))),CN1)),Times(CN1,C2,c,Power(u,m),Power(Times(q,Plus(b,q,Times(C2,c,Power(u,n)))),CN1)))),And(And(And(And(And(FreeQ(List(a,b,c),x),IntegersQ(m,n,j)),Equal(j,Times(C2,n))),Less(Less(C0,m),Times(C2,n))),Unequal(m,n)),NonzeroQ(Plus(Power(b,C2),Times(CN1,C4,a,c)))))),
SetDelayed(ExpandIntegrand(Times(Plus(Times(Power($p(u),$p(n,true)),$p(d,true)),$p(c,true)),Power(Plus(Times(Power($p(u),$p(j,true)),$p(b,true)),$p(a)),CN1)),$p(x,SymbolHead)),
Condition(Module(List(Set(q,Rt(Times(CN1,a,Power(b,CN1)),C2))),Plus(Times(CN1,Plus(c,Times(CN1,d,q)),Power(Times(C2,b,q,Plus(q,Power(u,n))),CN1)),Times(CN1,Plus(c,Times(d,q)),Power(Times(C2,b,q,Plus(q,Times(CN1,Power(u,n)))),CN1)))),And(FreeQ(List(a,b,c,d,n),x),ZeroQ(Plus(j,Times(CN1,C2,n)))))),
SetDelayed(ExpandIntegrand(Times(Plus(Times(Power($p(u),$p(n,true)),$p(e,true)),$p(d,true)),Power(Plus(Times(Power($p(u),$p(n,true)),$p(b,true)),Times(Power($p(u),$p(j,true)),$p(c,true)),$p(a,true)),CN1)),$p(x,SymbolHead)),
Condition(Module(List(Set(q,Rt(Plus(Power(b,C2),Times(CN1,C4,a,c)),C2)),r),CompoundExpression(Set(r,TogetherSimplify(Times(Plus(Times(C2,c,d),Times(CN1,b,e)),Power(q,CN1)))),Plus(Times(Plus(e,r),Power(Plus(b,Times(CN1,q),Times(C2,c,Power(u,n))),CN1)),Times(Plus(e,Times(CN1,r)),Power(Plus(b,q,Times(C2,c,Power(u,n))),CN1))))),And(And(FreeQ(List(a,b,c,d,e,n),x),ZeroQ(Plus(j,Times(CN1,C2,n)))),NonzeroQ(Plus(Power(b,C2),Times(CN1,C4,a,c)))))),
SetDelayed(ExpandIntegrand(Times(Power($p(v),CN1),$p(u)),$p(x,SymbolHead)),
Condition(Module(List(Set($s("lst"),CoefficientList(u,x))),Plus(Times(Part($s("lst"),CN1),Power(x,Exponent(u,x)),Power(v,CN1)),Times(Sum(Times(Part($s("lst"),i),Power(x,Plus(i,Times(CN1,C1)))),List(i,C1,Exponent(u,x))),Power(v,CN1)))),And(And(And(PolynomialQ(u,x),PolynomialQ(v,x)),BinomialQ(v,x)),GreaterEqual(Equal(Exponent(u,x),Plus(Exponent(v,x),Times(CN1,C1))),C2)))),
SetDelayed(ExpandIntegrand(Times(Power($p(v),CN1),$p(u)),$p(x,SymbolHead)),
Condition(PolynomialDivide(u,v,x),And(And(PolynomialQ(u,x),PolynomialQ(v,x)),GreaterEqual(Exponent(u,x),Exponent(v,x))))),
SetDelayed(ExpandIntegrand($p(u),$p(x,SymbolHead)),
ExpandExpression(u,x)),
SetDelayed(ExpandExpression($p(u),$p(x,SymbolHead)),
Module(List(v,w),CompoundExpression(Set(v,If(And(AlgebraicFunctionQ(u,x),Not(RationalFunctionQ(u,x))),ExpandAlgebraicFunction(u,x),C0)),If(SumQ(v),ExpandCleanup(v,x),CompoundExpression(Set(v,SmartApart(u,x)),If(SumQ(v),ExpandCleanup(v,x),CompoundExpression(Set(v,SmartApart(RationalFunctionFactors(u,x),x,x)),If(SumQ(v),CompoundExpression(Set(w,NonrationalFunctionFactors(u,x)),ExpandCleanup(Map(Function(Times(Slot1,w)),v),x)),CompoundExpression(Set(v,Expand(u,x)),If(SumQ(v),ExpandCleanup(v,x),CompoundExpression(Set(v,Expand(u)),If(SumQ(v),ExpandCleanup(v,x),SimplifyTerm(u,x))))))))))))),
SetDelayed(ExpandCleanup($p(u),$p(x,SymbolHead)),
Module(List(v),CompoundExpression(Set(v,CollectReciprocals(u,x)),If(SumQ(v),CompoundExpression(Set(v,Map(Function(SimplifyTerm(Slot1,x)),v)),If(SumQ(v),UnifySum(v,x),v)),v)))),
SetDelayed(CollectReciprocals(Plus(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a)),CN1),$p(e)),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c)),CN1),$p(f)),$p(u,true)),$p(x,SymbolHead)),
Condition(CollectReciprocals(Plus(u,Times(Plus(Times(c,e),Times(a,f)),Power(Plus(Times(a,c),Times(b,d,Power(x,C2))),CN1))),x),And(And(FreeQ(List(a,b,c,d,e,f),x),ZeroQ(Plus(Times(b,c),Times(a,d)))),ZeroQ(Plus(Times(d,e),Times(b,f)))))),
SetDelayed(CollectReciprocals(Plus(Times(Power(Plus(Times($p(b,true),$p(x)),$p(a)),CN1),$p(e)),Times(Power(Plus(Times($p(d,true),$p(x)),$p(c)),CN1),$p(f)),$p(u,true)),$p(x,SymbolHead)),
Condition(CollectReciprocals(Plus(u,Times(Plus(Times(d,e),Times(b,f)),x,Power(Plus(Times(a,c),Times(b,d,Power(x,C2))),CN1))),x),And(And(FreeQ(List(a,b,c,d,e,f),x),ZeroQ(Plus(Times(b,c),Times(a,d)))),ZeroQ(Plus(Times(c,e),Times(a,f)))))),
SetDelayed(CollectReciprocals($p(u),$p(x,SymbolHead)),
u),
SetDelayed(SmartApart($p(u),$p(x,SymbolHead)),
Module(List(Set($s("alst"),MakeAssocList(u,x))),KernelSubst(Apart(GensymSubst(u,x,$s("alst"))),x,$s("alst")))),
SetDelayed(SmartApart($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set($s("alst"),MakeAssocList(u,x))),KernelSubst(Apart(GensymSubst(u,x,$s("alst")),v),x,$s("alst")))),
SetDelayed(MakeAssocList($p(u),$p(x,SymbolHead),$p("alst",$s("List"))),
If(AtomQ(u),$s("alst"),If(IntegerPowerQ(u),MakeAssocList(Part(u,C1),x,$s("alst")),If(Or(ProductQ(u),SumQ(u)),MakeAssocList(Rest(u),x,MakeAssocList(First(u),x,$s("alst"))),If(FreeQ(u,x),Module(List(Set($s("tmp"),Select($s("alst"),Function(SameQ(Part(Slot1,C2),u)),C1))),If(SameQ($s("tmp"),List()),Append($s("alst"),List(Unique(stringx("Rubi")),u)),$s("alst"))),$s("alst")))))),
SetDelayed(GensymSubst($p(u),$p(x,SymbolHead),$p("alst",$s("List"))),
If(AtomQ(u),u,If(IntegerPowerQ(u),Power(GensymSubst(Part(u,C1),x,$s("alst")),Part(u,C2)),If(Or(ProductQ(u),SumQ(u)),Map(Function(GensymSubst(Slot1,x,$s("alst"))),u),If(FreeQ(u,x),Module(List(Set($s("tmp"),Select($s("alst"),Function(SameQ(Part(Slot1,C2),u)),C1))),If(SameQ($s("tmp"),List()),u,Part($s("tmp"),C1,C1))),u))))),
SetDelayed(KernelSubst($p(u),$p(x,SymbolHead),$p("alst",$s("List"))),
If(AtomQ(u),Module(List(Set($s("tmp"),Select($s("alst"),Function(SameQ(Part(Slot1,C1),u)),C1))),If(SameQ($s("tmp"),List()),u,Part($s("tmp"),C1,C2))),If(IntegerPowerQ(u),Power(KernelSubst(Part(u,C1),x,$s("alst")),Part(u,C2)),If(Or(ProductQ(u),SumQ(u)),Map(Function(KernelSubst(Slot1,x,$s("alst"))),u),u)))),
SetDelayed(ExpandAlgebraicFunction(Times($p(u,$s("Plus")),$p(v)),$p(x,SymbolHead)),
Condition(Map(Function(Times(Slot1,v)),u),Not(FreeQ(u,x)))),
SetDelayed(ExpandAlgebraicFunction(Times(Power($p(u,$s("Plus")),$p(n)),$p(v,true)),$p(x,SymbolHead)),
Condition(Module(List(Set(w,Expand(Power(u,n),x))),Condition(Map(Function(Times(Slot1,v)),w),SumQ(w))),And(PositiveIntegerQ(n),Not(FreeQ(u,x))))),
SetDelayed(UnifySum($p(u),$p(x,SymbolHead)),
If(SumQ(u),Apply($s("Plus"),UnifyTerms(Apply($s("List"),u),x)),SimplifyTerm(u,x))),
SetDelayed(UnifyTerms($p("lst"),$p(x)),
If(SameQ($s("lst"),List()),$s("lst"),UnifyTerm(First($s("lst")),UnifyTerms(Rest($s("lst")),x),x))),
SetDelayed(UnifyTerm($p("term"),$p("lst"),$p(x)),
If(SameQ($s("lst"),List()),List($s("term")),Module(List(Set($s("tmp"),Simplify(Times(First($s("lst")),Power($s("term"),CN1))))),If(FreeQ($s("tmp"),x),Prepend(Rest($s("lst")),Times(Plus(C1,$s("tmp")),$s("term"))),Prepend(UnifyTerm($s("term"),Rest($s("lst")),x),First($s("lst"))))))),
SetDelayed(ExpandLinearProduct($p(v),$p(u),$p(a),$p(b),$p(x,SymbolHead)),
Condition(Module(List($s("lst")),CompoundExpression(CompoundExpression(Set($s("lst"),CoefficientList(ReplaceAll(u,Rule(x,Times(Plus(x,Times(CN1,a)),Power(b,CN1)))),x)),Set($s("lst"),Map(Function(SimplifyTerm(Slot1,x)),$s("lst")))),Sum(Times(v,Part($s("lst"),k),Power(Plus(a,Times(b,x)),Plus(k,Times(CN1,C1)))),List(k,C1,Length($s("lst")))))),And(FreeQ(List(a,b),x),PolynomialQ(u,x)))),
SetDelayed(ExpandTrigReduce($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,ExpandTrigReduce(v,x))),If(SumQ(w),Map(Function(Times(u,Slot1)),w),Times(u,w)))),
SetDelayed(ExpandTrigReduce(Times(Power($($p("F"),Plus($p(n),$p(v,true))),$p(m,true)),$p(u,true)),$p(x,SymbolHead)),
Condition(Module(List($s("nn")),ReplaceAll(ExpandTrigReduce(Times(u,Power($($s("§f"),Plus($s("nn"),v)),m)),x),Rule($s("nn"),n))),And(And(MemberQ(List($s("Sinh"),$s("Cosh")),$s("§f")),IntegerQ(m)),RationalQ(n)))),
SetDelayed(ExpandTrigReduce($p(u),$p(x,SymbolHead)),
ExpandTrigReduceAux(u,x)),
SetDelayed(ExpandTrigReduceAux($p(u),$p(x,SymbolHead)),
Module(List(Set(v,Expand(TrigReduce(u)))),If(SumQ(v),Map(Function(NormalizeTrig(Slot1,x)),v),NormalizeTrig(v,x)))),
SetDelayed(NormalizeTrig(Times(Power($($p("F"),$p(u)),$p(n,true)),$p(a,true)),$p(x,SymbolHead)),
Condition(Times(a,Power($($s("§f"),ExpandToSum(u,x)),n)),And(And(FreeQ(List($s("§f"),a,n),x),PolynomialQ(u,x)),Greater(Exponent(u,x),C0)))),
SetDelayed(NormalizeTrig($p(u),$p(x,SymbolHead)),
u),
SetDelayed(ExpandTrigToExp($p(u),$p(v),$p(x,SymbolHead)),
Module(List(Set(w,Expand(TrigToExp(v)))),If(SumQ(w),Map(Function(SimplifyIntegrand(Times(u,Slot1),x)),w),SimplifyIntegrand(Times(u,w),x)))),
SetDelayed(ExpandTrigToExp($p(u),$p(x,SymbolHead)),
Module(List(Set(w,Expand(TrigToExp(u)))),If(SumQ(w),Map(Function(SimplifyIntegrand(Slot1,x)),w),SimplifyIntegrand(w,x)))),
SetDelayed(Distrib($p(u),$p(v)),
If(SumQ(v),Map(Function(Times(u,Slot1)),v),Times(u,v)))
);
}
Ads help maintain this website.