
    MZdK+                         d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZ ddlmZ d Zed        Z ed      ZddZd	 Zd
 Zy)    )cacheitDummyNeIntegerRationalSWild)binomialsincos	PiecewiseAbs   )	integratec                 "    t        | t              S )N)
isinstancer   )ns    >/usr/lib/python3/dist-packages/sympy/integrals/trigonometry.py_integer_instancer      s    a!!    c                     t        d| g      }dD cg c]  }t        || gt        g       c}\  }}t        || z        |z  t        || z        |z  z  }||||fS c c}w )Na)excludenm)r   
properties)r	   r   r   r   )xr   sr   mpats         r   _pat_sincosr       sp    S1#A QC->,?@ DAq
ac(A+AaC!
#C1a<s   Auc                  
   t        |      \  }}}}| j                  d      } | j                  |      }|y||   ||   }}|j                  r|j                  r|S |j                  r|nt        j
                  }||   }|j                  s|j                  rt        }	|j                  |j                  }}
|
rA|r?|dk  r
|dkD  rd}d}
n0|dk  r
|dkD  rd}
d}n!|dk  r|dk  r||kD  }
||kD   }n||k  }
||k   }|
r'd|	dz  z
  |dz
  dz  z   |	|z  z  }t        ||z        }n'|r%|	|z  d|	dz  z
  |dz
  dz  z  z  }t        ||z        }t        |	      }|j                  |	      }|dk(  rt        ||z  t        |d      f|df      S ||z  S t        |      t        |      kD  }
t        |      t        |      kD  }t        j
                  }|
r|dkD  rRt        d|dz  dz         D ];  }|t        j                   |z  t#        |dz  |      z  t%        |d|z  z   |      z  z  }= n|dk(  rt%        ||      }n~t'        d	|dz         t        |      |dz   z  z  t        |      |dz
  z  z  t'        |dz
  |dz         t)        t        |      |dz   z  t        |      |dz
  z  z  |      z  z   }n|r|dkD  rRt        d|dz  dz         D ];  }|t        j                   |z  t#        |dz  |      z  t+        |d|z  z   |      z  z  }= n|dk(  rt+        ||      }nt'        d|dz         t        |      |dz
  z  z  t        |      |dz   z  z  t'        |dz
  |dz         t)        t        |      |dz
  z  t        |      |dz   z  z  |      z  z   }n&||k(  r-t        t        d|z        t        j,                  z  |z  |      }n|| k(  r|dk  rut'        d|dz         t        |      |dz
  z  z  t        |      |dz   z  z  t'        |dz
  |dz         t        t        |      |dz
  z  t        |      |dz   z  z  |      z  z   }ntt'        d	|dz         t        |      |dz   z  z  t        |      |dz
  z  z  t'        |dz
  |dz         t        t        |      |dz   z  t        |      |dz
  z  z  |      z  z   }|dk(  r0t        |j                  |||z        |z  t        |d      f|df      S |j                  |||z        |z  S )
a  
    Integrate f = Mul(trig) over x.

    Examples
    ========

    >>> from sympy import sin, cos, tan, sec
    >>> from sympy.integrals.trigonometry import trigintegrate
    >>> from sympy.abc import x

    >>> trigintegrate(sin(x)*cos(x), x)
    sin(x)**2/2

    >>> trigintegrate(sin(x)**2, x)
    x/2 - sin(x)*cos(x)/2

    >>> trigintegrate(tan(x)*sec(x), x)
    1/cos(x)

    >>> trigintegrate(sin(x)*tan(x), x)
    -log(sin(x) - 1)/2 + log(sin(x) + 1)/2 - sin(x)

    References
    ==========

    .. [1] https://en.wikibooks.org/wiki/Calculus/Integration_techniques

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    sincosNr   TFr      	piecewise)r    rewritematchis_zeror   Zerois_odd_ur   r   r   subsr   r   r   rangeNegativeOner
   _sin_pow_integrater   trigintegrate_cos_pow_integrateHalf)fr   condsr   r   r   r   Mzzr!   n_m_ffuufifxresis                     r   r1   r1      s]   D q>LCAq			(A	AyQ41qAyyQYYiiQVVB	!Axx188188B " 1uQQ1q5 a%AEUa%[ !ea%[ q!t8Aqy))AqD0BQqSB AQTa!eQY//BQqSBr1WWQ^Kb1fbAh/"d<<Av" a&3q6/B
a&3q6/B
&&C	 q51adQh' 8q(8AqD!+<<*1qs7A67 88 !V$Q*C& BA&Q!a%83q6AE?JAE1q5) Q!a%Q!a%!@!DEEC 
 q5 1adQh' 8q(8AqD!+<<*1qs7A67 88 !V %Q*C& Aq1u%AQ7AQGAE1q5) Q!a%Q!a%!@!DEEC
 6S1Xaff_q0!4CA2g1u
  1q5)CFQUO;c!fq1uoMAq1u- Q!a%3q6AE?!BAFGG  AE*SVa!e_<s1vANAq1u- Q!a%Q!a%!@!DEE #((1ac*Q.1a9B:FF88Aqsar   c                    | dkD  r[| dk(  rt        |       S t        d|       t        |      z  t        |      | dz
  z  z  t        | dz
  |       t        | dz
  |      z  z   S | dk  rm| dk(  rt	        dt        |      z  |      S t        d| dz         t        |      z  t        |      | dz   z  z  t        | dz   | dz         t        | dz   |      z  z   S |S )Nr   r   r&   r$   )r   r   r   r0   r1   r   r   s     r   r0   r0      s    1u6F7N Q#a&(3q6AE?:Q"%7Aq%AAB 	C 	1u7 !3q61-- AE"SV+c!fq1uo=QA&);AE1)EEF 	G r   c                    | dkD  rZ| dk(  rt        |      S t        d|       t        |      z  t        |      | dz
  z  z  t        | dz
  |       t        | dz
  |      z  z   S | dk  rm| dk(  rt	        dt        |      z  |      S t        d| dz         t        |      z  t        |      | dz   z  z  t        | dz   | dz         t        | dz   |      z  z   S |S )Nr   r   r$   r&   )r   r   r   r2   r1   rA   s     r   r2   r2   (  s    1u6q6M AQ'#a&1q5/9Q"%7Aq%AAB 	C 	1u7 3q61-- QU#c!f,s1vA>QA&);AE1)EEF 	G
 r   N)r%   )
sympy.corer   r   r   r   r   r   r	   sympy.functionsr
   r   r   r   r   	integralsr   r   r    r,   r1   r0   r2    r   r   <module>rG      sM    E E E > >  " 	 	 3Z[ |*Z'r   