Rules for integrands of the form(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)

1.  ∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx

If the control variable $UseGamma is True, antiderivatives of expressions of the form (((d+e x))^m)((((F^(c(a+b x)))))^n) will be much more compactly expressed in terms of the Gamma function instead of elementary functions.

$UseGamma=False;

1:  ∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx  when  m>0 ∧ 2m∈ℤ

Derivation: Integration by parts

Basis: (((b (F^(g (e+f x)))))^n)==(∂_x)((((b (F^(g (e+f x)))))^n)/(f g n Log[F]))

Rule: If  m>0 ∧ 2m∈ℤ, then

∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx  ⟶  (((((c+d x))^m) (((b (F^(g (e+f x)))))^n))/(f g n Log[F]))-((d m)/(f g n Log[F]))∫(((c+d x))^(m-1)) (((b (F^(g (e+f x)))))^n)dx

Program code:

Int[(c_.+d_.*x_)^m_.*(b_.*F_^(g_.*(e_.+f_.*x_)))^n_.,x_Symbol] :=
  (c+d*x)^m*(b*F^(g*(e+f*x)))^n/(f*g*n*Log[F]) - 
  d*m/(f*g*n*Log[F])*Int[(c+d*x)^(m-1)*(b*F^(g*(e+f*x)))^n,x] /;
FreeQ[{F,b,c,d,e,f,g,n},x] && GtQ[m,0] && IntegerQ[2*m] && Not[TrueQ[$UseGamma]]

2:  ∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx  when  m<-1 ∧ 2m∈ℤ

Derivation: Integration by parts

Basis: (((c+d x))^m)==(∂_x)((((c+d x))^(m+1))/(d(m+1)))

Rule: If  m<-1 ∧ 2m∈ℤ, then

∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx  ⟶  (((((c+d x))^(m+1)) (((b (F^(g (e+f x)))))^n))/(d(m+1)))-((f g n Log[F])/(d(m+1)))∫(((c+d x))^(m+1)) (((b (F^(g (e+f x)))))^n)dx

Program code:

Int[(c_.+d_.*x_)^m_*(b_.*F_^(g_.*(e_.+f_.*x_)))^n_.,x_Symbol] :=
  (c+d*x)^(m+1)*(b*F^(g*(e+f*x)))^n/(d*(m+1)) - 
  f*g*n*Log[F]/(d*(m+1))*Int[(c+d*x)^(m+1)*(b*F^(g*(e+f*x)))^n,x] /;
FreeQ[{F,b,c,d,e,f,g,n},x] && LtQ[m,-1] && IntegerQ[2*m] && Not[TrueQ[$UseGamma]]

3.  ∫(((c+d x))^m) (F^(g (e+f x)))dx

1.  ∫(((c+d x))^m) (F^(g (e+f x)))dx  when  m∈ℤ

1:  ∫((F^(g (e+f x)))/(c+d x))dx

Basis: ExpIntegralEi'[z]==((e^z)/z)

Rule:

∫((F^(g (e+f x)))/(c+d x))dx  ⟶  (1/d)(F^(g (e-((c f)/d))))ExpIntegralEi[((f g(c+d x) Log[F])/d)]

Program code:

Int[F_^(g_.*(e_.+f_.*x_))/(c_.+d_.*x_),x_Symbol] :=
  F^(g*(e-c*f/d))/d*ExpIntegralEi[f*g*(c+d*x)*Log[F]/d] /;
FreeQ[{F,c,d,e,f,g},x] && Not[TrueQ[$UseGamma]]

2:  ∫(((c+d x))^m)(F^(g (e+f x)))dx  when  m∈ℤ

Rule: If  m∈ℤ, then

∫(((c+d x))^m)(F^(g (e+f x)))dx  ⟶  (((((-d))^m) (F^(g (e-((c f)/d)))))/((f^(m+1)) (g^(m+1))((Log[F])^(m+1))))Gamma[m+1,-((f g Log[F])/d) (c+d x)]

Program code:

Int[(c_.+d_.*x_)^m_.*F_^(g_.*(e_.+f_.*x_)),x_Symbol] :=
  (-d)^m*F^(g*(e-c*f/d))/(f^(m+1)*g^(m+1)*Log[F]^(m+1))*Gamma[m+1,-f*g*Log[F]/d*(c+d*x)] /;
FreeQ[{F,c,d,e,f,g},x] && IntegerQ[m]

2.  ∫(((c+d x))^m) (F^(g (e+f x)))dx  when  m∉ℤ

1:  ∫((F^(g (e+f x)))/(Sqrt[c+d x]))dx

Derivation: Integration by substitution

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

Rule:

∫((F^(g (e+f x)))/(Sqrt[c+d x]))dx  ⟶  (2/d) Subst[∫ (F^(g (e-((c f)/d))+((f g (x^2))/d)))dx,x,(Sqrt[c+d x])]

Program code:

Int[F_^(g_.*(e_.+f_.*x_))/Sqrt[c_.+d_.*x_],x_Symbol] :=
  2/d*Subst[Int[F^(g*(e-c*f/d)+f*g*x^2/d),x],x,Sqrt[c+d*x]] /;
FreeQ[{F,c,d,e,f,g},x] && Not[TrueQ[$UseGamma]]

2:  ∫(((c+d x))^m)(F^(g (e+f x)))dx  when  m∉ℤ

Rule: If  2m∉ℤ, then

∫(((c+d x))^m)(F^(g (e+f x)))dx  ⟶  -(((F^(g (e-((c f)/d)))) (((c+d x))^(FracPart[m])))/(d (((-((f g Log[F])/d)))^(IntPart[m]+1)) (((-((f g Log[F] (c+d x))/d)))^(FracPart[m]))))Gamma[m+1,-((f g Log[F])/d) (c+d x)]

Program code:

Int[(c_.+d_.*x_)^m_*F_^(g_.*(e_.+f_.*x_)),x_Symbol] :=
  -F^(g*(e-c*f/d))*(c+d*x)^FracPart[m]/(d*(-f*g*Log[F]/d)^(IntPart[m]+1)*(-f*g*Log[F]*(c+d*x)/d)^FracPart[m])*
    Gamma[m+1,(-f*g*Log[F]/d)*(c+d*x)] /;
FreeQ[{F,c,d,e,f,g,m},x] && Not[IntegerQ[m]]

4:  ∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx

Derivation: Piecewise constant extraction

Basis: (∂_x)((((b (F^(g (e+f x)))))^n)/(F^(g n (e+f x))))==0

Rule:

∫(((c+d x))^m) (((b (F^(g (e+f x)))))^n)dx  ⟶  ((((b (F^(g (e+f x)))))^n)/(F^(g n (e+f x)))) ∫(((c+d x))^m) (F^(g n (e+f x)))dx

Program code:

Int[(c_.+d_.*x_)^m_.*(b_.*F_^(g_.*(e_.+f_.*x_)))^n_,x_Symbol] :=
  (b*F^(g*(e+f*x)))^n/F^(g*n*(e+f*x))*Int[(c+d*x)^m*F^(g*n*(e+f*x)),x] /;
FreeQ[{F,b,c,d,e,f,g,m,n},x]

2:  ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  when  p∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

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

∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  ⟶  ∫(((c+d x))^m) ExpandIntegrand[(((a+b ((((F^(g(e+f x)))))^n)))^p),x]dx

Program code:

Int[(c_.+d_.*x_)^m_.*(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.)^p_.,x_Symbol] :=
  Int[ExpandIntegrand[(c+d*x)^m,(a+b*(F^(g*(e+f*x)))^n)^p,x],x] /;
FreeQ[{F,a,b,c,d,e,f,g,m,n},x] && IGtQ[p,0]

3:  ∫((((c+d x))^m)/(a+b ((((F^(g(e+f x)))))^n)))dx  when  m∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Basis: (1/(a+b z))==(1/a)-((b z)/(a (a+b z)))

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

∫((((c+d x))^m)/(a+b ((((F^(g(e+f x)))))^n)))dx  ⟶  ((((c+d x))^(m+1))/(a d (m+1)))-(b/a)∫(((((c+d x))^m) ((((F^(g(e+f x)))))^n))/(a+b ((((F^(g(e+f x)))))^n)))dx

Program code:

Int[(c_.+d_.*x_)^m_./(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.),x_Symbol] :=
  (c+d*x)^(m+1)/(a*d*(m+1)) - b/a*Int[(c+d*x)^m*(F^(g*(e+f*x)))^n/(a+b*(F^(g*(e+f*x)))^n),x] /;
FreeQ[{F,a,b,c,d,e,f,g,n},x] && IGtQ[m,0]

x:  ∫((((c+d x))^m)/(a+b ((((F^(g(e+f x)))))^n)))dx  when  m∈(SuperPlus[ℤ])

Derivation: Integration by parts

Basis: (1/(a+b ((((F^(g(e+f x)))))^n)))==-(∂_x)((Log[1+(a/(b ((((F^(g(e+f x)))))^n)))])/(a f g n Log[F]))

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

∫((((c+d x))^m)/(a+b ((((F^(g(e+f x)))))^n)))dx  ⟶  -((((c+d x))^m)/(a f g n Log[F])) Log[1+(a/(b ((((F^(g(e+f x)))))^n)))]+((d m)/(a f g n Log[F]))∫(((c+d x))^(m-1)) Log[1+(a/(b ((((F^(g(e+f x)))))^n)))]dx

Program code:

(* Int[(c_.+d_.*x_)^m_./(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.),x_Symbol] :=
  -(c+d*x)^m/(a*f*g*n*Log[F])*Log[1+a/(b*(F^(g*(e+f*x)))^n)] + 
  d*m/(a*f*g*n*Log[F])*Int[(c+d*x)^(m-1)*Log[1+a/(b*(F^(g*(e+f*x)))^n)],x] /;
FreeQ[{F,a,b,c,d,e,f,g,n},x] && IGtQ[m,0] *)

4:  ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  when  p∈(SuperMinus[ℤ])∧ m∈(SuperPlus[ℤ])

Derivation: Algebraic expansion

Basis: (((a+b z))^p)==((((a+b z))^(p+1))/a)-((b z (((a+b z))^p))/a)

Rule: If  p∈(SuperMinus[ℤ])∧ m∈(SuperPlus[ℤ]), then

∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  ⟶  
(1/a) ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^(p+1))dx-(b/a) ∫(((c+d x))^m) ((((F^(g(e+f x)))))^n) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx

Program code:

Int[(c_.+d_.*x_)^m_.*(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.)^p_,x_Symbol] :=
  1/a*Int[(c+d*x)^m*(a+b*(F^(g*(e+f*x)))^n)^(p+1),x] - 
  b/a*Int[(c+d*x)^m*(F^(g*(e+f*x)))^n*(a+b*(F^(g*(e+f*x)))^n)^p,x] /;
FreeQ[{F,a,b,c,d,e,f,g,n},x] && ILtQ[p,0] && IGtQ[m,0]

5:  ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  when  m∈(SuperPlus[ℤ])∧ p<-1

Derivation: Integration by parts

Rule: If  m∈(SuperPlus[ℤ])∧ p<-1, let u=∫(((a+b ((((F^(g(e+f x)))))^n)))^p)dx, then

∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  ⟶  u (((c+d x))^m)-d m∫u (((c+d x))^(m-1))dx

Program code:

Int[(c_.+d_.*x_)^m_.*(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.)^p_,x_Symbol] :=
  With[{u=IntHide[(a+b*(F^(g*(e+f*x)))^n)^p,x]},
  Dist[(c+d*x)^m,u,x] - d*m*Int[(c+d*x)^(m-1)*u,x]] /;
FreeQ[{F,a,b,c,d,e,f,g,n},x] && IGtQ[m,0] && LtQ[p,-1]

6.  ∫(u^m) (((a+b ((((F^(g v))))^n)))^p)dx  when  v==e+f x ∧ u==(((c+d x))^q)

1:  ∫(u^m) (((a+b ((((F^(g v))))^n)))^p)dx  when  v==e+f x ∧ u==(((c+d x))^q) ∧ m∈ℤ

Derivation: Algebraic normalization

Rule: If  v==e+f x ∧ u==(((c+d x))^q) ∧ m∈ℤ, then

∫(u^m) (((a+b ((((F^(g v))))^n)))^p)dx  ⟶  ∫(((c+d x))^(m q)) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx

Program code:

Int[u_^m_.*(a_.+b_.*(F_^(g_.*v_))^n_.)^p_.,x_Symbol] :=
  Int[NormalizePowerOfLinear[u,x]^m*(a+b*(F^(g*ExpandToSum[v,x]))^n)^p,x] /;
FreeQ[{F,a,b,g,n,p},x] && LinearQ[v,x] && PowerOfLinearQ[u,x] && Not[LinearMatchQ[v,x] && PowerOfLinearMatchQ[u,x]] && IntegerQ[m]

2:  ∫(u^m) (((a+b ((((F^(g v))))^n)))^p)dx  when  v==e+f x ∧ u==(((c+d x))^q) ∧ m∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)(((((((c+d x))^q)))^m)/(((c+d x))^(m q)))==0

Rule: If  v==e+f x ∧ u==(((c+d x))^q) ∧ m∉ℤ, then

∫(u^m) (((a+b ((((F^(g v))))^n)))^p)dx  ⟶  (((((((c+d x))^q)))^m)/(((c+d x))^(m q)))∫(((c+d x))^(m q)) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx

Program code:

Int[u_^m_.*(a_.+b_.*(F_^(g_.*v_))^n_.)^p_.,x_Symbol] :=
  Module[{uu=NormalizePowerOfLinear[u,x],z},
  z=If[PowerQ[uu] && FreeQ[uu[[2]],x], uu[[1]]^(m*uu[[2]]), uu^m];
  uu^m/z*Int[z*(a+b*(F^(g*ExpandToSum[v,x]))^n)^p,x]] /; 
FreeQ[{F,a,b,g,m,n,p},x] && LinearQ[v,x] && PowerOfLinearQ[u,x] && Not[LinearMatchQ[v,x] && PowerOfLinearMatchQ[u,x]] && 
  Not[IntegerQ[m]]

X:  ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx

Rule:

∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p)dx  ⟶  ∫(((c+d x))^m) (((a+b ((((F^(g(e+f x)))))^n)))^p) dx

Program code:

Int[(c_.+d_.*x_)^m_.*(a_+b_.*(F_^(g_.*(e_.+f_.*x_)))^n_.)^p_.,x_Symbol] :=
  Unintegrable[(c+d*x)^m*(a+b*(F^(g*(e+f*x)))^n)^p,x] /;
FreeQ[{a,b,c,d,e,f,g,m,n,p},x]