U
    L?hS                    @   s8  d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d d	lmZmZmZ d d
l m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 dd Z6edd Z7edd Z8edd Z9G dd deZ:dd Z;G dd de:Z<G dd de:Z=G dd  d e:Z>G d!d" d"e:Z?G d#d$ d$e:Z@G d%d& d&e@ZAG d'd( d(e@ZBG d)d* d*eZCG d+d, d,eCZDG d-d. d.eCZEG d/d0 d0eCZFG d1d2 d2eCZGG d3d4 d4eCZHG d5d6 d6eCZId7S )8    )Ssympifycacheit)Add)FunctionArgumentIndexError)fuzzy_or	fuzzy_and	fuzzy_not	FuzzyBool)IpiRational)Dummy)binomial	factorialRisingFactorial)	bernoullieulernC)Absimre)explogmatch_real_imag)floor)sqrt)acosacotasinatancoscotcscsecsintan_imaginary_unit_as_coefficient)symmetric_polyc                 C   s   |  dd | tD S )Nc                 S   s   i | ]}|| tqS  )rewriter   ).0hr*   r*   W/var/www/html/venv/lib/python3.8/site-packages/sympy/functions/elementary/hyperbolic.py
<dictcomp>   s    z/_rewrite_hyperbolics_as_exp.<locals>.<dictcomp>)ZxreplaceZatomsHyperbolicFunction)exprr*   r*   r.   _rewrite_hyperbolics_as_exp   s    
r2   c                +   C   s  t tt dtd  t  tt  dtd  tjtd tddttdd tdd td td d ttdd dtd td dtd ttdd tdd td td d ttdd tdd td ttdd	 tdd  td ttd
d	 tdtd d td tdtd  d ttd
d tdtd d ttdd tdtd  d ttdd dtd dtd  td	 dtd  dtd  ttdd	 tdd d td tdd  d ttdd iS )N                              )r   r   r   r   Halfr   r   r*   r*   r*   r.   _acosh_table   sR        
  
 
 
            r?   c                   C   sB  t t d t tdtd  t d t dtd  t d t d tdtd  t d t d t d t tddtd   t d t td t d t tdd  d	t d t d td
 t d
 t d tdtd  d	t d t tddtd   dt d t tdtd  dt d tdt  tdtd d  iS )Nr4   r8   r;   r3   r9   
   r:   r7   r5   )r   r   r   r   r   r*   r*   r*   r.   _acsch_table3   s6          
  
  
 
 
 rD   c                5   C   sN  t tt  d  tdtd  t  tt  d tdtd  tdtd td tdtd dt d tddtd  td tddtd   dt d dtdtd  td	 d
tdtd  dt d	 dtd td d
td dt d tdd td dtd dt d tdtd td dt d tddtd  dt d tddtd   dt d tdtd td dt d tddtd  dt d	 tddtd   dt d	 dtd dt d dtd dt d tdtd dt d td td dt d t tj t t  d t tj tt  d iS )Nr4   r3   r8   r;   r=   r9   r@   	   r:   rB   r<   r5   r7   r6   )r   r   r   r   r   InfinityNegativeInfinityr*   r*   r*   r.   _asech_tableF   sj        
  
  

 
 

 
 
  
 
 
  
 
 

 

 
 
 
  
rH   c                   @   s   e Zd ZdZdZdS )r0   ze
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__Z
unbranchedr*   r*   r*   r.   r0   j   s   	r0   c                 C   s|   t t }t| D ]<}||kr*tj} qZq|jr| \}}||kr|jr qZq| tj	fS |tj
 }|| }| ||  |fS )a  
    Split ARG into two parts, a "rest" and a multiple of $I\pi$.
    This assumes ARG to be an ``Add``.
    The multiple of $I\pi$ returned in the second position is always a ``Rational``.

    Examples
    ========

    >>> from sympy.functions.elementary.hyperbolic import _peeloff_ipi as peel
    >>> from sympy import pi, I
    >>> from sympy.abc import x, y
    >>> peel(x + I*pi/2)
    (x, 1/2)
    >>> peel(x + I*2*pi/3 + I*pi*y)
    (x + I*pi*y + I*pi/6, 1/2)
    )r   r   r   Z	make_argsr   Oneis_Mulas_two_termsZis_RationalZeror>   )argZipiaKpm1m2r*   r*   r.   _peeloff_ipiw   s    

rW   c                   @   s   e Zd ZdZd4ddZd5ddZedd Zee	d	d
 Z
dd Zd6ddZd7ddZd8ddZd9ddZdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd:d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS );sinha  
    ``sinh(x)`` is the hyperbolic sine of ``x``.

    The hyperbolic sine function is $\frac{e^x - e^{-x}}{2}$.

    Examples
    ========

    >>> from sympy import sinh
    >>> from sympy.abc import x
    >>> sinh(x)
    sinh(x)

    See Also
    ========

    cosh, tanh, asinh
    r3   c                 C   s$   |dkrt | jd S t| |dS )z@
        Returns the first derivative of this function.
        r3   r   N)coshargsr   selfargindexr*   r*   r.   fdiff   s    z
sinh.fdiffc                 C   s   t S z7
        Returns the inverse of this function.
        asinhr[   r*   r*   r.   inverse   s    zsinh.inversec                 C   s  |j rX|tjkrtjS |tjkr&tjS |tjkr6tjS |jrBtjS |jrT| |  S n.|tjkrhtjS t	|}|d k	rt
t| S | r| |  S |jrt|\}}|r|t t
 }t|t| t|t|  S |jrtjS |jtk r|jd S |jtkr*|jd }t|d t|d  S |jtkrT|jd }|td|d   S |jtkr|jd }dt|d t|d   S d S Nr   r3   r4   )	is_Numberr   NaNrF   rG   is_zerorP   is_negativeComplexInfinityr(   r   r&   could_extract_minus_signis_AddrW   r   rX   rY   funcra   rZ   acoshr   atanhacoth)clsrQ   i_coeffxmr*   r*   r.   eval   sH    



 



z	sinh.evalc                 G   sb   | dk s| d dkrt jS t|}t|dkrN|d }||d  | | d   S ||  t|  S dS )zG
        Returns the next term in the Taylor series expansion.
        r   r4   rB   r3   Nr   rP   r   lenr   nrq   previous_termsrT   r*   r*   r.   taylor_term   s    zsinh.taylor_termc                 C   s   |  | jd  S Nr   rk   rZ   	conjugater\   r*   r*   r.   _eval_conjugate   s    zsinh._eval_conjugateTc                 K   s   | j d jr6|r,d|d< | j|f|tjfS | tjfS |rX| j d j|f| \}}n| j d  \}}t|t| t|t	| fS )z@
        Returns this function as a complex coordinate.
        r   Fcomplex
rZ   is_extended_realexpandr   rP   as_real_imagrX   r"   rY   r&   r\   deephintsr   r   r*   r*   r.   r     s    
zsinh.as_real_imagc                 K   s$   | j f d|i|\}}||t  S Nr   r   r   r\   r   r   Zre_partZim_partr*   r*   r.   _eval_expand_complex  s    zsinh._eval_expand_complexc                 K   s   |r| j d j|f|}n
| j d }d }|jr<| \}}n:|jdd\}}|tjk	rv|jrv|tjk	rv|}|d | }|d k	rt|t	| t|t	|  jddS t|S Nr   TZrationalr3   )Ztrig)
rZ   r   rj   rO   as_coeff_Mulr   rM   
is_IntegerrX   rY   r\   r   r   rQ   rq   ycoefftermsr*   r*   r.   _eval_expand_trig  s    
(zsinh._eval_expand_trigNc                 K   s   t |t |  d S Nr4   r   r\   rQ   limitvarkwargsr*   r*   r.   _eval_rewrite_as_tractable&  s    zsinh._eval_rewrite_as_tractablec                 K   s   t |t |  d S r   r   r\   rQ   r   r*   r*   r.   _eval_rewrite_as_exp)  s    zsinh._eval_rewrite_as_expc                 K   s   t  tt |  S Nr   r&   r   r*   r*   r.   _eval_rewrite_as_sin,  s    zsinh._eval_rewrite_as_sinc                 K   s   t  tt |  S r   r   r$   r   r*   r*   r.   _eval_rewrite_as_csc/  s    zsinh._eval_rewrite_as_cscc                 K   s   t  t|tt  d   S r   r   rY   r   r   r*   r*   r.   _eval_rewrite_as_cosh2  s    zsinh._eval_rewrite_as_coshc                 K   s"   t tj| }d| d|d   S Nr4   r3   tanhr   r>   r\   rQ   r   Z	tanh_halfr*   r*   r.   _eval_rewrite_as_tanh5  s    zsinh._eval_rewrite_as_tanhc                 K   s"   t tj| }d| |d d  S r   cothr   r>   r\   rQ   r   Z	coth_halfr*   r*   r.   _eval_rewrite_as_coth9  s    zsinh._eval_rewrite_as_cothc                 K   s   dt | S Nr3   cschr   r*   r*   r.   _eval_rewrite_as_csch=  s    zsinh._eval_rewrite_as_cschr   c                 C   sh   | j d j|||d}||d}|tjkrF|j|d|jr>dndd}|jrP|S |jr`| 	|S | S d S Nr   logxcdir-+)dir)
rZ   as_leading_termsubsr   re   limitrg   rf   	is_finiterk   r\   rq   r   r   rQ   arg0r*   r*   r.   _eval_as_leading_term@  s    

zsinh._eval_as_leading_termc                 C   s*   | j d }|jrdS | \}}|t jS Nr   TrZ   is_realr   r   rf   r\   rQ   r   r   r*   r*   r.   _eval_is_realM  s
    
zsinh._eval_is_realc                 C   s   | j d jrdS d S r   rZ   r   r}   r*   r*   r.   _eval_is_extended_realW  s    zsinh._eval_is_extended_realc                 C   s   | j d jr| j d jS d S rz   rZ   r   is_positiver}   r*   r*   r.   _eval_is_positive[  s    zsinh._eval_is_positivec                 C   s   | j d jr| j d jS d S rz   rZ   r   rg   r}   r*   r*   r.   _eval_is_negative_  s    zsinh._eval_is_negativec                 C   s   | j d }|jS rz   rZ   r   r\   rQ   r*   r*   r.   _eval_is_finitec  s    
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S rz   )rW   rZ   rf   
is_integerr\   restZipi_multr*   r*   r.   _eval_is_zerog  s    zsinh._eval_is_zero)r3   )r3   )T)T)T)N)Nr   )rI   rJ   rK   rL   r^   rb   classmethodrs   staticmethodr   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   rX      s6   
	

0





rX   c                   @   s   e Zd ZdZd0ddZedd Zeedd Z	d	d
 Z
d1ddZd2ddZd3ddZd4ddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd5d$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdS )6rY   a"  
    ``cosh(x)`` is the hyperbolic cosine of ``x``.

    The hyperbolic cosine function is $\frac{e^x + e^{-x}}{2}$.

    Examples
    ========

    >>> from sympy import cosh
    >>> from sympy.abc import x
    >>> cosh(x)
    cosh(x)

    See Also
    ========

    sinh, tanh, acosh
    r3   c                 C   s$   |dkrt | jd S t| |d S Nr3   r   rX   rZ   r   r[   r*   r*   r.   r^     s    z
cosh.fdiffc                 C   s~  ddl m} |jrb|tjkr"tjS |tjkr2tjS |tjkrBtjS |jrNtjS |j	r^| | S n|tj
krrtjS t|}|d k	r||S | r| | S |jrt|\}}|r|t t }t|t| t|t|  S |jrtjS |jtkrtd|jd d  S |jtkr"|jd S |jtkrHdtd|jd d   S |jtkrz|jd }|t|d t|d   S d S )Nr   )r"   r3   r4   )(sympy.functions.elementary.trigonometricr"   rd   r   re   rF   rG   rf   rM   rg   rh   r(   ri   rj   rW   r   r   rY   rX   rk   ra   r   rZ   rl   rm   rn   )ro   rQ   r"   rp   rq   rr   r*   r*   r.   rs     sF    




 

z	cosh.evalc                 G   sb   | dk s| d dkrt jS t|}t|dkrN|d }||d  | | d   S ||  t|  S d S )Nr   r4   r3   rB   rt   rv   r*   r*   r.   ry     s    zcosh.taylor_termc                 C   s   |  | jd  S rz   r{   r}   r*   r*   r.   r~     s    zcosh._eval_conjugateTc                 K   s   | j d jr6|r,d|d< | j|f|tjfS | tjfS |rX| j d j|f| \}}n| j d  \}}t|t| t|t	| fS )Nr   Fr   )
rZ   r   r   r   rP   r   rY   r"   rX   r&   r   r*   r*   r.   r     s    
zcosh.as_real_imagc                 K   s$   | j f d|i|\}}||t  S r   r   r   r*   r*   r.   r     s    zcosh._eval_expand_complexc                 K   s   |r| j d j|f|}n
| j d }d }|jr<| \}}n:|jdd\}}|tjk	rv|jrv|tjk	rv|}|d | }|d k	rt|t| t	|t	|  jddS t|S r   )
rZ   r   rj   rO   r   r   rM   r   rY   rX   r   r*   r*   r.   r     s    
(zcosh._eval_expand_trigNc                 K   s   t |t |  d S r   r   r   r*   r*   r.   r     s    zcosh._eval_rewrite_as_tractablec                 K   s   t |t |  d S r   r   r   r*   r*   r.   r     s    zcosh._eval_rewrite_as_expc                 K   s   t t| ddS NFevaluater"   r   r   r*   r*   r.   _eval_rewrite_as_cos  s    zcosh._eval_rewrite_as_cosc                 K   s   dt t| dd S Nr3   Fr   r%   r   r   r*   r*   r.   _eval_rewrite_as_sec  s    zcosh._eval_rewrite_as_secc                 K   s   t  t|tt  d  dd S Nr4   Fr   r   rX   r   r   r*   r*   r.   _eval_rewrite_as_sinh  s    zcosh._eval_rewrite_as_sinhc                 K   s"   t tj| d }d| d|  S r   r   r   r*   r*   r.   r     s    zcosh._eval_rewrite_as_tanhc                 K   s"   t tj| d }|d |d  S r   r   r   r*   r*   r.   r     s    zcosh._eval_rewrite_as_cothc                 K   s   dt | S r   sechr   r*   r*   r.   _eval_rewrite_as_sech  s    zcosh._eval_rewrite_as_sechr   c                 C   sj   | j d j|||d}||d}|tjkrF|j|d|jr>dndd}|jrRtjS |j	rb| 
|S | S d S r   )rZ   r   r   r   re   r   rg   rf   rM   r   rk   r   r*   r*   r.   r     s    

zcosh._eval_as_leading_termc                 C   s0   | j d }|js|jrdS | \}}|t jS r   )rZ   r   is_imaginaryr   r   rf   r   r*   r*   r.   r     s
    
zcosh._eval_is_realc              	   C   sr   | j d }| \}}|dt  }|j}|r0dS |j}|dkrB|S t|t|t|td k |dt d kgggS Nr   r4   TFr5   rZ   r   r   rf   r   r	   r\   zrq   r   ZymodZyzeroZxzeror*   r*   r.   r     s     
zcosh._eval_is_positivec              	   C   sr   | j d }| \}}|dt  }|j}|r0dS |j}|dkrB|S t|t|t|td k|dt d kgggS r   r   r   r*   r*   r.   _eval_is_nonnegative?  s     
zcosh._eval_is_nonnegativec                 C   s   | j d }|jS rz   r   r   r*   r*   r.   r   Y  s    
zcosh._eval_is_finitec                 C   s,   t | jd \}}|r(|jr(|tj jS d S rz   )rW   rZ   rf   r   r>   r   r   r*   r*   r.   r   ]  s    
zcosh._eval_is_zero)r3   )T)T)T)N)Nr   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   rY   m  s2   

/




 rY   c                   @   s   e Zd ZdZd0ddZd1ddZedd Zee	d	d
 Z
dd Zd2ddZdd Zd3ddZdd Zdd Zdd Zdd Zdd Zdd  Zd4d"d#Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdS )5r   a'  
    ``tanh(x)`` is the hyperbolic tangent of ``x``.

    The hyperbolic tangent function is $\frac{\sinh(x)}{\cosh(x)}$.

    Examples
    ========

    >>> from sympy import tanh
    >>> from sympy.abc import x
    >>> tanh(x)
    tanh(x)

    See Also
    ========

    sinh, cosh, atanh
    r3   c                 C   s.   |dkr t jt| jd d  S t| |d S Nr3   r   r4   )r   rM   r   rZ   r   r[   r*   r*   r.   r^   w  s    z
tanh.fdiffc                 C   s   t S r_   rm   r[   r*   r*   r.   rb   }  s    ztanh.inversec                 C   s  |j rX|tjkrtjS |tjkr&tjS |tjkr6tjS |jrBtjS |j	rT| |  S n2|tj
krhtjS t|}|d k	r| rt t|  S tt| S | r| |  S |jrt|\}}|rt|t t }|tj
krt|S t|S |j rtjS |jtkr(|jd }|td|d   S |jtkrZ|jd }t|d t|d  | S |jtkrp|jd S |jtkrd|jd  S d S rc   )rd   r   re   rF   rM   rG   NegativeOnerf   rP   rg   rh   r(   ri   r   r'   rj   rW   r   r   r   rk   ra   rZ   r   rl   rm   rn   )ro   rQ   rp   rq   rr   Ztanhmr*   r*   r.   rs     sN    







z	tanh.evalc                 G   sf   | dk s| d dkrt jS t|}d| d  }t| d }t| d }||d  | | ||   S d S Nr   r4   r3   )r   rP   r   r   r   )rw   rq   rx   rR   BFr*   r*   r.   ry     s    ztanh.taylor_termc                 C   s   |  | jd  S rz   r{   r}   r*   r*   r.   r~     s    ztanh._eval_conjugateTc                 K   s   | j d jr6|r,d|d< | j|f|tjfS | tjfS |rX| j d j|f| \}}n| j d  \}}t|d t|d  }t|t| | t	|t| | fS )Nr   Fr   r4   r   )r\   r   r   r   r   denomr*   r*   r.   r     s    
ztanh.as_real_imagc           	         s   | j d }|jrnt|j }dd |j D }ddg}t|d D ]}||d   t||7  < q>|d |d  S |jr| \}jrdkrt|  fddtdd dD } fddtdd dD }t	| t	|  S t|S )Nr   c                 S   s   g | ]}t |d d qS Fr   )r   r   r,   rq   r*   r*   r.   
<listcomp>  s   z*tanh._eval_expand_trig.<locals>.<listcomp>r3   r4   c                    s"   g | ]}t t| |  qS r*   r   ranger,   kTr   r*   r.   r     s     c                    s"   g | ]}t t| |  qS r*   r   r   r   r*   r.   r     s     )
rZ   rj   ru   r   r)   rN   r   r   r   r   )	r\   r   rQ   rw   ZTXrT   ir   dr*   r   r.   r     s$    

  ztanh._eval_expand_trigNc                 K   s$   t | t | }}|| ||  S r   r   r\   rQ   r   r   neg_exppos_expr*   r*   r.   r     s    ztanh._eval_rewrite_as_tractablec                 K   s$   t | t | }}|| ||  S r   r   r\   rQ   r   r   r   r*   r*   r.   r     s    ztanh._eval_rewrite_as_expc                 K   s   t  tt | dd S r   )r   r'   r   r*   r*   r.   _eval_rewrite_as_tan  s    ztanh._eval_rewrite_as_tanc                 K   s   t  tt | dd S r   )r   r#   r   r*   r*   r.   _eval_rewrite_as_cot  s    ztanh._eval_rewrite_as_cotc                 K   s$   t t| ttt  d | dd S r   r   r   r*   r*   r.   r     s    ztanh._eval_rewrite_as_sinhc                 K   s$   t ttt  d | dd t| S r   r   r   r*   r*   r.   r     s    ztanh._eval_rewrite_as_coshc                 K   s   dt | S r   r   r   r*   r*   r.   r     s    ztanh._eval_rewrite_as_cothr   c                 C   sH   ddl m} | jd |}||jkr:|d||r:|S | |S d S Nr   )Orderr3   sympy.series.orderr  rZ   r   Zfree_symbolscontainsrk   r\   rq   r   r   r  rQ   r*   r*   r.   r     s
    ztanh._eval_as_leading_termc                 C   sJ   | j d }|jrdS | \}}|dkr<|t td kr<d S |td  jS )Nr   Tr4   r   r   r*   r*   r.   r     s    
ztanh._eval_is_realc                 C   s   | j d jrdS d S r   r   r}   r*   r*   r.   r     s    ztanh._eval_is_extended_realc                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r     s    ztanh._eval_is_positivec                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r   "  s    ztanh._eval_is_negativec                 C   sR   | j d }| \}}t|d t|d  }|dkr:dS |jrDdS |jrNdS d S )Nr   r4   FT)rZ   r   r"   rX   	is_numberr   )r\   rQ   r   r   r   r*   r*   r.   r   &  s    
ztanh._eval_is_finitec                 C   s   | j d }|jrdS d S r   rZ   rf   r   r*   r*   r.   r   2  s    
ztanh._eval_is_zero)r3   )r3   )T)N)Nr   )rI   rJ   rK   rL   r^   rb   r   rs   r   r   ry   r~   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   r   c  s2   


4


	r   c                   @   s   e Zd ZdZd$ddZd%ddZedd Zee	d	d
 Z
dd Zd&ddZd'ddZdd Zdd Zdd Zdd Zdd Zdd Zd(d d!Zd"d# ZdS ))r   a+  
    ``coth(x)`` is the hyperbolic cotangent of ``x``.

    The hyperbolic cotangent function is $\frac{\cosh(x)}{\sinh(x)}$.

    Examples
    ========

    >>> from sympy import coth
    >>> from sympy.abc import x
    >>> coth(x)
    coth(x)

    See Also
    ========

    sinh, cosh, acoth
    r3   c                 C   s,   |dkrdt | jd d  S t| |d S )Nr3   r6   r   r4   r   r[   r*   r*   r.   r^   L  s    z
coth.fdiffc                 C   s   t S r_   )rn   r[   r*   r*   r.   rb   R  s    zcoth.inversec                 C   s  |j rX|tjkrtjS |tjkr&tjS |tjkr6tjS |jrBtjS |j	rT| |  S n2|tjkrhtjS t
|}|d k	r| rtt|  S t t| S | r| |  S |jrt|\}}|rt|t t }|tjkrt|S t|S |j rtjS |jtkr(|jd }td|d  | S |jtkrZ|jd }|t|d t|d   S |jtkrtd|jd  S |jtkr|jd S d S rc   )rd   r   re   rF   rM   rG   r   rf   rh   rg   r(   ri   r   r#   rj   rW   r   r   r   rk   ra   rZ   r   rl   rm   rn   )ro   rQ   rp   rq   rr   Zcothmr*   r*   r.   rs   X  sN    






z	coth.evalc                 G   sn   | dkrdt | S | dk s(| d dkr.tjS t |}t| d }t| d }d| d  | | ||   S d S rc   r   r   rP   r   r   rw   rq   rx   r   r   r*   r*   r.   ry     s    zcoth.taylor_termc                 C   s   |  | jd  S rz   r{   r}   r*   r*   r.   r~     s    zcoth._eval_conjugateTc                 K   s   ddl m}m} | jd jrF|r<d|d< | j|f|tjfS | tjfS |rh| jd j|f| \}}n| jd  \}}t	|d ||d  }t	|t
| | || || | fS )Nr   )r"   r&   Fr   r4   )r   r"   r&   rZ   r   r   r   rP   r   rX   rY   )r\   r   r   r"   r&   r   r   r   r*   r*   r.   r     s    
zcoth.as_real_imagNc                 K   s$   t | t | }}|| ||  S r   r   r   r*   r*   r.   r     s    zcoth._eval_rewrite_as_tractablec                 K   s$   t | t | }}|| ||  S r   r   r   r*   r*   r.   r     s    zcoth._eval_rewrite_as_expc                 K   s&   t  ttt  d | dd t| S r   r   r   r*   r*   r.   r     s    zcoth._eval_rewrite_as_sinhc                 K   s&   t  t| ttt  d | dd S r   r   r   r*   r*   r.   r     s    zcoth._eval_rewrite_as_coshc                 K   s   dt | S r   r   r   r*   r*   r.   r     s    zcoth._eval_rewrite_as_tanhc                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r     s    zcoth._eval_is_positivec                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r     s    zcoth._eval_is_negativer   c                 C   sL   ddl m} | jd |}||jkr>|d||r>d| S | |S d S r  r  r  r*   r*   r.   r     s
    zcoth._eval_as_leading_termc           
      K   s  | j d }|jrxdd |j D }g g g}t|j }t|ddD ] }||| d  t|| q>t|d  t|d   S |jr|jdd\}}|j	r|dkrt
|d	d
}	g g g}t|ddD ](}||| d  t|||	|   qt|d  t|d   S t
|S )Nr   c                 S   s   g | ]}t |d d qS r   )r   r   r   r*   r*   r.   r     s     z*coth._eval_expand_trig.<locals>.<listcomp>r6   r4   r3   Tr   Fr   )rZ   rj   ru   r   appendr)   r   rN   r   r   r   r   )
r\   r   rQ   ZCXrT   rw   r   r   rq   cr*   r*   r.   r     s"    

&zcoth._eval_expand_trig)r3   )r3   )T)N)Nr   )rI   rJ   rK   rL   r^   rb   r   rs   r   r   ry   r~   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   r   8  s&   


4


	r   c                   @   s   e Zd ZU dZdZdZeed< dZeed< e	dd Z
dd Zd	d
 Zdd Zdd Zd%ddZdd Zdd Zd&ddZdd Zd'ddZdd Zd(dd Zd!d" Zd#d$ ZdS ))ReciprocalHyperbolicFunctionz=Base class for reciprocal functions of hyperbolic functions. N_is_even_is_oddc                 C   sj   |  r*| jr| | S | jr*| |  S | j|}t|drV| | krV|jd S |d k	rfd| S |S )Nrb   r   r3   )ri   r  r  _reciprocal_ofrs   hasattrrb   rZ   )ro   rQ   tr*   r*   r.   rs     s    

z!ReciprocalHyperbolicFunction.evalc                 O   s    |  | jd }t||||S rz   )r  rZ   getattr)r\   method_namerZ   r   or*   r*   r.   _call_reciprocal  s    z-ReciprocalHyperbolicFunction._call_reciprocalc                 O   s&   | j |f||}|d k	r"d| S |S r   )r  )r\   r  rZ   r   r  r*   r*   r.   _calculate_reciprocal  s    z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s.   |  ||}|d k	r*|| |kr*d| S d S r   )r  r  )r\   r  rQ   r  r*   r*   r.   _rewrite_reciprocal  s    z0ReciprocalHyperbolicFunction._rewrite_reciprocalc                 K   s   |  d|S )Nr   r  r   r*   r*   r.   r     s    z1ReciprocalHyperbolicFunction._eval_rewrite_as_expc                 K   s   |  d|S )Nr   r  r   r*   r*   r.   r     s    z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   s   |  d|S )Nr   r  r   r*   r*   r.   r     s    z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   s   |  d|S )Nr   r  r   r*   r*   r.   r     s    z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s   d|  | jd  j|f|S r   )r  rZ   r   )r\   r   r   r*   r*   r.   r     s    z)ReciprocalHyperbolicFunction.as_real_imagc                 C   s   |  | jd  S rz   r{   r}   r*   r*   r.   r~     s    z,ReciprocalHyperbolicFunction._eval_conjugatec                 K   s$   | j f ddi|\}}|t|  S )Nr   Tr   r   r*   r*   r.   r     s    z1ReciprocalHyperbolicFunction._eval_expand_complexc                 K   s   | j d|S )Nr   )r   )r  )r\   r   r*   r*   r.   r   !  s    z.ReciprocalHyperbolicFunction._eval_expand_trigr   c                 C   s   d|  | jd  |S r   )r  rZ   r   )r\   rq   r   r   r*   r*   r.   r   $  s    z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS rz   )r  rZ   r   r}   r*   r*   r.   r   '  s    z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )r  rZ   r   r}   r*   r*   r.   r   *  s    z,ReciprocalHyperbolicFunction._eval_is_finite)N)T)T)Nr   )rI   rJ   rK   rL   r  r  r   __annotations__r  r   rs   r  r  r  r   r   r   r   r   r~   r   r   r   r   r   r*   r*   r*   r.   r    s(   





r  c                   @   sb   e Zd ZdZeZdZdddZee	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd ZdS )r   a8  
    ``csch(x)`` is the hyperbolic cosecant of ``x``.

    The hyperbolic cosecant function is $\frac{2}{e^x - e^{-x}}$

    Examples
    ========

    >>> from sympy import csch
    >>> from sympy.abc import x
    >>> csch(x)
    csch(x)

    See Also
    ========

    sinh, cosh, tanh, sech, asinh, acosh
    Tr3   c                 C   s4   |dkr&t | jd  t| jd  S t| |dS )z?
        Returns the first derivative of this function
        r3   r   N)r   rZ   r   r   r[   r*   r*   r.   r^   E  s    z
csch.fdiffc                 G   sr   | dkrdt | S | dk s(| d dkr.tjS t |}t| d }t| d }ddd|    | | ||   S dS )zF
        Returns the next term in the Taylor series expansion
        r   r3   r4   Nr  r  r*   r*   r.   ry   N  s    zcsch.taylor_termc                 K   s   t tt | dd S r   r   r   r*   r*   r.   r   `  s    zcsch._eval_rewrite_as_sinc                 K   s   t tt | dd S r   r   r   r*   r*   r.   r   c  s    zcsch._eval_rewrite_as_cscc                 K   s   t t|t t d  dd S r   r   r   r*   r*   r.   r   f  s    zcsch._eval_rewrite_as_coshc                 K   s   dt | S r   rX   r   r*   r*   r.   r   i  s    zcsch._eval_rewrite_as_sinhc                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r   l  s    zcsch._eval_is_positivec                 C   s   | j d jr| j d jS d S rz   r   r}   r*   r*   r.   r   p  s    zcsch._eval_is_negativeN)r3   )rI   rJ   rK   rL   rX   r  r  r^   r   r   ry   r   r   r   r   r   r   r*   r*   r*   r.   r   .  s   
	r   c                   @   sZ   e Zd ZdZeZdZdddZee	dd Z
dd	 Zd
d Zdd Zdd Zdd ZdS )r   a:  
    ``sech(x)`` is the hyperbolic secant of ``x``.

    The hyperbolic secant function is $\frac{2}{e^x + e^{-x}}$

    Examples
    ========

    >>> from sympy import sech
    >>> from sympy.abc import x
    >>> sech(x)
    sech(x)

    See Also
    ========

    sinh, cosh, tanh, coth, csch, asinh, acosh
    Tr3   c                 C   s4   |dkr&t | jd  t| jd  S t| |d S r   )r   rZ   r   r   r[   r*   r*   r.   r^     s    z
sech.fdiffc                 G   s>   | dk s| d dkrt jS t|}t| t|  ||   S d S r   )r   rP   r   r   r   rw   rq   rx   r*   r*   r.   ry     s    zsech.taylor_termc                 K   s   dt t| dd S r   r   r   r*   r*   r.   r     s    zsech._eval_rewrite_as_cosc                 K   s   t t| ddS r   r   r   r*   r*   r.   r     s    zsech._eval_rewrite_as_secc                 K   s   t t|t t d  dd S r   r   r   r*   r*   r.   r     s    zsech._eval_rewrite_as_sinhc                 K   s   dt | S r   rY   r   r*   r*   r.   r     s    zsech._eval_rewrite_as_coshc                 C   s   | j d jrdS d S r   r   r}   r*   r*   r.   r     s    zsech._eval_is_positiveN)r3   )rI   rJ   rK   rL   rY   r  r  r^   r   r   ry   r   r   r   r   r   r*   r*   r*   r.   r   u  s   
r   c                   @   s   e Zd ZdZdS )InverseHyperbolicFunctionz,Base class for inverse hyperbolic functions.N)rI   rJ   rK   rL   r*   r*   r*   r.   r!    s   r!  c                   @   s   e Zd ZdZd!ddZedd Zeedd Z	d"ddZ
d#ddZdd ZeZdd Zdd Zdd Zdd Zd$ddZdd Zdd Zdd  Zd	S )%ra   aM  
    ``asinh(x)`` is the inverse hyperbolic sine of ``x``.

    The inverse hyperbolic sine function.

    Examples
    ========

    >>> from sympy import asinh
    >>> from sympy.abc import x
    >>> asinh(x).diff(x)
    1/sqrt(x**2 + 1)
    >>> asinh(1)
    log(1 + sqrt(2))

    See Also
    ========

    acosh, atanh, sinh
    r3   c                 C   s0   |dkr"dt | jd d d  S t| |d S r   )r   rZ   r   r[   r*   r*   r.   r^     s    zasinh.fdiffc           	      C   sr  |j r|tjkrtjS |tjkr&tjS |tjkr6tjS |jrBtjS |tjkr\tt	dd S |tj
krvtt	dd S |jr| |  S nL|tjkrtjS |jrtjS t|}|d k	rtt| S | r| |  S t|trn|jd jrn|jd }|jr|S t|\}}|d k	rn|d k	rnt|td  t }|tt |  }|j}|dkr^|S |dkrn| S d S )Nr4   r3   r   TF)rd   r   re   rF   rG   rf   rP   rM   r   r   r   rg   rh   r(   r   r    ri   
isinstancerX   rZ   r	  r   r   r   r   is_even)	ro   rQ   rp   r   rr   frr   evenr*   r*   r.   rs     sJ    








z
asinh.evalc                 G   s   | dk s| d dkrt jS t|}t|dkrd| dkrd|d }| | d d  | | d   |d  S | d d }tt j|}t|}t j| | | ||   |  S d S Nr   r4   rB   r3   )r   rP   r   ru   r   r>   r   r   rw   rq   rx   rT   r   Rr   r*   r*   r.   ry      s    &zasinh.taylor_termNr   c                 C   s  | j d }||d }|jr*||S |tjkrR| ||}|jrN|S | S |t	 t	tj
fkrz| tj|||dS d|d  jr|||r|nd}t|jrt|jr| | t	t  S n@t|jrt|jr| | t	t  S n| tj|||dS | |S Nr   r   r3   r4   )rZ   r   cancelrf   r   r   re   rk   r   r   rh   r+   r   r   rg   r   r   r   r   r   r\   rq   r   r   rQ   Zx0r1   ndirr*   r*   r.   r     s*    






zasinh._eval_as_leading_termc           	      C   s   | j d }||d}|tt fkr<| tj||||dS tj| |||d}|tjkr\|S d|d  j	r|
||rx|nd}t|jrt|j	r| tt  S n<t|j	rt|jr| tt  S n| tj||||dS |S Nr   r   rw   r   r3   r4   )rZ   r   r   r+   r   _eval_nseriesr   r   rh   rg   r   r   r   r   r   	r\   rq   rw   r   r   rQ   r   resr-  r*   r*   r.   r0  -  s"    





zasinh._eval_nseriesc                 K   s   t |t|d d  S r   r   r   r\   rq   r   r*   r*   r.   _eval_rewrite_as_logF  s    zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S Nr3   r4   )rm   r   r4  r*   r*   r.   _eval_rewrite_as_atanhK  s    zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S r6  )r   r   rl   r   )r\   rq   r   Zixr*   r*   r.   _eval_rewrite_as_acoshN  s    zasinh._eval_rewrite_as_acoshc                 K   s   t  tt | dd S r   )r   r    r4  r*   r*   r.   _eval_rewrite_as_asinR  s    zasinh._eval_rewrite_as_asinc                 K   s    t tt | dd t t d  S )NFr   r4   )r   r   r   r4  r*   r*   r.   _eval_rewrite_as_acosU  s    zasinh._eval_rewrite_as_acosc                 C   s   t S r_   r  r[   r*   r*   r.   rb   X  s    zasinh.inversec                 C   s   | j d jS rz   r
  r}   r*   r*   r.   r   ^  s    zasinh._eval_is_zeroc                 C   s   | j d jS rz   r   r}   r*   r*   r.   r   a  s    zasinh._eval_is_extended_realc                 C   s   | j d jS rz   r   r}   r*   r*   r.   r   d  s    zasinh._eval_is_finite)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  r5  r   r7  r8  r9  r:  rb   r   r   r   r*   r*   r*   r.   ra     s&   

-


ra   c                   @   s   e Zd ZdZd!ddZedd Zeedd Z	d"ddZ
d#ddZdd ZeZdd Zdd Zdd Zdd Zd$ddZdd Zdd Zdd  Zd	S )%rl   aM  
    ``acosh(x)`` is the inverse hyperbolic cosine of ``x``.

    The inverse hyperbolic cosine function.

    Examples
    ========

    >>> from sympy import acosh
    >>> from sympy.abc import x
    >>> acosh(x).diff(x)
    1/(sqrt(x - 1)*sqrt(x + 1))
    >>> acosh(1)
    0

    See Also
    ========

    asinh, atanh, cosh
    r3   c                 C   s<   |dkr.| j d }dt|d t|d   S t| |d S r   rZ   r   r   )r\   r]   rQ   r*   r*   r.   r^   ~  s    
zacosh.fdiffc           	      C   s  |j rj|tjkrtjS |tjkr&tjS |tjkr6tjS |jrHtt d S |tjkrXtj	S |tj
krjtt S |jrt }||kr|jr|| t S || S |tjkrtjS |ttj krtjtt d  S |t tj krtjtt d  S |jr tt tj S t|tr|jd jr|jd }|jr4t|S t|\}}|d k	r|d k	rt|t }|tt |  }|j}|dkr|jr|S |jr| S n0|dkr|tt 8 }|jr| S |jr|S d S )Nr4   r   TF)rd   r   re   rF   rG   rf   r   r   rM   rP   r   r	  r?   r   rh   r>   r"  rY   rZ   r   r   r   r   r#  is_nonnegativerg   Zis_nonpositiver   )	ro   rQ   	cst_tabler   r$  r   r%  rr   r&  r*   r*   r.   rs     s^    








z
acosh.evalc                 G   s   | dkrt t d S | dk s(| d dkr.tjS t|}t|dkrv| dkrv|d }|| d d  | | d   |d  S | d d }ttj|}t|}| | t  ||   |  S d S r'  )	r   r   r   rP   r   ru   r   r>   r   r(  r*   r*   r.   ry     s    $zacosh.taylor_termNr   c                 C   s   | j d }||d }|tj tjtjtjfkrJ| tj	|||dS |tj
krr| ||}|jrn|S | S |d jr|||r|nd}t|jr|d jr| |dt t  S | | S t|js| tj	|||dS | |S r*  )rZ   r   r+  r   rM   rP   rh   r+   r   r   re   rk   r   r   rg   r   r   r   r   r   r,  r*   r*   r.   r     s$    





zacosh._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfkr>| tj||||dS tj| |||d}|tj	kr^|S |d j
r|||rv|nd}t|j
r|d j
r|dt t  S | S t|js| tj||||dS |S r.  rZ   r   r   rM   r   r+   r   r0  r   rh   rg   r   r   r   r   r   r1  r*   r*   r.   r0    s     





zacosh._eval_nseriesc                 K   s    t |t|d t|d   S r   r3  r4  r*   r*   r.   r5    s    zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   r4  r*   r*   r.   r:    s    zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S r6  )r   r   r    r4  r*   r*   r.   r9    s    zacosh._eval_rewrite_as_asinc                 K   s4   t |d t d|  td ttt| dd   S Nr3   r4   Fr   )r   r   r   ra   r4  r*   r*   r.   _eval_rewrite_as_asinh	  s    zacosh._eval_rewrite_as_asinhc                 K   sp   t |d }t d| }t |d d }td | | d|t d|d     |t |d  | t||   S r6  )r   r   rm   )r\   rq   r   Zsxm1Zs1mxZsx2m1r*   r*   r.   r7    s    &zacosh._eval_rewrite_as_atanhc                 C   s   t S r_   r   r[   r*   r*   r.   rb     s    zacosh.inversec                 C   s   | j d d jrdS d S )Nr   r3   Tr
  r}   r*   r*   r.   r     s    zacosh._eval_is_zeroc                 C   s    t | jd j| jd d jgS Nr   r3   )r	   rZ   r   is_extended_nonnegativer}   r*   r*   r.   r     s    zacosh._eval_is_extended_realc                 C   s   | j d jS rz   r   r}   r*   r*   r.   r      s    zacosh._eval_is_finite)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  r5  r   r:  r9  r@  r7  rb   r   r   r   r*   r*   r*   r.   rl   h  s&   

6


rl   c                   @   s   e Zd ZdZdddZedd Zeedd Z	dddZ
dddZdd ZeZdd Zdd Zdd Zdd Zdd Zd ddZd	S )!rm   a)  
    ``atanh(x)`` is the inverse hyperbolic tangent of ``x``.

    The inverse hyperbolic tangent function.

    Examples
    ========

    >>> from sympy import atanh
    >>> from sympy.abc import x
    >>> atanh(x).diff(x)
    1/(1 - x**2)

    See Also
    ========

    asinh, acosh, tanh
    r3   c                 C   s,   |dkrdd| j d d   S t| |d S r   rZ   r   r[   r*   r*   r.   r^   8  s    zatanh.fdiffc           
      C   s  |j r|tjkrtjS |jr"tjS |tjkr2tjS |tjkrBtjS |tjkrZt	 t
| S |tjkrrt	t
|  S |jr| |  S n^|tjkrddlm} t	|t d td  S t|}|d k	rt	t
| S | r| |  S |jrtjS t|tr|jd jr|jd }|jr |S t|\}}|d k	r|d k	rtd| t }|j}|t	| t d  }	|dkrx|	S |dkr|	t	t d  S d S )Nr   AccumBoundsr4   TF)rd   r   re   rf   rP   rM   rF   r   rG   r   r!   rg   rh   !sympy.calculus.accumulationboundsrE  r   r(   ri   r"  r   rZ   r	  r   r   r   r#  )
ro   rQ   rE  rp   r   r$  r   r%  r&  rr   r*   r*   r.   rs   >  sL    








z
atanh.evalc                 G   s2   | dk s| d dkrt jS t|}||  |  S d S Nr   r4   )r   rP   r   r  r*   r*   r.   ry   m  s    zatanh.taylor_termNr   c                 C   s
  | j d }||d }|jr*||S |tjkrR| ||}|jrN|S | S |tj	 tj	tj
fkr~| tj|||dS d|d  jr |||r|nd}t|jr|jr| |tt  S n:t|jr|jr| |tt  S n| tj|||dS | |S r*  )rZ   r   r+  rf   r   r   re   rk   r   rM   rh   r+   r   r   rg   r   r   r   r   r   r,  r*   r*   r.   r   v  s*    




zatanh._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfkr>| tj||||dS tj| |||d}|tj	kr^|S d|d  j
r|||rz|nd}t|j
r|j
r|tt  S n6t|jr|jr|tt  S n| tj||||dS |S r.  r>  r1  r*   r*   r.   r0    s"    



zatanh._eval_nseriesc                 K   s   t d| t d|  d S r6  r   r4  r*   r*   r.   r5    s    zatanh._eval_rewrite_as_logc                 K   s\   t d|d d  }t| dt |d    t | t d|d   t | | t|  S r6  )r   r   ra   )r\   rq   r   r%  r*   r*   r.   r@    s    ,zatanh._eval_rewrite_as_asinhc                 C   s   | j d jrdS d S r   r
  r}   r*   r*   r.   r     s    zatanh._eval_is_zeroc                 C   s.   t | jd jd| jd  j| jd d jgS rA  r	   rZ   r   r<  r}   r*   r*   r.   r     s    zatanh._eval_is_extended_realc                 C   s(   t t| jd d j| jd d jgS rA  r
   r   rZ   rf   r}   r*   r*   r.   r     s    zatanh._eval_is_finitec                 C   s   | j d jS rz   )rZ   r   r}   r*   r*   r.   _eval_is_imaginary  s    zatanh._eval_is_imaginaryc                 C   s   t S r_   r  r[   r*   r*   r.   rb     s    zatanh.inverse)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  r5  r   r@  r   r   r   rK  rb   r*   r*   r*   r.   rm   $  s"   

.

rm   c                   @   s   e Zd ZdZdddZedd Zeedd Z	dddZ
dddZdd ZeZdd Zdd ZdddZdd Zdd Zd	S )rn   a-  
    ``acoth(x)`` is the inverse hyperbolic cotangent of ``x``.

    The inverse hyperbolic cotangent function.

    Examples
    ========

    >>> from sympy import acoth
    >>> from sympy.abc import x
    >>> acoth(x).diff(x)
    1/(1 - x**2)

    See Also
    ========

    asinh, acosh, coth
    r3   c                 C   s,   |dkrdd| j d d   S t| |d S r   rC  r[   r*   r*   r.   r^     s    zacoth.fdiffc                 C   s   |j r||tjkrtjS |tjkr&tjS |tjkr6tjS |jrHtt d S |tj	krXtjS |tj
krhtjS |jr| |  S nB|tjkrtjS t|}|d k	rt t| S | r| |  S |jrtt tj S d S r   )rd   r   re   rF   rP   rG   rf   r   r   rM   r   rg   rh   r(   r   ri   r>   )ro   rQ   rp   r*   r*   r.   rs     s0    





z
acoth.evalc                 G   sH   | dkrt  t d S | dk s*| d dkr0tjS t|}||  |  S d S rG  )r   r   r   rP   r   r  r*   r*   r.   ry     s    zacoth.taylor_termNr   c                 C   s  | j d }||d }|tjkr2d| |S |tjkrZ| ||}|jrV|S | S |tj	 tj	tj
fkr| tj|||dS |jrd|d  jr|||r|nd}t|jr|jr| |tt  S n:t|jr|jr| |tt  S n| tj|||dS | |S )Nr   r3   r   r4   )rZ   r   r+  r   rh   r   re   rk   r   rM   rP   r+   r   r   r   r   r   r   rg   r   r   r,  r*   r*   r.   r     s*    




zacoth._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfkr>| tj||||dS tj| |||d}|tj	kr^|S |j
rd|d  jr|||r|nd}t|jr|jr|tt  S n6t|jr|jr|tt  S n| tj||||dS |S r.  )rZ   r   r   rM   r   r+   r   r0  r   rh   r   r   r   r   rg   r   r   r1  r*   r*   r.   r0  *  s"    



zacoth._eval_nseriesc                 K   s$   t dd|  t dd|   d S r6  rH  r4  r*   r*   r.   r5  C  s    zacoth._eval_rewrite_as_logc                 K   s   t d| S r   r   r4  r*   r*   r.   r7  H  s    zacoth._eval_rewrite_as_atanhc                 K   sx   t t d t|d | t||d   tdd|  t||d     |td|d   ttd|d d    S r   )r   r   r   ra   r4  r*   r*   r.   r@  K  s    J*zacoth._eval_rewrite_as_asinhc                 C   s   t S r_   r  r[   r*   r*   r.   rb   O  s    zacoth.inversec                 C   s4   t | jd jt| jd d j| jd d jggS rA  )r	   rZ   r   r   rB  Zis_extended_nonpositiver}   r*   r*   r.   r   U  s    zacoth._eval_is_extended_realc                 C   s(   t t| jd d j| jd d jgS rA  rJ  r}   r*   r*   r.   r   X  s    zacoth._eval_is_finite)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  r5  r   r7  r@  rb   r   r   r*   r*   r*   r.   rn     s    

	


rn   c                   @   s   e Zd ZdZdddZedd Zeedd Z	d ddZ
d!ddZd"ddZdd ZeZdd Zdd Zdd Zdd Zdd Zdd Zd	S )#asecha  
    ``asech(x)`` is the inverse hyperbolic secant of ``x``.

    The inverse hyperbolic secant function.

    Examples
    ========

    >>> from sympy import asech, sqrt, S
    >>> from sympy.abc import x
    >>> asech(x).diff(x)
    -1/(x*sqrt(1 - x**2))
    >>> asech(1).diff(x)
    0
    >>> asech(1)
    0
    >>> asech(S(2))
    I*pi/3
    >>> asech(-sqrt(2))
    3*I*pi/4
    >>> asech((sqrt(6) - sqrt(2)))
    I*pi/12

    See Also
    ========

    asinh, atanh, cosh, acoth

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Hyperbolic_function
    .. [2] https://dlmf.nist.gov/4.37
    .. [3] https://functions.wolfram.com/ElementaryFunctions/ArcSech/

    r3   c                 C   s8   |dkr*| j d }d|td|d    S t| |d S Nr3   r   r6   r4   r;  r\   r]   r   r*   r*   r.   r^     s    
zasech.fdiffc                 C   s   |j rp|tjkrtjS |tjkr,tt d S |tjkrBtt d S |jrNtjS |tjkr^tj	S |tj
krptt S |jrt }||kr|jr|| t S || S |tjkrddlm} t|t d td  S |jrtjS d S )Nr4   r   rD  )rd   r   re   rF   r   r   rG   rf   rM   rP   r   r	  rH   r   rh   rF  rE  )ro   rQ   r=  rE  r*   r*   r.   rs     s0    





z
asech.evalc                 G   s   | dkrt d| S | dk s(| d dkr.tjS t|}t|dkr~| dkr~|d }|| d | d   |d  d| d d   S | d }ttj||  }t||  d |  d }d| | ||   d S d S )Nr   r4   r3   rB   r7   r6   )r   r   rP   r   ru   r   r>   r   r(  r*   r*   r.   ry     s    ,zasech.taylor_termNr   c                 C   s   | j d }||d }|tj tjtjtjfkrJ| tj	|||dS |tj
krr| ||}|jrn|S | S |jsd| jr|||r|nd}t|jr|js|d jr| | S | |dt t  S t|js| tj	|||dS | |S r*  )rZ   r   r+  r   rM   rP   rh   r+   r   r   re   rk   r   r   rg   r   r   r   r   r   r,  r*   r*   r.   r     s$    



zasech._eval_as_leading_termc                 C   s  ddl m} | jd }||d}|tjkrtddd}ttj|d  t	
|dd| }	tj| jd  }
|
|}|
| | }||ds|dkr|dS |t|S ttj| j|||d}| t|  }|	 ||  ||| | S |tjkrtddd}ttj|d  t	
|dd| }	tj| jd  }
|
|}|
| | }||ds|dkr|dS tt |t| S ttj| j|||d}| t|  }|	 ||  ||| | S tj| |||d}|tjkr|S |js$d| jr|||r4|nd}t|jrp|jsZ|d jr`| S |dt t  S t|js| t	j||||d	S |S 
Nr   )Or  T)Zpositiver4   r3   r/  r   )r  rP  rZ   r   r   rM   r   rL  r+   r   nseriesr   is_meromorphicr   r0  removeOr   powsimpr   r   r   r   rh   rg   r   r   r   r\   rq   rw   r   r   rP  rQ   r   r  ZserZarg1r%  gZres1r2  r-  r*   r*   r.   r0    sJ    
&
&&
&&zasech._eval_nseriesc                 C   s   t S r_   r   r[   r*   r*   r.   rb      s    zasech.inversec                 K   s,   t d| td| d td| d   S r   r3  r   r*   r*   r.   r5    s    zasech._eval_rewrite_as_logc                 K   s   t d| S r   )rl   r   r*   r*   r.   r8    s    zasech._eval_rewrite_as_acoshc                 K   s>   t d| d t dd|   ttt| dd ttj   S r   )r   r   ra   r   r   r>   r   r*   r*   r.   r@    s    0zasech._eval_rewrite_as_asinhc                 K   s   t t dt|td|   t d t|  t|  t d t|d  t|d     td|d  t|d  ttd|d    S r6  )r   r   r   rm   r4  r*   r*   r.   r7    s    Z.zasech._eval_rewrite_as_atanhc                 K   s<   t d| d t dd|   td ttt| dd   S r?  )r   r   r   acschr4  r*   r*   r.   _eval_rewrite_as_acsch  s    zasech._eval_rewrite_as_acschc                 C   s*   t | jd j| jd jd| jd  jgS rA  rI  r}   r*   r*   r.   r     s    zasech._eval_is_extended_realc                 C   s   t | jd jS rz   r
   rZ   rf   r}   r*   r*   r.   r     s    zasech._eval_is_finite)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  rb   r5  r   r8  r@  r7  rX  r   r   r*   r*   r*   r.   rL  \  s$   %



-
rL  c                   @   s   e Zd ZdZdddZedd Zeedd Z	d ddZ
d!ddZd"ddZdd ZeZdd Zdd Zdd Zdd Zdd Zdd Zd	S )#rW  a  
    ``acsch(x)`` is the inverse hyperbolic cosecant of ``x``.

    The inverse hyperbolic cosecant function.

    Examples
    ========

    >>> from sympy import acsch, sqrt, I
    >>> from sympy.abc import x
    >>> acsch(x).diff(x)
    -1/(x**2*sqrt(1 + x**(-2)))
    >>> acsch(1).diff(x)
    0
    >>> acsch(1)
    log(1 + sqrt(2))
    >>> acsch(I)
    -I*pi/2
    >>> acsch(-2*I)
    I*pi/6
    >>> acsch(I*(sqrt(6) - sqrt(2)))
    -5*I*pi/12

    See Also
    ========

    asinh

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Hyperbolic_function
    .. [2] https://dlmf.nist.gov/4.37
    .. [3] https://functions.wolfram.com/ElementaryFunctions/ArcCsch/

    r3   c                 C   s@   |dkr2| j d }d|d tdd|d     S t| |d S rM  r;  rN  r*   r*   r.   r^   F  s    
 zacsch.fdiffc                 C   s   |j rx|tjkrtjS |tjkr&tjS |tjkr6tjS |jrBtjS |tjkr\t	dt
d S |tjkrxt	dt
d  S |jrt }||kr|| t S |tjkrtjS |jrtjS |jrtjS | r| |  S d S r6  )rd   r   re   rF   rP   rG   rf   rh   rM   r   r   r   r	  rD   r   is_infiniteri   )ro   rQ   r=  r*   r*   r.   rs   M  s2    





z
acsch.evalc                 G   s   | dkrt d| S | dk s(| d dkr.tjS t|}t|dkr| dkr|d }| | d | d   |d  d| d d   S | d }ttj||  }t||  d |  d }tj|d  | | ||   d S d S )Nr   r4   r3   rB   r7   )	r   r   rP   r   ru   r   r>   r   r   r(  r*   r*   r.   ry   o  s    .zacsch.taylor_termNr   c                 C   s&  | j d }||d }|t ttjfkrB| tj|||dS |tj	krj| 
||}|jrf|S | S |tjkrd| |S |jrd|d  jr|||r|nd}t|jrt|jr| 
| tt  S nDt|jrt|jr| 
| tt  S n| tj|||dS | 
|S r*  )rZ   r   r+  r   r   rP   r+   r   r   re   rk   r   r   rh   r   r   r   r   r   r   rg   r,  r*   r*   r.   r     s*    




zacsch._eval_as_leading_termc                 C   s  ddl m} | jd }||d}|tkrtddd}tt|d  t	|dd| }	t | jd  }
|

|}|
| | }||ds|dkr|dS t t d |t| S ttj| j|||d}| t|  }|	 ||  ||| | }|S |tjt krtddd}tt |d  t	|dd| }	t| jd  }
|

|}|
| | }||ds|dkr|dS tt d |t| S ttj| j|||d}| t|  }|	 ||  ||| | S tj| |||d}|tjkr$|S |jrd|d  jr| jd ||rR|nd}t|jrt|jr| tt  S n@t|jrt|jr| tt  S n| tj||||d	S |S rO  )r  rP  rZ   r   r   r   rW  r+   r   rQ  r   rR  r   r   r   rM   r0  rS  r   rT  r   r   rh   r   r   r   r   r   rg   rU  r*   r*   r.   r0    sN    

$
*&&
*&zacsch._eval_nseriesc                 C   s   t S r_   r   r[   r*   r*   r.   rb     s    zacsch.inversec                 K   s    t d| td|d  d  S r6  r3  r   r*   r*   r.   r5    s    zacsch._eval_rewrite_as_logc                 K   s   t d| S r   r`   r   r*   r*   r.   r@    s    zacsch._eval_rewrite_as_asinhc                 K   s>   t tdt |  tt | d  tt | dd ttj   S r   )r   r   rl   r   r   r>   r   r*   r*   r.   r8    s
     zacsch._eval_rewrite_as_acoshc                 K   sF   |d }|d }t | | ttj t |d  | tt |   S r   )r   r   r   r>   rm   )r\   rQ   r   Zarg2Zarg2p1r*   r*   r.   r7    s
    zacsch._eval_rewrite_as_atanhc                 C   s   | j d jS rz   )rZ   rZ  r}   r*   r*   r.   r     s    zacsch._eval_is_zeroc                 C   s   | j d jS rz   r   r}   r*   r*   r.   r     s    zacsch._eval_is_extended_realc                 C   s   t | jd jS rz   rY  r}   r*   r*   r.   r     s    zacsch._eval_is_finite)r3   )Nr   )r   )r3   )rI   rJ   rK   rL   r^   r   rs   r   r   ry   r   r0  rb   r5  r   r@  r8  r7  r   r   r   r*   r*   r*   r.   rW     s$   %

!

0
rW  N)JZ
sympy.corer   r   r   Zsympy.core.addr   Zsympy.core.functionr   r   Zsympy.core.logicr   r	   r
   r   Zsympy.core.numbersr   r   r   Zsympy.core.symbolr   Z(sympy.functions.combinatorial.factorialsr   r   r   Z%sympy.functions.combinatorial.numbersr   r   r   Z$sympy.functions.elementary.complexesr   r   r   Z&sympy.functions.elementary.exponentialr   r   r   Z#sympy.functions.elementary.integersr   Z(sympy.functions.elementary.miscellaneousr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   Zsympy.polys.specialpolysr)   r2   r?   rD   rH   r0   rW   rX   rY   r   r   r  r   r   r!  ra   rl   rm   rn   rL  rW  r*   r*   r*   r.   <module>   sZ   4


#" U w V -JG; 3 = &  E