Rules for miscellaneous integrands

Substitution integration rules

1:  ∫((((a+b F[c((Sqrt[d+e x])/(Sqrt[f+g x]))]))^n)/(A+B x+C (x^2)))dx  when  C d f-A e g==0 ∧ B e g-C (e f+d g)==0 ∧ n∈(SuperPlus[ℤ])

Derivation: Integration by substitution

Basis: F[x]==2 (e f-d g) Subst[(x/(((e-g (x^2)))^2)) F[-((d-f (x^2))/(e-g (x^2)))],x,((Sqrt[d+e x])/(Sqrt[f+g x]))] (∂_x)((Sqrt[d+e x])/(Sqrt[f+g x]))

Basis: If  C d f-A e g==0 ∧ B e g-C (e f+d g)==0, then (1/(A+B x+C (x^2)))==((2 e g)/(C (e f-d g))) Subst[(1/x),x,((Sqrt[d+e x])/(Sqrt[f+g x]))] (∂_x)((Sqrt[d+e x])/(Sqrt[f+g x]))

Rule: If  C d f-A e g==0 ∧ B e g-C (e f+d g)==0 ∧ n∈(SuperPlus[ℤ]), then

∫((((a+b F[c((Sqrt[d+e x])/(Sqrt[f+g x]))]))^n)/(A+B x+C (x^2)))dx  ⟶  ((2 e g)/(C (e f-d g))) Subst[∫((((a+b F[c x]))^n)/x)dx,x,((Sqrt[d+e x])/(Sqrt[f+g x]))]

Program code:

Int[(a_.+b_.*F_[c_.*Sqrt[d_.+e_.*x_]/Sqrt[f_.+g_.*x_]])^n_./(A_.+B_.*x_+C_.*x_^2),x_Symbol] :=
  2*e*g/(C*(e*f-d*g))*Subst[Int[(a+b*F[c*x])^n/x,x],x,Sqrt[d+e*x]/Sqrt[f+g*x]] /;
FreeQ[{a,b,c,d,e,f,g,A,B,C,F},x] && EqQ[C*d*f-A*e*g,0] && EqQ[B*e*g-C*(e*f+d*g),0] && IGtQ[n,0]

Int[(a_.+b_.*F_[c_.*Sqrt[d_.+e_.*x_]/Sqrt[f_.+g_.*x_]])^n_./(A_.+C_.*x_^2),x_Symbol] :=
  2*e*g/(C*(e*f-d*g))*Subst[Int[(a+b*F[c*x])^n/x,x],x,Sqrt[d+e*x]/Sqrt[f+g*x]] /;
FreeQ[{a,b,c,d,e,f,g,A,C,F},x] && EqQ[C*d*f-A*e*g,0] && EqQ[e*f+d*g,0] && IGtQ[n,0]

2:  ∫((((a+b F[c((Sqrt[d+e x])/(Sqrt[f+g x]))]))^n)/(A+B x+C (x^2)))dx  when  C d f-A e g==0 ∧ B e g-C (e f+d g)==0 ∧ n∉(SuperPlus[ℤ])

Rule: If  C d f-A e g==0 ∧ B e g-C (e f+d g)==0 ∧ n∉(SuperPlus[ℤ]), then

∫((((a+b F[c((Sqrt[d+e x])/(Sqrt[f+g x]))]))^n)/(A+B x+C (x^2)))dx  ⟶  ∫((((a+b F[c((Sqrt[d+e x])/(Sqrt[f+g x]))]))^n)/(A+B x+C (x^2)))dx

Program code:

Int[(a_.+b_.*F_[c_.*Sqrt[d_.+e_.*x_]/Sqrt[f_.+g_.*x_]])^n_/(A_.+B_.*x_+C_.*x_^2),x_Symbol] :=
  Unintegrable[(a+b*F[c*Sqrt[d+e*x]/Sqrt[f+g*x]])^n/(A+B*x+C*x^2),x] /;
FreeQ[{a,b,c,d,e,f,g,A,B,C,F,n},x] && EqQ[C*d*f-A*e*g,0] && EqQ[B*e*g-C*(e*f+d*g),0] && Not[IGtQ[n,0]]

Int[(a_.+b_.*F_[c_.*Sqrt[d_.+e_.*x_]/Sqrt[f_.+g_.*x_]])^n_/(A_+C_.*x_^2),x_Symbol] :=
  Unintegrable[(a+b*F[c*Sqrt[d+e*x]/Sqrt[f+g*x]])^n/(A+C*x^2),x] /;
FreeQ[{a,b,c,d,e,f,g,A,C,F,n},x] && EqQ[C*d*f-A*e*g,0] && EqQ[e*f+d*g,0] && Not[IGtQ[n,0]]

Derivative divides integration rules

1:  ∫((y'[x])/(y[x]))dx

Reference: G&R 2.111.1.2, CRC 27, A&S 3.3.15

Derivation: Integration by substitution and reciprocal rule for integration

Note: Although powerful, this rule is not tried earlier because it is inefficient.

Rule:

∫((y'[x])/(y[x]))dx  ⟶  Log[y[x]]

Program code:

Int[u_/y_,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
    q*Log[RemoveContent[y,x]] /;
 Not[FalseQ[q]]]

Int[u_/(y_*w_),x_Symbol] :=
  With[{q=DerivativeDivides[y*w,u,x]},
    q*Log[RemoveContent[y*w,x]] /;
 Not[FalseQ[q]]]

2:  ∫y'[x]((y[x])^m)dx  when  m≠-1

Reference: G&R 2.111.1.1, CRC 23, A&S 3.3.14

Derivation: Integration by substitution and power rule for integration

Note: Although powerful, this rule is not tried earlier because it is inefficient.

Rule: If  m≠-1, then

∫y'[x] ((y[x])^m)dx  ⟶  (((y[x])^(m+1))/(m+1))

Program code:

Int[u_*y_^m_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
   q*y^(m+1)/(m+1) /;
 Not[FalseQ[q]]] /;
FreeQ[m,x] && NeQ[m,-1]

Int[u_*y_^m_.*z_^n_.,x_Symbol] :=
  With[{q=DerivativeDivides[y*z,u*z^(n-m),x]},
   q*y^(m+1)*z^(m+1)/(m+1) /;
 Not[FalseQ[q]]] /;
FreeQ[{m,n},x] && NeQ[m,-1]

Algebraic simplification integration rules

1:  ∫u dx  when SimplerIntegrandQ[SimplifyIntegrand[u,x],u,x]

Derivation: Algebraic simplification

Rule: Let v=SimplifyIntegrand[u,x], if  SimplerIntegrandQ[v,u,x], then

∫udx  ⟶  ∫vdx

Program code:

Int[u_,x_Symbol] :=
  With[{v=SimplifyIntegrand[u,x]},
  Int[v,x] /;
 SimplerIntegrandQ[v,u,x]]

2.  ∫u(((e (Sqrt[a+b (x^n)])+f (Sqrt[c+d (x^n)])))^m)dx  when  m∈(SuperMinus[ℤ])

1:  ∫u (((e (Sqrt[a+b (x^n)])+f (Sqrt[c+d (x^n)])))^m)dx  when  m∈(SuperMinus[ℤ])∧ b (e^2)==d (f^2)

Derivation: Algebraic simplification

Basis: If  b (e^2)==d (f^2), then (1/(e (Sqrt[a+b z])+f (Sqrt[c+d z])))==((e (Sqrt[a+b z])-f (Sqrt[c+d z]))/(a (e^2)-c (f^2)))

Rule: If  m∈(SuperMinus[ℤ])∧ b (e^2)==d (f^2), then

∫u (((e (Sqrt[a+b (x^n)])+f (Sqrt[c+d (x^n)])))^m) dx  ⟶  (((a (e^2)-c (f^2)))^m)∫u(((e (Sqrt[a+b (x^n)])-f (Sqrt[c+d (x^n)])))^(-m))dx

Program code:

Int[u_.*(e_.*Sqrt[a_.+b_.*x_^n_.]+f_.*Sqrt[c_.+d_.*x_^n_.])^m_,x_Symbol] :=
  (a*e^2-c*f^2)^m*Int[ExpandIntegrand[u*(e*Sqrt[a+b*x^n]-f*Sqrt[c+d*x^n])^(-m),x],x] /;
FreeQ[{a,b,c,d,e,f,n},x] && ILtQ[m,0] && EqQ[b*e^2-d*f^2,0]

2:  ∫u (((e (Sqrt[a+b (x^n)])+f (Sqrt[c+d (x^n)])))^m)dx  when  m∈(SuperMinus[ℤ])∧ a (e^2)==c (f^2)

Derivation: Algebraic simplification

Basis: If  a (e^2)==c (f^2), then (1/(e (Sqrt[a+b z])+f (Sqrt[c+d z])))==((e (Sqrt[a+b z])-f (Sqrt[c+d z]))/((b (e^2)-d (f^2)) z))

Rule: If  m∈(SuperMinus[ℤ])∧ a (e^2)==c (f^2), then

∫u (((e (Sqrt[a+b (x^n)])+f (Sqrt[c+d (x^n)])))^m) dx  ⟶  (((b (e^2)-d (f^2)))^m)∫u (x^(m n))(((e (Sqrt[a+b (x^n)])-f (Sqrt[c+d (x^n)])))^(-m))dx

Program code:

Int[u_.*(e_.*Sqrt[a_.+b_.*x_^n_.]+f_.*Sqrt[c_.+d_.*x_^n_.])^m_,x_Symbol] :=
  (b*e^2-d*f^2)^m*Int[ExpandIntegrand[u*x^(m*n)*(e*Sqrt[a+b*x^n]-f*Sqrt[c+d*x^n])^(-m),x],x] /;
FreeQ[{a,b,c,d,e,f,n},x] && ILtQ[m,0] && EqQ[a*e^2-c*f^2,0]

3:  ∫(u^m) (((a (u^n)+v))^p)w dx  when  p∈ℤ ∧ n≯0

Derivation: Algebraic simplification

Basis: If  p∈ℤ, then (((a (u^n)+v))^p)==(u^(n p))(((a+(u^(-n))v))^p)

Rule: If  p∈ℤ ∧ n≯0, then

∫(u^m) (((a (u^n)+v))^p)w dx  ⟶  ∫(u^(m+n p))(((a+(u^(-n))v))^p)w dx

Program code:

Int[u_^m_.*(a_.*u_^n_+v_)^p_.*w_,x_Symbol] :=
  Int[u^(m+n*p)*(a+u^(-n)*v)^p*w,x] /;
FreeQ[{a,m,n},x] && IntegerQ[p] && Not[GtQ[n,0]] && Not[FreeQ[v,x]]

Derivative divides integration rules

1:  ∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)dx  ⟶  Subst[∫(((a+b x))^m)(((c+d x))^n)dx,x,y[x]]

Program code:

Int[u_*(a_.+b_.*y_)^m_.*(c_.+d_.*v_)^n_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
   q*Subst[Int[(a+b*x)^m*(c+d*x)^n,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,c,d,m,n},x] && EqQ[v,y]

2:  ∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)(((e+f y[x]))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)(((e+f y[x]))^p)dx  ⟶  Subst[∫(((a+b x))^m)(((c+d x))^n)(((e+f x))^p)dx,x,y[x]]

Program code:

Int[u_*(a_.+b_.*y_)^m_.*(c_.+d_.*v_)^n_.*(e_.+f_.*w_)^p_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
   q*Subst[Int[(a+b*x)^m*(c+d*x)^n*(e+f*x)^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,c,d,e,f,m,n,p},x] && EqQ[v,y] && EqQ[w,y]

3:  ∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)(((e+f y[x]))^p)(((g+h y[x]))^q)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b y[x]))^m) (((c+d y[x]))^n)(((e+f y[x]))^p)(((g+h y[x]))^q)dx  ⟶  Subst[∫(((a+b x))^m)(((c+d x))^n)(((e+f x))^p)(((g+h x))^q)dx,x,y[x]]

Program code:

Int[u_*(a_.+b_.*y_)^m_.*(c_.+d_.*v_)^n_.*(e_.+f_.*w_)^p_.*(g_.+h_.*z_)^q_.,x_Symbol] :=
  With[{r=DerivativeDivides[y,u,x]},
   r*Subst[Int[(a+b*x)^m*(c+d*x)^n*(e+f*x)^p*(g+h*x)^q,x],x,y] /;
 Not[FalseQ[r]]] /;
FreeQ[{a,b,c,d,e,f,g,h,m,n,p,q},x] && EqQ[v,y] && EqQ[w,y] && EqQ[z,y]

4:  ∫y'[x](((a+b ((y[x])^n)))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b ((y[x])^n)))^p)dx  ⟶  Subst[∫(((a+b (x^n)))^p)dx,x,y[x]]

Program code:

Int[u_.*(a_+b_.*y_^n_),x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
   a*Int[u,x] + b*q*Subst[Int[x^n,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,n},x]

Int[u_.*(a_.+b_.*y_^n_)^p_,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
   q*Subst[Int[(a+b*x^n)^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,n,p},x]

5:  ∫y'[x]((y[x])^m)(((a+b ((y[x])^n)))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x]((y[x])^m)(((a+b ((y[x])^n)))^p)dx  ⟶  Subst[∫(x^m)(((a+b (x^n)))^p)dx,x,y[x]]

Program code:

Int[u_.*v_^m_.*(a_.+b_.*y_^n_)^p_.,x_Symbol] :=
  Module[{q,r},
    q*r*Subst[Int[x^m*(a+b*x^n)^p,x],x,y] /;
  Not[FalseQ[r=Divides[y^m,v^m,x]]] && Not[FalseQ[q=DerivativeDivides[y,u,x]]]] /;
FreeQ[{a,b,m,n,p},x]

6:  ∫y'[x](((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx  ⟶  Subst[∫(((a+b (x^n)+c (x^(2 n))))^p)dx,x,y[x]]

Program code:

Int[u_.*(a_.+b_.*y_^n_+c_.*v_^n2_.)^p_,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
  q*Subst[Int[(a+b*x^n+c*x^(2*n))^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,c,n,p},x] && EqQ[n2,2*n] && EqQ[v,y]

7:  ∫y'[x](A+B ((y[x])^n))(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x](A+B ((y[x])^n))(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx  ⟶  Subst[∫(A+B (x^n))(((a+b (x^n)+c (x^(2 n))))^p)dx,x,y[x]]

Program code:

Int[u_.*(A_+B_.*y_^n_)(a_.+b_.*v_^n_+c_.*w_^n2_.)^p_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
  q*Subst[Int[(A+B*x^n)*(a+b*x^n+c*x^(2*n))^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,c,A,B,n,p},x] && EqQ[n2,2*n] && EqQ[v,y] && EqQ[w,y]

Int[u_.*(A_+B_.*y_^n_)(a_.+c_.*w_^n2_.)^p_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
  q*Subst[Int[(A+B*x^n)*(a+c*x^(2*n))^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,c,A,B,n,p},x] && EqQ[n2,2*n] && EqQ[w,y]

8:  ∫y'[x]((y[x])^m)(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x]((y[x])^m)(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx  ⟶  Subst[∫(x^m)(((a+b (x^n)+c (x^(2 n))))^p)dx,x,y[x]]

Program code:

Int[u_.*v_^m_.*(a_.+b_.*y_^n_+c_.*w_^n2_.)^p_.,x_Symbol] :=
  Module[{q,r},
    q*r*Subst[Int[x^m*(a+b*x^n+c*x^(2*n))^p,x],x,y] /;
  Not[FalseQ[r=Divides[y^m,v^m,x]]] && Not[FalseQ[q=DerivativeDivides[y,u,x]]]] /;
FreeQ[{a,b,c,m,n,p},x] && EqQ[n2,2*n] && EqQ[w,y]

9:  ∫y'[x]((y[x])^m)(A+B ((y[x])^n))(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x]((y[x])^m)(A+B ((y[x])^n))(((a+b ((y[x])^n)+c ((y[x])^(2n))))^p)dx  ⟶  Subst[∫(x^m)(A+B (x^n))(((a+b (x^n)+c (x^(2 n))))^p)dx,x,y[x]]

Program code:

Int[u_.*z_^m_.*(A_+B_.*y_^n_)*(a_.+b_.*v_^n_+c_.*w_^n2_.)^p_.,x_Symbol] :=
  Module[{q,r},
    q*r*Subst[Int[x^m*(A+B*x^n)*(a+b*x^n+c*x^(2*n))^p,x],x,y] /;
  Not[FalseQ[r=Divides[y^m,z^m,x]]] && Not[FalseQ[q=DerivativeDivides[y,u,x]]]] /;
FreeQ[{a,b,c,A,B,m,n,p},x] && EqQ[n2,2*n] && EqQ[v,y] && EqQ[w,y]

Int[u_.*z_^m_.*(A_+B_.*y_^n_)*(a_.+c_.*w_^n2_.)^p_.,x_Symbol] :=
  Module[{q,r},
    q*r*Subst[Int[x^m*(A+B*x^n)*(a+c*x^(2*n))^p,x],x,y] /;
  Not[FalseQ[r=Divides[y^m,z^m,x]]] && Not[FalseQ[q=DerivativeDivides[y,u,x]]]] /;
FreeQ[{a,c,A,B,m,n,p},x] && EqQ[n2,2*n] && EqQ[w,y]

10:  ∫y'[x](((a+b ((y[x])^n)))^m)(((c+d ((y[x])^n)))^p)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b ((y[x])^n)))^m)(((c+d ((y[x])^n)))^p)dx  ⟶  Subst[∫(((a+b (x^n)))^m)(((c+d (x^n)))^p)dx,x,y[x]]

Program code:

Int[u_.*(a_.+b_.*y_^n_)^m_.*(c_.+d_.*v_^n_)^p_.,x_Symbol] :=
  With[{q=DerivativeDivides[y,u,x]},
  q*Subst[Int[(a+b*x^n)^m*(c+d*x^n)^p,x],x,y] /;
 Not[FalseQ[q]]] /;
FreeQ[{a,b,c,d,m,n,p},x] && EqQ[v,y]

11:  ∫y'[x](((a+b ((y[x])^n)))^m)(((c+d ((y[x])^n)))^p)(((e+f ((y[x])^n)))^q)dx

Derivation: Integration by substitution

Rule:

∫y'[x](((a+b ((y[x])^n)))^m)(((c+d ((y[x])^n)))^p)(((e+f ((y[x])^n)))^q)dx  ⟶  Subst[∫(((a+b (x^n)))^m)(((c+d (x^n)))^p)(((e+f (x^n)))^q)dx,x,y[x]]

Program code:

Int[u_.*(a_.+b_.*y_^n_)^m_.*(c_.+d_.*v_^n_)^p_.*(e_.+f_.*w_^n_)^q_.,x_Symbol] :=
  With[{r=DerivativeDivides[y,u,x]},
  r*Subst[Int[(a+b*x^n)^m*(c+d*x^n)^p*(e+f*x^n)^q,x],x,y] /;
 Not[FalseQ[r]]] /;
FreeQ[{a,b,c,d,e,f,m,n,p,q},x] && EqQ[v,y] && EqQ[w,y]

12.  ∫u (F^v)dx

1:  ∫u (F^v)dx  when  (∂_x)v==u

Derivation: Integration by substitution

Rule: If  (∂_x)v==u, then

∫u (F^v)dx  ⟶  ((F^v)/(Log[F]))

Program code:

Int[u_*F_^v_,x_Symbol] :=
  With[{q=DerivativeDivides[v,u,x]},
   q*F^v/Log[F] /;
 Not[FalseQ[q]]] /;
FreeQ[F,x]

2:  ∫u (v^m) (F^v)dx  when  (∂_x)v==u

Derivation: Integration by substitution

Rule: If  (∂_x)v==u, then

∫u (v^m)(F^v)dx  ⟶  Subst[∫(x^m)(F^x)dx,x,v]

Program code:

Int[u_*w_^m_.*F_^v_,x_Symbol] :=
  With[{q=DerivativeDivides[v,u,x]},
   q*Subst[Int[x^m*F^x,x],x,v] /;
 Not[FalseQ[q]]] /;
FreeQ[{F,m},x] && EqQ[w,v]

13.  ∫F[((f[x])^p),((g[x])^q)]((f[x])^r) ((g[x])^s) (c f'[x]g[x]+d f[x] g'[x])dx

1:  ∫u(((a+b (v^p)(w^q)))^m)(v^r) (w^s)dx  when  p(s+1)==q(r+1)∧ r≠-1 ∧ (p/(r+1))∈ℤ ∧ FreeQ[(u/(p w(∂_x)v+q v (∂_x)w)),x]

Derivation: Integration by substitution

Basis: If p(s+1)==q(r+1)∧ r≠-1 ∧ (p/(r+1))∈ℤ, then F[((f[x])^p) ((g[x])^q)]((f[x])^r) ((g[x])^s) (p g[x]f'[x]+q f[x] g'[x])==(p/(r+1)) Subst[F[(x^(p/(r+1)))],x,((f[x])^(r+1)) ((g[x])^(s+1))](∂_x)(((f[x])^(r+1)) ((g[x])^(s+1)))

Rule: If p(s+1)==q(r+1)∧ r≠-1 ∧ (p/(r+1))∈ℤ, let c=(u/(p w(∂_x)v+q v (∂_x)w)), if  FreeQ[c,x], then

∫u(((a+b (v^p)(w^q)))^m)(v^r) (w^s)dx  ⟶  ((c p)/(r+1)) Subst[∫(((a+b (x^(p/(r+1)))))^m)dx,x,(v^(r+1)) (w^(s+1))]

Program code:

Int[u_*(a_+b_.*v_^p_.*w_^p_.)^m_.,x_Symbol] :=
  With[{c=Simplify[u/(w*D[v,x]+v*D[w,x])]},
  c*Subst[Int[(a+b*x^p)^m,x],x,v*w] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p},x] && IntegerQ[p]

Int[u_*(a_+b_.*v_^p_.*w_^q_.)^m_.*v_^r_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]+q*v*D[w,x])]},
  c*p/(r+1)*Subst[Int[(a+b*x^(p/(r+1)))^m,x],x,v^(r+1)*w] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q,r},x] && EqQ[p,q*(r+1)] && NeQ[r,-1] && IntegerQ[p/(r+1)]

Int[u_*(a_+b_.*v_^p_.*w_^q_.)^m_.*v_^r_.*w_^s_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]+q*v*D[w,x])]},
  c*p/(r+1)*Subst[Int[(a+b*x^(p/(r+1)))^m,x],x,v^(r+1)*w^(s+1)] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q,r,s},x] && EqQ[p*(s+1),q*(r+1)] && NeQ[r,-1] && IntegerQ[p/(r+1)]

2:  ∫u(((a (v^p)+b (w^q)))^m)(v^r) (w^s)dx  when  p(s+1)+q(m p+r+1)==0 ∧ s≠-1 ∧ (q/(s+1))∈ℤ ∧ m∈ℤ∧ FreeQ[(u/(p w(∂_x)v-q v (∂_x)w)),x]

Derivation: Integration by substitution

Basis: If p(s+1)+q(m p+r+1)==0 ∧ s+1≠0 ∧ (q/(s+1))∈ℤ ∧ m∈ℤ, then
		(((a ((f[x])^p)+b ((g[x])^q)))^m)((f[x])^r) ((g[x])^s) (p g[x]f'[x]-q f[x] g'[x])==-(q/(s+1)) Subst[(((a+b (x^(q/(s+1)))))^m),x,((f[x])^(m p+r+1)) ((g[x])^(s+1))](∂_x)(((f[x])^(m p+r+1)) ((g[x])^(s+1)))

Rule: If  p(s+1)+q(m p+r+1)==0 ∧ s≠-1 ∧ (q/(s+1))∈ℤ ∧ m∈ℤ, let c=(u/(p w(∂_x)v-q v (∂_x)w)), if  FreeQ[c,x], then

∫u(((a (v^p)+b (w^q)))^m)(v^r) (w^s)dx  ⟶  -((c q)/(s+1)) Subst[∫(((a+b (x^(q/(s+1)))))^m)dx,x,(v^(m p+r+1)) (w^(s+1))]

Program code:

Int[u_*(a_.*v_^p_.+b_.*w_^q_.)^m_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]-q*v*D[w,x])]},
  c*p*Subst[Int[(b+a*x^p)^m,x],x,v*w^(m*q+1)] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q},x] && EqQ[p+q*(m*p+1),0] && IntegerQ[p] && IntegerQ[m]

(* Int[u_*(a_.*v_^p_.+b_.*w_^q_.)^m_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]-q*v*D[w,x])]},
  -c*q*Subst[Int[(a+b*x^q)^m,x],x,v^(m*p+1)*w] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q},x] && EqQ[p+q*(m*p+1),0] && IntegerQ[q] && IntegerQ[m] *)

Int[u_*(a_.*v_^p_.+b_.*w_^q_.)^m_.*v_^r_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]-q*v*D[w,x])]},
  -c*q*Subst[Int[(a+b*x^q)^m,x],x,v^(m*p+r+1)*w] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q,r},x] && EqQ[p+q*(m*p+r+1),0] && IntegerQ[q] && IntegerQ[m]

Int[u_*(a_.*v_^p_.+b_.*w_^q_.)^m_.*w_^s_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]-q*v*D[w,x])]},
  -c*q/(s+1)*Subst[Int[(a+b*x^(q/(s+1)))^m,x],x,v^(m*p+1)*w^(s+1)] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q,s},x] && EqQ[p*(s+1)+q*(m*p+1),0] && NeQ[s,-1] && IntegerQ[q/(s+1)] && IntegerQ[m]

Int[u_*(a_.*v_^p_.+b_.*w_^q_.)^m_.*v_^r_.*w_^s_.,x_Symbol] :=
  With[{c=Simplify[u/(p*w*D[v,x]-q*v*D[w,x])]},
  -c*q/(s+1)*Subst[Int[(a+b*x^(q/(s+1)))^m,x],x,v^(m*p+r+1)*w^(s+1)] /;
 FreeQ[c,x]] /;
FreeQ[{a,b,m,p,q,r,s},x] && EqQ[p*(s+1)+q*(m*p+r+1),0] && NeQ[s,-1] && IntegerQ[q/(s+1)] && IntegerQ[m]

Substitution integration rules

1:  ∫(x^m)F[(x^(m+1))]dx  when  m≠-1

Derivation: Integration by substitution

Basis: If  m≠-1, then (x^m)F[(x^(m+1))]==(1/(m+1))F[(x^(m+1))](∂_x)(x^(m+1))

Rule: If  m≠-1, then

∫(x^m)F[(x^(m+1))]dx  ⟶  (1/(m+1))Subst[∫F[x]dx,x,(x^(m+1))]

Program code:

Int[u_*x_^m_.,x_Symbol] :=
  1/(m+1)*Subst[Int[SubstFor[x^(m+1),u,x],x],x,x^(m+1)] /;
FreeQ[m,x] && NeQ[m,-1] && FunctionOfQ[x^(m+1),u,x]

2:  ∫F[(((a+b x))^(1/n)),x]dx  when  n∈ℤ

Derivation: Integration by substitution

Basis: If  n∈ℤ, then F[(((a+b x))^(1/n)),x]==(n/b)Subst[(x^(n-1)) F[x,-(a/b)+((x^n)/b)],x,(((a+b x))^(1/n))](∂_x)(((a+b x))^(1/n))

Rule: If  n∈ℤ, then

∫F[(((a+b x))^(1/n)),x]dx  ⟶  (n/b)Subst[∫(x^(n-1)) F[x,-(a/b)+((x^n)/b)]dx,x,(((a+b x))^(1/n))]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfLinear[u,x]},
  ShowStep["","Int[F[(a+b*x)^(1/n),x],x]",
			"n/b*Subst[Int[x^(n-1)*F[x,-a/b+x^n/b],x],x,(a+b*x)^(1/n)]",Hold[
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])]]] /;
 Not[FalseQ[lst]] && SubstForFractionalPowerQ[u,lst[[3]],x]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfLinear[u,x]},
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])] /;
 Not[FalseQ[lst]] && SubstForFractionalPowerQ[u,lst[[3]],x]]]

3:  ∫F[(((((a+b x)/(c+d x))))^(1/n)),x]dx  when  n∈ℤ

Derivation: Integration by substitution

Basis: If  n∈ℤ, then F[(((((a+b x)/(c+d x))))^(1/n)),x]==n (b c-a d)Subst[((x^(n-1))/(((b-d (x^n)))^2)) F[x,((-a+c (x^n))/(b-d (x^n)))],x,(((((a+b x)/(c+d x))))^(1/n))](∂_x)(((((a+b x)/(c+d x))))^(1/n))

Rule: If n∈ℤ, then

∫F[(((((a+b x)/(c+d x))))^(1/n)),x]dx  ⟶  n (b c-a d) Subst[∫((x^(n-1))/(((b-d (x^n)))^2))F[x,((-a+c (x^n))/(b-d (x^n)))]dx,x,(((((a+b x)/(c+d x))))^(1/n))]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfQuotientOfLinears[u,x]},
  ShowStep["","Int[F[((a+b*x)/(c+d*x))^(1/n),x],x]",
"n*(b*c-a*d)*Subst[Int[x^(n-1)*F[x,(-a+c*x^n)/(b-d*x^n)]/(b-d*x^n)^2,x],x,((a+b*x)/(c+d*x))^(1/n)]",Hold[
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])]]] /;
 Not[FalseQ[lst]]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfQuotientOfLinears[u,x]},
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])] /;
 Not[FalseQ[lst]]]]

Piecewise constant extraction integration rules

1:  ∫u((((v^m)(w^n) ⋯))^p)dx  when p∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a ((F[x])^m)((G[x])^n) ⋯))^p)/(((F[x])^(m p))((G[x])^(n p)) ⋯))==0

Basis: ((((a (v^m)(w^n) ⋯))^p)/((v^(m p))(w^(n p)) ⋯))==(((a^(IntPart[p])) (((a (v^m)(w^n) ⋯))^(FracPart[p])))/((v^(m FracPart[p]))(w^(n FracPart[p])) ⋯))

Rule: If  p∉ℤ, then

∫u(((a (v^m)(w^n) ⋯))^p)dx  ⟶  (((a^(IntPart[p])) (((a (v^m)(w^n)⋯))^(FracPart[p])))/((v^(m FracPart[p]))(w^(n FracPart[p]))⋯))∫u (v^(m FracPart[p]))(w^(n FracPart[p])) ⋯dx

Program code:

Int[u_.*(a_.*v_^m_.*w_^n_.*z_^q_.)^p_,x_Symbol] :=
  a^IntPart[p]*(a*v^m*w^n*z^q)^FracPart[p]/(v^(m*FracPart[p])*w^(n*FracPart[p])*z^(q*FracPart[p]))*Int[u*v^(m*p)*w^(n*p)*z^(p*q),x] /;
FreeQ[{a,m,n,p,q},x] && Not[IntegerQ[p]] && Not[FreeQ[v,x]] && Not[FreeQ[w,x]] && Not[FreeQ[z,x]]

Int[u_.*(a_.*v_^m_.*w_^n_.)^p_,x_Symbol] :=
  a^IntPart[p]*(a*v^m*w^n)^FracPart[p]/(v^(m*FracPart[p])*w^(n*FracPart[p]))*Int[u*v^(m*p)*w^(n*p),x] /;
FreeQ[{a,m,n,p},x] && Not[IntegerQ[p]] && Not[FreeQ[v,x]] && Not[FreeQ[w,x]]

Int[u_.*(a_.*v_^m_.)^p_,x_Symbol] :=
  a^IntPart[p]*(a*v^m)^FracPart[p]/v^(m*FracPart[p])*Int[u*v^(m*p),x] /;
FreeQ[{a,m,p},x] && Not[IntegerQ[p]] && Not[FreeQ[v,x]] && Not[EqQ[a,1] && EqQ[m,1]] && Not[EqQ[v,x] && EqQ[m,1]]

2.  ∫u(((a+b (v^n)))^p)dx  when p∉ℤ ∧ n∈(SuperMinus[ℤ])

1:  ∫u(((a+b (x^n)))^p)dx  when p∉ℤ ∧ n∈(SuperMinus[ℤ])

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a+b (x^n)))^p)/((x^(n p)) (((1+((a (x^(-n)))/b)))^p)))==0

Rule: If  p∉ℤ ∧ n∈(SuperMinus[ℤ]), then

∫u(((a+b (x^n)))^p)dx  ⟶  (((b^(IntPart[p])) (((a+b (x^n)))^(FracPart[p])))/((x^(n FracPart[p])) (((1+((a (x^(-n)))/b)))^(FracPart[p]))))∫u (x^(n p))(((1+((a (x^(-n)))/b)))^p)dx

Program code:

Int[u_.*(a_.+b_.*x_^n_)^p_,x_Symbol] :=
  b^IntPart[p]*(a+b*x^n)^FracPart[p]/(x^(n*FracPart[p])*(1+a*x^(-n)/b)^FracPart[p])*Int[u*x^(n*p)*(1+a*x^(-n)/b)^p,x] /;
FreeQ[{a,b,p},x] && Not[IntegerQ[p]] && ILtQ[n,0] && Not[RationalFunctionQ[u,x]] && IntegerQ[p+1/2]

2:  ∫u(((a+b (v^n)))^p)dx  when p∉ℤ ∧ n∈(SuperMinus[ℤ])

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a+b ((F[x])^n)))^p)/(((F[x])^(n p))(((b+a ((F[x])^(-n))))^p)))==0

Basis: ((((a+b (v^n)))^p)/((v^(n p))(((b+a (v^(-n))))^p)))==((((a+b (v^n)))^(FracPart[p]))/((v^(n FracPart[p]))(((b+a (v^(-n))))^(FracPart[p]))))

Rule: If  p∉ℤ ∧ n∈(SuperMinus[ℤ]), then

∫u(((a+b (v^n)))^p)dx  ⟶  ((((a+b (v^n)))^(FracPart[p]))/((v^(n FracPart[p]))(((b+a (v^(-n))))^(FracPart[p]))))∫u (v^(n p))(((b+a (v^(-n))))^p)dx

Program code:

Int[u_.*(a_.+b_.*v_^n_)^p_,x_Symbol] :=
  (a+b*v^n)^FracPart[p]/(v^(n*FracPart[p])*(b+a*v^(-n))^FracPart[p])*Int[u*v^(n*p)*(b+a*v^(-n))^p,x] /;
FreeQ[{a,b,p},x] && Not[IntegerQ[p]] && ILtQ[n,0] && BinomialQ[v,x] && Not[LinearQ[v,x]]

3:  ∫u(((a+b (x^m)(v^n)))^p)dx  when p∉ℤ ∧ n∈(SuperMinus[ℤ])

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a+b (x^m)((F[x])^n)))^p)/(((F[x])^(n p))(((b (x^m)+a ((F[x])^(-n))))^p)))==0

Basis: ((((a+b (x^m)(v^n)))^p)/((v^(n p))(((b (x^m)+a (v^(-n))))^p)))==((((a+b (x^m)(v^n)))^(FracPart[p]))/((v^(n FracPart[p]))(((b (x^m)+a (v^(-n))))^(FracPart[p]))))

Rule: If  p∉ℤ ∧ n∈(SuperMinus[ℤ]), then

∫u(((a+b (x^m)(v^n)))^p)dx  ⟶  ((((a+b (x^m)(v^n)))^(FracPart[p]))/((v^(n FracPart[p]))(((b (x^m)+a (v^(-n))))^(FracPart[p]))))∫u (v^(n p))(((b (x^m)+a (v^(-n))))^p)dx

Program code:

Int[u_.*(a_.+b_.*x_^m_.*v_^n_)^p_,x_Symbol] :=
  (a+b*x^m*v^n)^FracPart[p]/(v^(n*FracPart[p])*(b*x^m+a*v^(-n))^FracPart[p])*Int[u*v^(n*p)*(b*x^m+a*v^(-n))^p,x] /;
FreeQ[{a,b,m,p},x] && Not[IntegerQ[p]] && ILtQ[n,0] && BinomialQ[v,x]

4:  ∫u(((a (x^r)+b (x^s)))^m)dx  when m∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a (x^r)+b (x^s)))^m)/((x^(m r))(((a+b (x^(s-r))))^m)))==0

Basis: ((((a (x^r)+b (x^s)))^m)/((x^(r m))(((a+b (x^(s-r))))^m)))==((((a (x^r)+b (x^s)))^(FracPart[m]))/((x^(r FracPart[m]))(((a+b (x^(s-r))))^(FracPart[m]))))

Note: This rule should be generalized to handle an arbitrary number of terms.

Rule: If  m∉ℤ, then

∫u(((a (x^r)+b (x^s)))^m)dx  ⟶  ((((a (x^r)+b (x^s)))^(FracPart[m]))/((x^(r FracPart[m]))(((a+b (x^(s-r))))^(FracPart[m]))))∫u (x^(m r))(((a+b (x^(s-r))))^m)dx

Program code:

Int[u_.*(a_.*x_^r_.+b_.*x_^s_.)^m_,x_Symbol] :=
  With[{v=(a*x^r+b*x^s)^FracPart[m]/(x^(r*FracPart[m])*(a+b*x^(s-r))^FracPart[m])},
  v*Int[u*x^(m*r)*(a+b*x^(s-r))^m,x] /;
 NeQ[Simplify[v],1]] /;
FreeQ[{a,b,m,r,s},x] && Not[IntegerQ[m]] && PosQ[s-r]

Algebraic expansion integration rules

1:  ∫(u/(a+b (x^n)))dx  when  n∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Rule: If  n∈(SuperPlus[ℤ]), then

∫(u/(a+b (x^n)))dx  ⟶  ∫RationalFunctionExpand[(u/(a+b (x^n))),x]dx

Program code:

Int[u_/(a_+b_.*x_^n_),x_Symbol] :=
  With[{v=RationalFunctionExpand[u/(a+b*x^n),x]},
  Int[v,x] /;
 SumQ[v]] /;
FreeQ[{a,b},x] && IGtQ[n,0]

2.  ∫u(((a+b (x^n)+c (x^(2n))))^p)dx

1.  ∫u(((a+b (x^n)+c (x^(2n))))^p)dx  when  (b^2)-4a c==0

1:  ∫u(((a+b (x^n)+c (x^(2n))))^p)dx  when  (b^2)-4a c==0 ∧ p∈ℤ

Derivation: Algebraic simplification

Basis: If  (b^2)-4a c==0, then a+b z+c (z^2)==(1/(4 c))(((b+2 c z))^2)

Rule: If  (b^2)-4a c==0 ∧ p∈ℤ, then

∫u(((a+b (x^n)+c (x^(2n))))^p)dx  ⟶  (1/((4^p) (c^p)))∫u(((b+2 c (x^n)))^(2p))dx

Program code:

Int[u_*(a_.+b_.*x_^n_.+c_.*x_^n2_.)^p_.,x_Symbol] :=
  1/(4^p*c^p)*Int[u*(b+2*c*x^n)^(2*p),x] /;
FreeQ[{a,b,c,n},x] && EqQ[n2,2*n] && EqQ[b^2-4*a*c,0] && IntegerQ[p] && Not[AlgebraicFunctionQ[u,x]]

2:  ∫u(((a+b (x^n)+c (x^(2n))))^p)dx  when  (b^2)-4a c==0 ∧ p∉ℤ

Derivation: Piecewise constant extraction

Basis: If  (b^2)-4a c==0, then (∂_x)((((a+b (x^n)+c (x^(2n))))^p)/(((b+2 c (x^n)))^(2p)))==0

Rule: If  (b^2)-4a c==0 ∧ p∉ℤ, then

∫u(((a+b (x^n)+c (x^(2n))))^p)dx  ⟶  ((((a+b (x^n)+c (x^(2n))))^p)/(((b+2 c (x^n)))^(2p)))∫u(((b+2 c (x^n)))^(2p))dx

Program code:

Int[u_*(a_.+b_.*x_^n_.+c_.*x_^n2_.)^p_,x_Symbol] :=
  (a+b*x^n+c*x^(2*n))^p/(b+2*c*x^n)^(2*p)*Int[u*(b+2*c*x^n)^(2*p),x] /;
FreeQ[{a,b,c,n,p},x] && EqQ[n2,2*n] && EqQ[b^2-4*a*c,0] && Not[IntegerQ[p]] && Not[AlgebraicFunctionQ[u,x]]

2.  ∫u(((a+b (x^n)+c (x^(2n))))^p)dx  when  (b^2)-4a c≠0

1:  ∫(u/(a+b (x^n)+c (x^(2n))))dx  when  n∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Rule: If  n∈(SuperPlus[ℤ]), then

∫(u/(a+b (x^n)+c (x^(2n))))dx  ⟶  ∫RationalFunctionExpand[(u/(a+b (x^n)+c (x^(2n)))),x]dx

Program code:

Int[u_/(a_.+b_.*x_^n_.+c_.*x_^n2_.),x_Symbol] :=
  With[{v=RationalFunctionExpand[u/(a+b*x^n+c*x^(2*n)),x]},
  Int[v,x] /;
 SumQ[v]] /;
FreeQ[{a,b,c},x] && EqQ[n2,2*n] && IGtQ[n,0]

3:  ∫(u/(a (x^m)+b (Sqrt[c (x^n)])))dx

Derivation: Algebraic simplification

Basis: (1/(z+w))==((z-w)/((z^2)-(w^2)))

Rule:

∫(u/(a (x^m)+b (Sqrt[c (x^n)])))dx  ⟶  ∫((u (a (x^m)-b (Sqrt[c (x^n)])))/((a^2) (x^(2 m))-(b^2) c (x^n)))dx

Program code:

Int[u_./(a_.*x_^m_.+b_.*Sqrt[c_.*x_^n_]),x_Symbol] :=
  Int[u*(a*x^m-b*Sqrt[c*x^n])/(a^2*x^(2*m)-b^2*c*x^n),x] /;
FreeQ[{a,b,c,m,n},x]

Substitution integration rules

1:  ∫F[a+b x]dx

Derivation: Integration by substitution

Basis: F[a+b x]==(1/b)F[a+b x](∂_x)(a+b x)

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfLinear[u,x]},
  ShowStep["","Int[F[a+b*x],x]","Subst[Int[F[x],x],x,a+b*x]/b",Hold[
  Dist[1/lst[[3]],Subst[Int[lst[[1]],x],x,lst[[2]]+lst[[3]]*x],x]]] /;
 Not[FalseQ[lst]]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfLinear[u,x]},
  Dist[1/lst[[3]],Subst[Int[lst[[1]],x],x,lst[[2]]+lst[[3]]*x],x] /;
 Not[FalseQ[lst]]]]

2.  ∫(x^m)F[(x^n)]dx  when  GCD[m+1,n]>1

1:  ∫((F[(((c x))^n)])/x)dx

Derivation: Integration by substitution

Basis: ((F[(((c x))^n)])/x)==((F[(((c x))^n)])/(n(((c x))^n)))(∂_x)(((c x))^n)

Rule:

∫((F[(((c x))^n)])/x)dx  ⟶  (1/n)Subst[∫((F[x])/x)dx,x,(((c x))^n)]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_/x_,x_Symbol] :=
  With[{lst=PowerVariableExpn[u,0,x]},
  ShowStep["","Int[F[(c*x)^n]/x,x]","Subst[Int[F[x]/x,x],x,(c*x)^n]/n",Hold[
  1/lst[[2]]*Subst[Int[NormalizeIntegrand[Simplify[lst[[1]]/x],x],x],x,(lst[[3]]*x)^lst[[2]]]]] /;
 Not[FalseQ[lst]] && NeQ[lst[[2]],0]] /;
SimplifyFlag && NonsumQ[u] && Not[RationalFunctionQ[u,x]],

Int[u_/x_,x_Symbol] :=
  With[{lst=PowerVariableExpn[u,0,x]},
  1/lst[[2]]*Subst[Int[NormalizeIntegrand[Simplify[lst[[1]]/x],x],x],x,(lst[[3]]*x)^lst[[2]]] /;
 Not[FalseQ[lst]] && NeQ[lst[[2]],0]] /;
NonsumQ[u] && Not[RationalFunctionQ[u,x]]]

2:  ∫(x^m)F[(x^n)]dx  when  m≠-1 ∧ GCD[m+1,n]>1

Derivation: Integration by substitution

Basis: Let g=GCD[m+1,n], then (x^m)F[(x^n)]==(1/g)((((x^g)))^((m+1)/g-1))F[((((x^g)))^(n/g))](∂_x)(x^g)

Rule: If  m≠-1, let g=GCD[m+1,n], if  g>1, then

∫(x^m)F[(x^n)]dx  ⟶  (1/g)Subst[∫(x^((m+1)/g-1))F[(x^(n/g))]dx,x,(x^g)]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_*x_^m_.,x_Symbol] :=
  With[{lst=PowerVariableExpn[u,m+1,x]},
  ShowStep["If g=GCD[m+1,n]>1,","Int[x^m*F[x^n],x]",
		"1/g*Subst[Int[x^((m+1)/g-1)*F[x^(n/g)],x],x,x^g]",Hold[
  1/lst[[2]]*Subst[Int[NormalizeIntegrand[Simplify[lst[[1]]/x],x],x],x,(lst[[3]]*x)^lst[[2]]]]] /;
 Not[FalseQ[lst]] && NeQ[lst[[2]],m+1]] /;
SimplifyFlag && IntegerQ[m] && NeQ[m,-1] && NonsumQ[u] && (GtQ[m,0] || Not[AlgebraicFunctionQ[u,x]]),

Int[u_*x_^m_.,x_Symbol] :=
  With[{lst=PowerVariableExpn[u,m+1,x]},
  1/lst[[2]]*Subst[Int[NormalizeIntegrand[Simplify[lst[[1]]/x],x],x],x,(lst[[3]]*x)^lst[[2]]] /;
 Not[FalseQ[lst]] && NeQ[lst[[2]],m+1]] /;
IntegerQ[m] && NeQ[m,-1] && NonsumQ[u] && (GtQ[m,0] || Not[AlgebraicFunctionQ[u,x]])]

3:  ∫(x^m) F[x] dx  when  m∈𝔽

Derivation: Integration by substitution

Basis: If  k∈(SuperPlus[ℤ]), then (x^m)F[x]==k((((x^(1/k))))^(k(m+1)-1)) F[((((x^(1/k))))^k)](∂_x)(x^(1/k))

Rule: If  m∈𝔽, let k=Denominator[m], then

∫(x^m) F[x]dx  ⟶  k Subst[∫(x^(k(m+1)-1)) F[(x^k)]dx,x,(x^(1/k))]

Program code:

Int[x_^m_*u_,x_Symbol] :=
  With[{k=Denominator[m]},
  k*Subst[Int[x^(k*(m+1)-1)*ReplaceAll[u,x->x^k],x],x,x^(1/k)]] /;
FractionQ[m]

4.  ∫F[(Sqrt[a+b x+c (x^2)]),x]dx

1:  ∫F[(Sqrt[a+b x+c (x^2)]),x]dx  when  a>0

Reference: G&R 2.251.1 (Euler substitution #1)

Derivation: Integration by substitution

Basis: F[(Sqrt[a+b x+c (x^2)]),x]==2Subst[((c (Sqrt[a])-b x+(Sqrt[a]) (x^2))/(((c-(x^2)))^2))F[((c (Sqrt[a])-b x+(Sqrt[a]) (x^2))/(c-(x^2))),((-b+2 (Sqrt[a]) x)/(c-(x^2)))],x,((-(Sqrt[a])+(Sqrt[a+b x+c (x^2)]))/x)](∂_x)((-(Sqrt[a])+(Sqrt[a+b x+c (x^2)]))/x)

Rule: If  a>0, then

∫F[(Sqrt[a+b x+c (x^2)]),x]dx  ⟶  2Subst[∫((c (Sqrt[a])-b x+(Sqrt[a]) (x^2))/(((c-(x^2)))^2))F[((c (Sqrt[a])-b x+(Sqrt[a]) (x^2))/(c-(x^2))),((-b+2 (Sqrt[a]) x)/(c-(x^2)))]dx,x,((-(Sqrt[a])+(Sqrt[a+b x+c (x^2)]))/x)]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  ShowStep["","Int[F[Sqrt[a+b*x+c*x^2],x],x]",
			"2*Subst[Int[F[(c*Sqrt[a]-b*x+Sqrt[a]*x^2)/(c-x^2),(-b+2*Sqrt[a]*x)/(c-x^2)]*
				(c*Sqrt[a]-b*x+Sqrt[a]*x^2)/(c-x^2)^2,x],x,(-Sqrt[a]+Sqrt[a+b*x+c*x^2])/x]",
			Hold[2*Subst[Int[lst[[1]],x],x,lst[[2]]]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],1]] /;
SimplifyFlag && EulerIntegrandQ[u,x],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  2*Subst[Int[lst[[1]],x],x,lst[[2]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],1]] /;
EulerIntegrandQ[u,x]]

2:  ∫F[(Sqrt[a+b x+c (x^2)]),x]dx  when  a≯0 ∧ c>0

Reference: G&R 2.251.2 (Euler substitution #2)

Derivation: Integration by substitution

Basis: F[(Sqrt[a+b x+c (x^2)]),x]==2Subst[((a (Sqrt[c])+b x+(Sqrt[c]) (x^2))/(((b+2 (Sqrt[c]) x))^2))F[((a (Sqrt[c])+b x+(Sqrt[c]) (x^2))/(b+2 (Sqrt[c]) x)),((-a+(x^2))/(b+2 (Sqrt[c]) x))],x,(Sqrt[c]) x+(Sqrt[a+b x+c (x^2)])](∂_x)((Sqrt[c]) x+(Sqrt[a+b x+c (x^2)]))

Rule: If  a≯0 ∧ c>0, then

∫F[(Sqrt[a+b x+c (x^2)]),x]dx  ⟶  2 Subst[∫((a (Sqrt[c])+b x+(Sqrt[c]) (x^2))/(((b+2 (Sqrt[c]) x))^2))F[((a (Sqrt[c])+b x+(Sqrt[c]) (x^2))/(b+2 (Sqrt[c]) x)),((-a+(x^2))/(b+2 (Sqrt[c]) x))]dx,x,(Sqrt[c]) x+(Sqrt[a+b x+c (x^2)])]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  ShowStep["","Int[F[Sqrt[a+b*x+c*x^2],x],x]",
			"2*Subst[Int[F[(a*Sqrt[c]+b*x+Sqrt[c]*x^2)/(b+2*Sqrt[c]*x),(-a+x^2)/(b+2*Sqrt[c]*x)]*
				(a*Sqrt[c]+b*x+Sqrt[c]*x^2)/(b+2*Sqrt[c]*x)^2,x],x,Sqrt[c]*x+Sqrt[a+b*x+c*x^2]]",
			Hold[2*Subst[Int[lst[[1]],x],x,lst[[2]]]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],2]] /;
SimplifyFlag && EulerIntegrandQ[u,x],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  2*Subst[Int[lst[[1]],x],x,lst[[2]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],2]] /;
EulerIntegrandQ[u,x]]

3:  ∫F[(Sqrt[a+b x+c (x^2)]),x]dx  when  a≯0 ∧ c≯0

Reference: G&R 2.251.3 (Euler substitution #3)

Derivation: Integration by substitution

Basis: F[(Sqrt[a+b x+c (x^2)]),x]==-2(Sqrt[(b^2)-4 a c])Subst[(x/(((c-(x^2)))^2))F[-(((Sqrt[(b^2)-4 a c]) x)/(c-(x^2))),-((b c+c (Sqrt[(b^2)-4 a c])+(-b+(Sqrt[(b^2)-4 a c])) (x^2))/(2 c (c-(x^2))))],x,((2 c (Sqrt[a+b x+c (x^2)]))/(b-(Sqrt[(b^2)-4 a c])+2 c x))](∂_x)((2 c (Sqrt[a+b x+c (x^2)]))/(b-(Sqrt[(b^2)-4 a c])+2 c x))

Rule: If  a≯0 ∧ c≯0, then

∫F[(Sqrt[a+b x+c (x^2)]),x]dx  ⟶  
-2 (Sqrt[(b^2)-4 a c]) Subst[∫(x/(((c-(x^2)))^2))F[-(((Sqrt[(b^2)-4 a c]) x)/(c-(x^2))),-((b c+c (Sqrt[(b^2)-4 a c])+(-b+(Sqrt[(b^2)-4 a c])) (x^2))/(2 c (c-(x^2))))]dx,x,((2 c (Sqrt[a+b x+c (x^2)]))/(b-(Sqrt[(b^2)-4 a c])+2 c x))]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  ShowStep["","Int[F[Sqrt[a+b*x+c*x^2],x],x]",
		   "-2*Sqrt[b^2-4*a*c]*Subst[Int[F[-Sqrt[b^2-4*a*c]*x/(c-x^2),
			  (b*c+c*Sqrt[b^2-4*a*c]+(-b+Sqrt[b^2-4*a*c])*x^2)/(-2*c*(c-x^2))]*x/(c-x^2)^2,x],
			   x,2*c*Sqrt[a+b*x+c*x^2]/(b-Sqrt[b^2-4*a*c]+2*c*x)]",
		   Hold[2*Subst[Int[lst[[1]],x],x,lst[[2]]]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],3]] /;
SimplifyFlag && EulerIntegrandQ[u,x],

Int[u_,x_Symbol] :=
  With[{lst=FunctionOfSquareRootOfQuadratic[u,x]},
  2*Subst[Int[lst[[1]],x],x,lst[[2]]] /;
 Not[FalseQ[lst]] && EqQ[lst[[3]],3]] /;
EulerIntegrandQ[u,x]]

Algebraic expansion integration rules

1.  ∫(1/(a+b (v^n)))dx  when  n∈ℤ ∧ n>1

1.  ∫(1/(a+b (v^n)))dx  when  (n/2)∈(SuperPlus[ℤ])

1:  ∫(1/(a+b (v^2)))dx

Derivation: Algebraic expansion

Basis: (1/(a+b (z^2)))==(1/(2a(1-(z/(Sqrt[-a/b])))))+(1/(2a(1+(z/(Sqrt[-a/b])))))

Rule:

∫(1/(a+b (v^2)))dx  ⟶  (1/(2a))∫(1/(1-(v/(Sqrt[-a/b]))))dx+(1/(2a))∫(1/(1+(v/(Sqrt[-a/b]))))dx

Program code:

Int[1/(a_+b_.*v_^2),x_Symbol] :=
(*1/(2*a)*Int[Together[1/(1-Rt[-b/a,2]*v)],x] + 1/(2*a)*Int[Together[1/(1+Rt[-b/a,2]*v)],x] /; *)
  1/(2*a)*Int[Together[1/(1-v/Rt[-a/b,2])],x] + 1/(2*a)*Int[Together[1/(1+v/Rt[-a/b,2])],x] /;
FreeQ[{a,b},x]

2:  ∫(1/(a+b (v^n)))dx  when  (n/2)∈ℤ ∧ n>2

Derivation: Algebraic expansion

Basis: If (n/2)∈(SuperPlus[ℤ]), then (1/(a+b (z^n)))==(2/(a n))(∑_(k=1)^(n/2))(1/(1-(((-1))^(-4 k/n))(((-(a/b)))^(-2/n))(z^2)))

Rule: If (n/2)∈ℤ ∧ n>2, then

∫(1/(a+b (v^n)))dx  ⟶  (2/(a n))(∑_(k=1)^(n/2))∫(1/(1-(((-1))^(-4 k/n))(((-(a/b)))^(-2/n))(v^2)))dx

Program code:

Int[1/(a_+b_.*v_^n_),x_Symbol] :=
  Dist[2/(a*n),Sum[Int[Together[1/(1-v^2/((-1)^(4*k/n)*Rt[-a/b,n/2]))],x],{k,1,n/2}],x] /;
FreeQ[{a,b},x] && IGtQ[n/2,1]

2:  ∫(1/(a+b (v^n)))dx  when  ((n-1)/2)∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Basis: If  n∈(SuperPlus[ℤ]), then a+b (z^n)==a (∏_(k=1)^n)(1-(((-1))^(-2 k/n))(((-(a/b)))^(-1/n))z)

Basis: If  n∈(SuperPlus[ℤ]), then (1/(a+b (z^n)))==(1/(a n))(∑_(k=1)^n)(1/(1-(((-1))^(-2 k/n))(((-(a/b)))^(-1/n))z))

Rule: If ((n-1)/2)∈(SuperPlus[ℤ]), then

∫(1/(a+b (v^n)))dx  ⟶  (1/(a n))(∑_(k=1)^n)∫(1/(1-(((-1))^(-2 k/n))(((-(a/b)))^(-1/n))v))dx

Program code:

Int[1/(a_+b_.*v_^n_),x_Symbol] :=
  Dist[1/(a*n),Sum[Int[Together[1/(1-v/((-1)^(2*k/n)*Rt[-a/b,n]))],x],{k,1,n}],x] /;
FreeQ[{a,b},x] && IGtQ[(n-1)/2,0]

2:  ∫((Subscript[P, u])/(a+b (u^n)))dx  when  n∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Rule: If  n∈(SuperPlus[ℤ]), then

∫((Subscript[P, u])/(a+b (u^n)))dx  ⟶  ∫(ExpandIntegrand[((Subscript[P, x])/(a+b (x^n))),x]/.x->u)dx

Program code:

Int[v_/(a_+b_.*u_^n_.),x_Symbol] :=
  Int[ReplaceAll[ExpandIntegrand[PolynomialInSubst[v,u,x]/(a+b*x^n),x],x->u],x] /;
FreeQ[{a,b},x] && IGtQ[n,0] && PolynomialInQ[v,u,x]

3:  ∫udx  when  NormalizeIntegrand[u,x]≠u

Derivation: Algebraic simplification

Rule: If  NormalizeIntegrand[u,x]≠u, then

∫udx  ⟶  ∫NormalizeIntegrand[u,x]dx

Program code:

Int[u_,x_Symbol] :=
  With[{v=NormalizeIntegrand[u,x]},
  Int[v,x] /;
 v=!=u]

4:  ∫udx  when  ExpandIntegrand[u,x]is a sum

Derivation: Algebraic expansion

Rule: If  ExpandIntegrand[u,x] is a sum, then

∫udx  ⟶  ∫ExpandIntegrand[u,x]dx

Program code:

Int[u_,x_Symbol] :=
  With[{v=ExpandIntegrand[u,x]},
  Int[v,x] /;
 SumQ[v]]

Piecewise constant extraction integration rules

1:  ∫u (((a+b (x^m)))^p) (((c+d (x^n)))^q)dx  when  a+d==0 ∧ b+c==0 ∧ m+n==0 ∧ p+q==0

Derivation: Piecewise constant extraction

Basis: (∂_x)((((a+b (x^m)))^p)/((x^(m p)) (((-b-(a/(x^m))))^p)))==0

Rule: If  a+d==0 ∧ b+c==0 ∧ m+n==0 ∧ p+q==0

∫u (((a+b (x^m)))^p) (((c+d (x^n)))^q)dx  ⟶  (((((a+b (x^m)))^p) (((c+d (x^n)))^q))/(x^(m p)))∫u (x^(m p))dx

Program code:

Int[u_.*(a_.+b_.*x_^m_.)^p_.*(c_.+d_.*x_^n_.)^q_., x_Symbol] :=
  (a+b*x^m)^p*(c+d*x^n)^q/x^(m*p)*Int[u*x^(m*p),x] /;
FreeQ[{a,b,c,d,m,n,p,q},x] && EqQ[a+d,0] && EqQ[b+c,0] && EqQ[m+n,0] && EqQ[p+q,0]

2:  ∫u (((a+b (x^n)+c (x^(2n))))^p)dx  when  (b^2)-4 a c==0 ∧ p+(1/2)∈ℤ

Derivation: Piecewise constant extraction

Basis: If  (b^2)-4 a c==0 ∧ p-(1/2)∈ℤ, then (((a+b (x^n)+c (x^(2 n))))^p)==((Sqrt[a+b (x^n)+c (x^(2 n))])/((((4 c))^(p-(1/2)))(b+2 c (x^n))))(((b+2 c (x^n)))^(2p))

Basis: If  (b^2)-4 a c==0, then (∂_x)((Sqrt[a+b (x^n)+c (x^(2 n))])/(b+2 c (x^n)))==0

Rule: If  (b^2)-4 a c==0 ∧ p-(1/2)∈ℤ, then

∫u (((a+b (x^n)+c (x^(2 n))))^p)dx  ⟶  ((Sqrt[a+b (x^n)+c (x^(2 n))])/((((4 c))^(p-(1/2)))(b+2 c (x^n)))) ∫u(((b+2 c (x^n)))^(2p))dx

Program code:

Int[u_*(a_+b_.*x_^n_.+c_.*x_^n2_.)^p_, x_Symbol] :=
  Sqrt[a+b*x^n+c*x^(2*n)]/((4*c)^(p-1/2)*(b+2*c*x^n))*Int[u*(b+2*c*x^n)^(2*p),x] /;
FreeQ[{a,b,c,n,p},x] && EqQ[n2,2*n] && EqQ[b^2-4*a*c,0] && IntegerQ[p-1/2]

Substitution integration rules

1:  ∫F[(((a+b x))^(1/n)),x]dx  when  n∈ℤ

Derivation: Integration by substitution

Basis: If  n∈ℤ, then F[(((a+b x))^(1/n)),x]==(n/b)Subst[(x^(n-1)) F[x,-(a/b)+((x^n)/b)],x,(((a+b x))^(1/n))](∂_x)(((a+b x))^(1/n))

Rule: If  n∈ℤ, then

∫F[(((a+b x))^(1/n)),x]dx  ⟶  (n/b)Subst[∫(x^(n-1)) F[x,-(a/b)+((x^n)/b)]dx,x,(((a+b x))^(1/n))]

Program code:

If[TrueQ[$LoadShowSteps],

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfLinear[u,x]},
  ShowStep["","Int[F[(a+b*x)^(1/n),x],x]",
			"n/b*Subst[Int[x^(n-1)*F[x,-a/b+x^n/b],x],x,(a+b*x)^(1/n)]",Hold[
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])]]] /;
 Not[FalseQ[lst]]] /;
SimplifyFlag,

Int[u_,x_Symbol] :=
  With[{lst=SubstForFractionalPowerOfLinear[u,x]},
  lst[[2]]*lst[[4]]*Subst[Int[lst[[1]],x],x,lst[[3]]^(1/lst[[2]])] /;
 Not[FalseQ[lst]]]]

C:  ∫udx

Rule:

∫udx  ⟶  ∫udx

Program code:

Int[u_,x_] := CannotIntegrate[u,x]