ó
~9­\c           @  sÂ   d  d l  m Z m Z d  d l m Z 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 d „  Z e d „  ƒ Z e d ƒ Z d d	 „ Z d
 „  Z d „  Z d S(   iÿÿÿÿ(   t   print_functiont   division(   t   range(   t   cacheitt   Dummyt   Net   Integert   Rationalt   St   Wild(   t   binomialt   sint   cost	   Piecewisec         C  s   t  |  t ƒ S(   N(   t
   isinstanceR   (   t   n(    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyt   _integer_instance   s    c         C  s‚   t  d d |  g ƒ} g  d D]$ } t  | d |  g d t g ƒ^ q \ } } t | |  ƒ | t | |  ƒ | } | | | | f S(   Nt   at   excludet   nmt
   properties(   R	   R   R   R   (   t   xR   t   sR   t   mt   pat(    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyt   _pat_sincos   s
    4&t   ut	   piecewisec         C  sC  d d l  m } t | ƒ \ } } } } |  j d ƒ }  |  j | ƒ } | d k rV d S| | | | } } | t j k r | t j k r | S| t j k r¢ | n t j }	 | | } | j sÇ | j r\t	 }
 | j | j } } | rŠ| rŠ| d k  r| d k rt
 } t } qŠ| d k  r:| d k r:t
 } t } qŠ| d k  rn| d k  rn| | k } | | k } qŠ| | k  } | | k  } n  | rÆd |
 d | d d |
 | } t | | ƒ } n; | r|
 | d |
 d | d d } t | | ƒ } n  | | |
 ƒ } | j |
 | ƒ } | d k rTt | | t | d ƒ f |	 t
 f ƒ S| | St | ƒ t | ƒ k } t | ƒ t | ƒ k } t j } | rš| d k r xí t d | d d ƒ D]: } | d | t | d | ƒ t | d | | ƒ 7} q¿Wqé| d k rt | | ƒ } qét d | d ƒ t | ƒ | d t | ƒ | d t | d | d ƒ t t | ƒ | d t | ƒ | d | ƒ } nO| rŸ| d k rxí t d | d d ƒ D]: } | d | t | d | ƒ t | d | | ƒ 7} qÄWqé| d k r#t | | ƒ } qét d | d ƒ t | ƒ | d t | ƒ | d t | d | d ƒ t t | ƒ | d t | ƒ | d | ƒ } nJ| | k rØ| t d d ƒ t d | ƒ | | ƒ } n| | k ré| d k  rmt d | d ƒ t | ƒ | d t | ƒ | d t | d | d ƒ | t | ƒ | d t | ƒ | d | ƒ } qét d | d ƒ t | ƒ | d t | ƒ | d t | d | d ƒ | t | ƒ | d t | ƒ | d | ƒ } n  | d k r+t | j | | | ƒ | t | d ƒ f |	 t
 f ƒ S| j | | | ƒ | S(	   s¢  Integrate f = Mul(trig) over x

       >>> from sympy import Symbol, sin, cos, tan, sec, csc, cot
       >>> 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)

       http://en.wikibooks.org/wiki/Calculus/Integration_techniques

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    iÿÿÿÿ(   t	   integratet   sincosNi    i   i   R   (   t   sympy.integrals.integralsR   R   t   rewritet   matcht   NoneR   t   Zerot   is_oddt   _ut   Truet   FalseR   R   t   subsR   R   t   absR   R
   t   _sin_pow_integrateR   t   trigintegratet   _cos_pow_integrate(   t   fR   t   condsR   R   R   R   R   t   Mt   zzR   t   n_t   m_t   fft   uut   fit   fxt   rest   i(    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyR*   !   s’    
		#"&	 44 44-44446c         C  sø   |  d k rn |  d k r# t  | ƒ St d |  ƒ t  | ƒ t | ƒ |  d t |  d |  ƒ t |  d | ƒ S|  d k  rð |  d k r t d t | ƒ | ƒ St d |  d ƒ t  | ƒ t | ƒ |  d t |  d |  d ƒ t |  d | ƒ S| Sd  S(   Ni    i   iÿÿÿÿi   (   R   R   R   R)   R*   (   R   R   (    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyR)   ù   s    (#,'c         C  s÷   |  d k rm |  d k r" t  | ƒ St d |  ƒ t  | ƒ t | ƒ |  d t |  d |  ƒ t |  d | ƒ S|  d k  rï |  d k rœ t d t | ƒ | ƒ St d |  d ƒ t  | ƒ t | ƒ |  d t |  d |  d ƒ t |  d | ƒ S| Sd  S(   Ni    i   i   iÿÿÿÿ(   R   R   R   R+   R*   (   R   R   (    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyR+   &  s    
(#,'N(   t
   __future__R    R   t   sympy.core.compatibilityR   t
   sympy.coreR   R   R   R   R   R   R	   t   sympy.functionsR
   R   R   R   R   R   R$   R*   R)   R+   (    (    (    s;   lib/python2.7/site-packages/sympy/integrals/trigonometry.pyt   <module>   s   4"	Ø	-