U
    ZÊ¹jK+  ã                   @   s†   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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Ú	PiecewiseÚAbsé   )Ú	integratec                 C   s
   t | tƒS )N)Ú
isinstancer   )Ún© r   ú[/var/www/html/bwave/python/venv/lib/python3.8/site-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   Ú
properties)r   r   )Ú.0Ús©Úxr   r   Ú
<listcomp>   s   ÿz_pat_sincos.<locals>.<listcomp>Únm)r   r
   r   )r   r   r   ÚmÚpatr   r   r   Ú_pat_sincos   s    
ÿ
 r    ÚuÚ	piecewisec                 C   sØ  t |ƒ\}}}}|  d¡} |  |¡}|dkr0dS || ||  }}|jrR|jrR|S |jr\|ntj}|| }|jsx|j�r¬t}	|j|j }
}|
�r |�r |dk r°|dkr°d}d}
nP|dk rÊ|dkrÊd}
d}n6|dk rî|dk rî||k}
||k }n||k }
||k  }|
�r6d|	d  |d d   |	|  }t|| ƒ}n2|�rh|	| d|	d  |d d   }t	|| ƒ}t
||	ƒ}| |	|¡}|dk�r¤t|| t|dƒf|dfƒS || S t|ƒt|ƒk}
t|ƒt|ƒk}tj}|
�r¬|dk�r,td|d d ƒD ]4}|tj| t|d |ƒ t|d|  |ƒ 7 }�qôn||dk�rBt||ƒ}nftd	|d ƒt|ƒ|d   t	|ƒ|d   t|d |d ƒtt|ƒ|d  t	|ƒ|d   |ƒ  }�næ|�r†|dk�rtd|d d ƒD ]4}|tj| t|d |ƒ t|d|  |ƒ 7 }�qÎn||dk�rt||ƒ}nftd|d ƒt|ƒ|d   t	|ƒ|d   t|d |d ƒtt|ƒ|d  t	|ƒ|d   |ƒ  }�n||k�r®t
t	d| ƒtj | |ƒ}nä|| k�r’|dk �r,td|d ƒt|ƒ|d   t	|ƒ|d   t|d |d ƒt
t|ƒ|d  t	|ƒ|d   |ƒ  }nftd	|d ƒt|ƒ|d   t	|ƒ|d   t|d |d ƒt
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] https://en.wikibooks.org/wiki/Calculus/Integration_techniques

    See Also
    ========

    sympy.integrals.integrals.Integral.doit
    sympy.integrals.integrals.Integral
    ZsincosNr   TFr   é   r"   éÿÿÿÿ)r    ZrewriteÚmatchÚis_zeror   ZZeroZis_oddÚ_ur   r
   r   Úsubsr   r   r   ÚrangeZNegativeOner	   Ú_sin_pow_integrater   ÚtrigintegrateÚ_cos_pow_integrateZHalf)Úfr   Zcondsr   r   r   r   ÚMÚzzr!   Zn_Zm_ÚffÚuuÚfiZfxÚresÚir   r   r   r+      s¤    "


" 


ÿ
,$ÿÿ
ÿ
,$ÿÿ

,$ÿÿ,$ÿÿ
(r+   c                 C   sÈ   | dkrX| dkrt |ƒ S td| ƒt |ƒ t|ƒ| d   t| d | ƒt| d |ƒ  S | dk rÀ| dkrztdt|ƒ |ƒS td| d ƒt |ƒ t|ƒ| d   t| d | d ƒt| d |ƒ  S |S d S )Nr   r   r$   r#   )r   r   r
   r*   r+   ©r   r   r   r   r   r*   û   s    
 ÿ$ÿr*   c                 C   sÆ   | dkrV| dkrt |ƒS td| ƒt |ƒ t|ƒ| d   t| d | ƒt| d |ƒ  S | dk r¾| dkrxtdt|ƒ |ƒS td| d ƒt |ƒ t|ƒ| d   t| d | d ƒt| d |ƒ  S |S d S )Nr   r   r#   r$   )r
   r   r   r,   r+   r5   r   r   r   r,   (  s     ÿ$ÿr,   N)r"   )Z
sympy.corer   r   r   r   r   r   r   Zsympy.functionsr	   r
   r   r   r   Z	integralsr   r   r    r'   r+   r*   r,   r   r   r   r   Ú<module>   s   $

 _-