o
    8VaH+                     @   sv   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d Zedd ZedZdd	d
Zdd Zdd ZdS )    )cacheitDummyNeIntegerRationalSWild)binomialsincos	Piecewisec                 C   s
   t | tS )N)
isinstancer   )n r   >/usr/lib/python3/dist-packages/sympy/integrals/trigonometry.py_integer_instance   s   
r   c                    sP   t d gd} fdddD \}}t|  | t|  |  }||||fS )Na)excludec                    s   g | ]}t | gtgd qS ))r   Z
properties)r   r   ).0sxr   r   
<listcomp>   s    z_pat_sincos.<locals>.<listcomp>Znm)r   r
   r   )r   r   r   mpatr   r   r   _pat_sincos   s   

 r   u	piecewisec                 C   s  ddl m} t|\}}}}| d} | |}|du rdS || || }}|jr/|jr/|S |jr4|ntj}	|| }|jsA|jrt	}
|j|j}}|r|r|dk r[|dkr[d}d}n(|dk rh|dkrhd}d}n|dk rz|dk rz||k}||k }n	||k }||k  }|rd|
d  |d d   |
|  }t
|| }n|r|
| d|
d  |d d   }t|| }|||
}||
|}|d	krt|| t|df|	dfS || S t|t|k}t|t|k}tj}|rU|dkrtd|d d D ]}|d
| t|d | t|d|  | 7 }qn1|dkr!t||}n%td
|d t
||d   t||d   t|d |d tt
||d  t||d   |  }n|r|dkrtd|d d D ]}|d
| t|d | t|d|  | 7 }qfn|dkrt||}ntd|d t
||d   t||d   t|d |d tt
||d  t||d   |  }n||kr|td| tj | |}nr|| krF|dk rtd|d t
||d   t||d   t|d |d |t
||d  t||d   |  }n3td
|d t
||d   t||d   t|d |d |t
||d  t||d   |  }|d	kr_t|||| | t|df|	dfS |||| | 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] http://en.wikibooks.org/wiki/Calculus/Integration_techniques

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    r   )	integrateZsincosNTF      r   )Zsympy.integrals.integralsr   r   ZrewritematchZis_zeror   ZZeroZis_odd_ur   r
   Zsubsr   r   absranger	   _sin_pow_integrater   trigintegrate_cos_pow_integrateZHalf)fr   Zcondsr   r   r   r   r   MZzzr   Zn_Zm_ZffuufiZfxresir   r   r   r'      s   "


" 


,$


,$

,$,$
(r'   c                 C   s   | dkr,| dkrt | S td| t | t|| d   t| d | t| d |  S | dk r`| dkr=tdt| |S td| d t | t|| d   t| d | d t| d |  S |S )Nr   r   r!   r    )r   r   r
   r&   r'   r   r   r   r   r   r&      s   
 $r&   c                 C   s   | dkr+| dkrt |S td| t | t|| d   t| d | t| d |  S | dk r_| dkr<tdt| |S td| d t | t|| d   t| d | d t| d |  S |S )Nr   r   r    r!   )r
   r   r   r(   r'   r/   r   r   r   r(   (  s    $r(   N)r   )Z
sympy.corer   r   r   r   r   r   r   Zsympy.functionsr	   r
   r   r   r   r   r#   r'   r&   r(   r   r   r   r   <module>   s   $ 

 `-