a
    <bE+                     @   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 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   )	integratec                 C   s
   t | tS )N)
isinstancer   )n r   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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   Z
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u r0dS || ||  }}|jrR|jrR|S |jr\|ntj}|| }|jsx|jrt}	|j|j }
}|
r |r |dk r|dkrd}d}
nP|dk r|dkrd}
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rt|| 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 }qn||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 }qn||dkrt||}nftd|d t||d   t	||d   t|d |d tt||d  t	||d   |  }n||krt
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rt|||| | 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
    ZsincosNr   TFr      r    )r   Zrewritematchis_zeror   ZZeroZis_odd_ur   r
   r   subsr   r   abs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*   r4   r   r   r   r+   (  s     $r+   N)r    )Z
sympy.corer   r   r   r   r   r   r   Zsympy.functionsr	   r
   r   r   Z	integralsr   r   r   r%   r*   r)   r+   r   r   r   r   <module>   s   $

 _-