o
    eD                    @   s4  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 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.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 dd Z5edd Z6edd Z7edd Z8G dd deZ9dd Z:G dd de9Z;G dd de9Z<G dd  d e9Z=G d!d" d"e9Z>G d#d$ d$e9Z?G d%d& d&e?Z@G d'd( d(e?ZAG d)d* d*eZBG d+d, d,eBZCG d-d. d.eBZDG d/d0 d0eBZEG d1d2 d2eBZFG d3d4 d4eBZGG d5d6 d6eBZHd7S )8    )Ssympifycacheit)Add)FunctionArgumentIndexError)fuzzy_or	fuzzy_and	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)   UD:\Projects\ConvertPro\env\Lib\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   
r1   c                
   C   s  i 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   sN   
	
   $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 )Nr3   r7   r:   r2   r8   
   r9   r6   r4   )r   r   r   r   r   r)   r)   r)   r-   _acsch_table3   s   
  rC   c                   C   st  i 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 )Nr3   r2   r7   r:   r<   r8   r?   	   r9   rA   r;   r4   r6   r5   )r   r   r   r   r   InfinityNegativeInfinityr)   r)   r)   r-   _asech_tableF   sZ   	
rG   c                   @   s   e Zd ZdZdZdS )r/   ze
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__Z
unbranchedr)   r)   r)   r-   r/   j   s    	r/   c                 C   sz   t t }t| D ]}||krtj} n|jr&| \}}||kr&|jr& nq	| 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   

rV   c                   @   s   e Zd ZdZd4ddZd4ddZedd Zee	d	d
 Z
dd Zd5ddZd5ddZd5ddZd6ddZdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd7d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )8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
    r2   c                 C       |dkrt | jd S t| |)z@
        Returns the first derivative of this function.
        r2   r   )coshargsr   selfargindexr)   r)   r-   fdiff   s   
z
sinh.fdiffc                 C      t S z7
        Returns the inverse of this function.
        asinhr[   r)   r)   r-   inverse      zsinh.inversec                 C   s  |j r,|tju rtjS |tju rtjS |tju rtjS |jr!tjS |jr*| |  S d S |tju r4tjS t	|}|d urBt
t| S | rL| |  S |jrmt|\}}|rm|t t
 }t|t| t|t|  S |jrstjS |jtkr}|jd S |jtkr|jd }t|d t|d  S |jtkr|jd }|td|d   S |jtkr|jd }dt|d t|d   S d S Nr   r2   r3   )	is_Numberr   NaNrE   rF   is_zerorO   is_negativeComplexInfinityr'   r   r%   could_extract_minus_signis_AddrV   r   rW   rY   funcrb   rZ   acoshr   atanhacoth)clsrP   i_coeffxmr)   r)   r-   eval   sL   



 







z	sinh.evalc                 G   s^   | dk s
| d dkrt jS t|}t|dkr'|d }||d  | | d   S ||  t|  S )zG
        Returns the next term in the Taylor series expansion.
        r   r3   rA   r2   r   rO   r   lenr   nrs   previous_termsrS   r)   r)   r-   taylor_term   s   zsinh.taylor_termc                 C      |  | jd  S Nr   rm   rZ   	conjugater\   r)   r)   r-   _eval_conjugate      zsinh._eval_conjugateTc                 K      | j d jr|rd|d< | j|fi |tjfS | tjfS |r0| j d j|fi | \}}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   rO   as_real_imagrW   r!   rY   r%   r\   deephintsr   r   r)   r)   r-   r     s   
" zsinh.as_real_imagc                 K   $   | j dd|i|\}}||t  S Nr   r)   r   r   r\   r   r   Zre_partZim_partr)   r)   r-   _eval_expand_complex     zsinh._eval_expand_complexc                 K   s   |r| j d j|fi |}n| j d }d }|jr | \}}n|jdd\}}|tjur=|jr=|tjur=|}|d | }|d urUt|t	| t|t	|  jddS t|S Nr   TZrationalr2   )Ztrig)
rZ   r   rl   rN   as_coeff_Mulr   rL   
is_IntegerrW   rY   r\   r   r   rP   rs   ycoefftermsr)   r)   r-   _eval_expand_trig     
(zsinh._eval_expand_trigNc                 K      t |t |  d S Nr3   r   r\   rP   limitvarkwargsr)   r)   r-   _eval_rewrite_as_tractable&     zsinh._eval_rewrite_as_tractablec                 K   r   r   r   r\   rP   r   r)   r)   r-   _eval_rewrite_as_exp)  r   zsinh._eval_rewrite_as_expc                 K      t  tt |  S Nr   r%   r   r)   r)   r-   _eval_rewrite_as_sin,     zsinh._eval_rewrite_as_sinc                 K      t  tt |  S r   r   r#   r   r)   r)   r-   _eval_rewrite_as_csc/  r   zsinh._eval_rewrite_as_cscc                 K      t  t|tt  d   S r   r   rY   r   r   r)   r)   r-   _eval_rewrite_as_cosh2     zsinh._eval_rewrite_as_coshc                 K   s"   t tj| }d| d|d   S Nr3   r2   tanhr   r=   r\   rP   r   Z	tanh_halfr)   r)   r-   _eval_rewrite_as_tanh5     zsinh._eval_rewrite_as_tanhc                 K   s"   t tj| }d| |d d  S r   cothr   r=   r\   rP   r   Z	coth_halfr)   r)   r-   _eval_rewrite_as_coth9  r   zsinh._eval_rewrite_as_cothc                 K      dt | S Nr2   cschr   r)   r)   r-   _eval_rewrite_as_csch=     zsinh._eval_rewrite_as_cschr   c                 C   sd   | j d j|||d}||d}|tju r#|j|d|jrdndd}|jr(|S |jr0| 	|S | S Nr   logxcdir-+)dir)
rZ   as_leading_termsubsr   rg   limitri   rh   	is_finiterm   r\   rs   r   r   rP   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   rh   r\   rP   r   r   r)   r)   r-   _eval_is_realM  s
   

zsinh._eval_is_realc                 C      | j d jrdS d S r   rZ   r   r   r)   r)   r-   _eval_is_extended_realW     zsinh._eval_is_extended_realc                 C      | j d jr| j d jS d S r}   rZ   r   is_positiver   r)   r)   r-   _eval_is_positive[     zsinh._eval_is_positivec                 C   r   r}   rZ   r   ri   r   r)   r)   r-   _eval_is_negative_  r   zsinh._eval_is_negativec                 C      | j d }|jS r}   rZ   r   r\   rP   r)   r)   r-   _eval_is_finitec     
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S r}   )rV   rZ   rh   
is_integerr\   restZipi_multr)   r)   r-   _eval_is_zerog  s   zsinh._eval_is_zeror2   Tr   r}   )rH   rI   rJ   rK   r^   rc   classmethodru   staticmethodr   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r-   rW      s8    

	
0





rW   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d1ddZd1ddZd2ddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd3d$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdS )4rY   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
    r2   c                 C   rX   Nr2   r   rW   rZ   r   r[   r)   r)   r-   r^     s   
z
cosh.fdiffc                 C   sv  ddl m} |jr1|tju rtjS |tju rtjS |tju r!tjS |jr'tjS |j	r/| | S d S |tj
u r9tjS t|}|d urE||S | rN| | S |jrot|\}}|ro|t t }t|t| t|t|  S |jrutjS |jtkrtd|jd d  S |jtkr|jd S |jtkrdtd|jd d   S |jtkr|jd }|t|d t|d   S d S )Nr   )r!   r2   r3   )(sympy.functions.elementary.trigonometricr!   rf   r   rg   rE   rF   rh   rL   ri   rj   r'   rk   rl   rV   r   r   rY   rW   rm   rb   r   rZ   rn   ro   rp   )rq   rP   r!   rr   rs   rt   r)   r)   r-   ru     sJ   





 





z	cosh.evalc                 G   s^   | dk s
| d dkrt jS t|}t|dkr'|d }||d  | | d   S ||  t|  S )Nr   r3   r2   rA   rv   rx   r)   r)   r-   r{     s   zcosh.taylor_termc                 C   r|   r}   r~   r   r)   r)   r-   r     r   zcosh._eval_conjugateTc                 K   r   )Nr   Fr   )
rZ   r   r   r   rO   r   rY   r!   rW   r%   r   r)   r)   r-   r     s   
" zcosh.as_real_imagc                 K   r   r   r   r   r)   r)   r-   r     r   zcosh._eval_expand_complexc                 K   s   |r| j d j|fi |}n| j d }d }|jr | \}}n|jdd\}}|tjur=|jr=|tjur=|}|d | }|d urUt|t| t	|t	|  jddS t|S r   )
rZ   r   rl   rN   r   r   rL   r   rY   rW   r   r)   r)   r-   r     r   zcosh._eval_expand_trigNc                 K      t |t |  d S r   r   r   r)   r)   r-   r     r   zcosh._eval_rewrite_as_tractablec                 K   r   r   r   r   r)   r)   r-   r     r   zcosh._eval_rewrite_as_expc                 K      t t| S r   r!   r   r   r)   r)   r-   _eval_rewrite_as_cos  r   zcosh._eval_rewrite_as_cosc                 K      dt t|  S r   r$   r   r   r)   r)   r-   _eval_rewrite_as_sec     zcosh._eval_rewrite_as_secc                 K   r   r   r   rW   r   r   r)   r)   r-   _eval_rewrite_as_sinh  r   zcosh._eval_rewrite_as_sinhc                 K   s"   t tj| d }d| d|  S r   r   r   r)   r)   r-   r        zcosh._eval_rewrite_as_tanhc                 K   s"   t tj| d }|d |d  S r   r   r   r)   r)   r-   r     r   zcosh._eval_rewrite_as_cothc                 K   r   r   sechr   r)   r)   r-   _eval_rewrite_as_sech  r   zcosh._eval_rewrite_as_sechr   c                 C   sf   | j d j|||d}||d}|tju r#|j|d|jrdndd}|jr)tjS |j	r1| 
|S | S r   )rZ   r   r   r   rg   r   ri   rh   rL   r   rm   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   rh   r   r)   r)   r-   r     s
   

zcosh._eval_is_realc              	   C   sr   | j d }| \}}|dt  }|j}|rdS |j}|du r!|S t|t|t|td k |dt d kgggS Nr   r3   TFr4   rZ   r   r   rh   r   r	   r\   zrs   r   ZymodZyzeroZxzeror)   r)   r-   r     s    
zcosh._eval_is_positivec              	   C   sr   | j d }| \}}|dt  }|j}|rdS |j}|du r!|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   r   r}   r   r   r)   r)   r-   r   Y  r   zcosh._eval_is_finitec                 C   s0   t | jd \}}|r|jr|tj jS d S d S r}   )rV   rZ   rh   r   r=   r   r   r)   r)   r-   r   ]  s   
zcosh._eval_is_zeror   r   r   r}   )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r)   r)   r)   r-   rY   m  s4    

/




 rY   c                   @   s   e Zd ZdZd0ddZd0ddZedd Zee	d	d
 Z
dd Zd1ddZdd Zd2ddZdd Zdd Zdd Zdd Zd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dS )4r   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
    r2   c                 C   s*   |dkrt jt| jd d  S t| |Nr2   r   r3   )r   rL   r   rZ   r   r[   r)   r)   r-   r^   w  s   
z
tanh.fdiffc                 C   r_   r`   ro   r[   r)   r)   r-   rc   }  rd   ztanh.inversec                 C   s  |j r,|tju rtjS |tju rtjS |tju rtjS |jr!tjS |j	r*| |  S d S |tj
u r4tjS t|}|d urN| rHt t|  S tt| S | rX| |  S |jrxt|\}}|rxt|t t }|tj
u rtt|S t|S |jr~tjS |jtkr|jd }|td|d   S |jtkr|jd }t|d t|d  | S |jtkr|jd S |jtkrd|jd  S d S re   )rf   r   rg   rE   rL   rF   NegativeOnerh   rO   ri   rj   r'   rk   r   r&   rl   rV   r   r   r   rm   rb   rZ   r   rn   ro   rp   )rq   rP   rr   rs   rt   Ztanhmr)   r)   r-   ru     sR   











z	tanh.evalc                 G   sb   | dk s
| d dkrt jS t|}d| d  }t| d }t| d }||d  | | ||   S Nr   r3   r2   )r   rO   r   r   r   )ry   rs   rz   rQ   BFr)   r)   r-   r{     s   ztanh.taylor_termc                 C   r|   r}   r~   r   r)   r)   r-   r     r   ztanh._eval_conjugateTc                 K   s   | j d jr|rd|d< | j|fi |tjfS | tjfS |r0| j d j|fi | \}}n	| j d  \}}t|d t|d  }t|t| | t	|t| | fS )Nr   Fr   r3   r   )r\   r   r   r   r   denomr)   r)   r-   r     s   
"(ztanh.as_real_imagc           	         s   | j d }|jr7t|j }dd |j D }ddg}t|d D ]}||d   t||7  < q|d |d  S |jrs| \}jrsdkrst|  fddtdd dD } fddtdd dD }t	| t	|  S t|S )Nr   c                 S      g | ]
}t |d d qS Fevaluate)r   r   r+   rs   r)   r)   r-   
<listcomp>  s    z*tanh._eval_expand_trig.<locals>.<listcomp>r2   r3   c                    "   g | ]}t t| |  qS r)   r   ranger+   kTr   r)   r-   r       " c                    r  r)   r  r  r  r)   r-   r    r  )
rZ   rl   rw   r  r(   rM   r   r   r   r   )	r\   r   rP   ry   ZTXrS   ir   dr)   r  r-   r     s$   

  ztanh._eval_expand_trigNc                 K   s$   t | t |}}|| ||  S r   r   r\   rP   r   r   neg_exppos_expr)   r)   r-   r        ztanh._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   r\   rP   r   r  r  r)   r)   r-   r     r  ztanh._eval_rewrite_as_expc                 K   r   r   )r   r&   r   r)   r)   r-   _eval_rewrite_as_tan  r   ztanh._eval_rewrite_as_tanc                 K   r   r   )r   r"   r   r)   r)   r-   _eval_rewrite_as_cot  r   ztanh._eval_rewrite_as_cotc                 K   s    t t| ttt  d |  S r   r   r   r)   r)   r-   r         ztanh._eval_rewrite_as_sinhc                 K   s    t ttt  d |  t| S r   r   r   r)   r)   r-   r     r"  ztanh._eval_rewrite_as_coshc                 K   r   r   r   r   r)   r)   r-   r     r   ztanh._eval_rewrite_as_cothr   c                 C   sD   ddl m} | jd |}||jv r|d||r|S | |S Nr   )Orderr2   sympy.series.orderr%  rZ   r   Zfree_symbolscontainsrm   r\   rs   r   r   r%  rP   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   Tr3   r   r   r)   r)   r-   r     s   
ztanh._eval_is_realc                 C   r   r   r   r   r)   r)   r-   r     r   ztanh._eval_is_extended_realc                 C   r   r}   r   r   r)   r)   r-   r     r   ztanh._eval_is_positivec                 C   r   r}   r   r   r)   r)   r-   r   "  r   ztanh._eval_is_negativec                 C   sR   | j d }| \}}t|d t|d  }|dkrdS |jr"dS |jr'dS d S )Nr   r3   FT)rZ   r   r!   rW   	is_numberr   )r\   rP   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   rh   r   r)   r)   r-   r   2  s   
ztanh._eval_is_zeror   r   r   r}   )rH   rI   rJ   rK   r^   rc   r   ru   r   r   r{   r   r   r   r   r   r   r!  r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r-   r   c  s4    


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
    r2   c                 C   s(   |dkrdt | jd d  S t| |)Nr2   r5   r   r3   r   r[   r)   r)   r-   r^   L     
z
coth.fdiffc                 C   r_   r`   )rp   r[   r)   r)   r-   rc   R  rd   zcoth.inversec                 C   s  |j r,|tju rtjS |tju rtjS |tju rtjS |jr!tjS |j	r*| |  S d S |tju r4tjS t
|}|d urN| rGtt|  S t t| S | rX| |  S |jrxt|\}}|rxt|t t }|tju rtt|S t|S |jr~tjS |jtkr|jd }td|d  | S |jtkr|jd }|t|d t|d   S |jtkrd|jd  S |jtkr|jd S d S re   )rf   r   rg   rE   rL   rF   r  rh   rj   ri   r'   rk   r   r"   rl   rV   r   r   r   rm   rb   rZ   r   rn   ro   rp   )rq   rP   rr   rs   rt   Zcothmr)   r)   r-   ru   X  sR   











z	coth.evalc                 G   sj   | dkr
dt | S | dk s| d dkrtjS t |}t| d }t| d }d| d  | | ||   S re   r   r   rO   r   r   ry   rs   rz   r  r	  r)   r)   r-   r{     s   zcoth.taylor_termc                 C   r|   r}   r~   r   r)   r)   r-   r     r   zcoth._eval_conjugateTc                 K   s   ddl m}m} | jd jr%|r d|d< | j|fi |tjfS | tjfS |r8| jd j|fi | \}}n	| jd  \}}t	|d ||d  }t	|t
| | || || | fS )Nr   )r!   r%   Fr   r3   )r   r!   r%   rZ   r   r   r   rO   r   rW   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     r  zcoth._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   r  r)   r)   r-   r     r  zcoth._eval_rewrite_as_expc                 K   s"   t  ttt  d |  t| S r   r   r   r)   r)   r-   r        "zcoth._eval_rewrite_as_sinhc                 K   s"   t  t| ttt  d |  S r   r   r   r)   r)   r-   r     r/  zcoth._eval_rewrite_as_coshc                 K   r   r   r   r   r)   r)   r-   r     r   zcoth._eval_rewrite_as_tanhc                 C   r   r}   r   r   r)   r)   r-   r     r   zcoth._eval_is_positivec                 C   r   r}   r   r   r)   r)   r-   r     r   zcoth._eval_is_negativer   c                 C   sH   ddl m} | jd |}||jv r|d||rd| S | |S r$  r&  r)  r)   r)   r-   r     s
   
zcoth._eval_as_leading_termc           
      K   s  | j d }|jr<d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|||	|   q^t|d  t|d   S t
|S )Nr   c                 S   r  r  )r   r   r  r)   r)   r-   r    s    z*coth._eval_expand_trig.<locals>.<listcomp>r5   r3   r2   Tr   Fr  )rZ   rl   rw   r  appendr(   r   rM   r   r   r   r   )
r\   r   rP   ZCXrS   ry   r  r   rs   cr)   r)   r-   r     s"   

&zcoth._eval_expand_trigr   r   r   r}   )rH   rI   rJ   rK   r^   rc   r   ru   r   r   r{   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r+| | kr+|jd S |d ur3d| S |S )Nrc   r   r2   )rk   r4  r5  _reciprocal_ofru   hasattrrc   rZ   )rq   rP   tr)   r)   r-   ru     s   

z!ReciprocalHyperbolicFunction.evalc                 O   s$   |  | jd }t|||i |S r}   )r6  rZ   getattr)r\   method_namerZ   r   or)   r)   r-   _call_reciprocal  s   z-ReciprocalHyperbolicFunction._call_reciprocalc                 O   s,   | j |g|R i |}|d urd| S |S r   )r<  )r\   r:  rZ   r   r8  r)   r)   r-   _calculate_reciprocal  s   z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s2   |  ||}|d ur|| |krd| S d S d S r   )r<  r6  )r\   r:  rP   r8  r)   r)   r-   _rewrite_reciprocal  s   z0ReciprocalHyperbolicFunction._rewrite_reciprocalc                 K      |  d|S )Nr   r>  r   r)   r)   r-   r     r   z1ReciprocalHyperbolicFunction._eval_rewrite_as_expc                 K   r?  )Nr   r@  r   r)   r)   r-   r     r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   r?  )Nr   r@  r   r)   r)   r-   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   r?  )Nr   r@  r   r)   r)   r-   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s"   d|  | jd  j|fi |S r   )r6  rZ   r   )r\   r   r   r)   r)   r-   r     r/  z)ReciprocalHyperbolicFunction.as_real_imagc                 C   r|   r}   r~   r   r)   r)   r-   r     r   z,ReciprocalHyperbolicFunction._eval_conjugatec                 K   s$   | j dddi|\}}|t|  S )Nr   Tr)   r   r   r)   r)   r-   r     r   z1ReciprocalHyperbolicFunction._eval_expand_complexc                 K   s   | j di |S )Nr   )r   )r=  )r\   r   r)   r)   r-   r   !  r   z.ReciprocalHyperbolicFunction._eval_expand_trigr   c                 C   s   d|  | jd  |S r   )r6  rZ   r   )r\   rs   r   r   r)   r)   r-   r   $  r   z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS r}   )r6  rZ   r   r   r)   r)   r-   r   '  r   z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )r6  rZ   r   r   r)   r)   r-   r   *  r   z,ReciprocalHyperbolicFunction._eval_is_finiter   r   r}   )rH   rI   rJ   rK   r6  r4  r
   __annotations__r5  r   ru   r<  r=  r>  r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r-   r3    s*   
 




r3  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
    Tr2   c                 C   0   |dkrt | jd  t| jd  S t| |)z?
        Returns the first derivative of this function
        r2   r   )r   rZ   r   r   r[   r)   r)   r-   r^   E  s   
z
csch.fdiffc                 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d|    | | ||   S )zF
        Returns the next term in the Taylor series expansion
        r   r2   r3   r-  r.  r)   r)   r-   r{   N  s    zcsch.taylor_termc                 K   s   t tt |  S r   r   r   r)   r)   r-   r   `  r   zcsch._eval_rewrite_as_sinc                 K   s   t tt |  S r   r   r   r)   r)   r-   r   c  r   zcsch._eval_rewrite_as_cscc                 K      t t|t t d   S r   r   r   r)   r)   r-   r   f     zcsch._eval_rewrite_as_coshc                 K   r   r   rW   r   r)   r)   r-   r   i  r   zcsch._eval_rewrite_as_sinhc                 C   r   r}   r   r   r)   r)   r-   r   l  r   zcsch._eval_is_positivec                 C   r   r}   r   r   r)   r)   r-   r   p  r   zcsch._eval_is_negativeNr   )rH   rI   rJ   rK   rW   r6  r5  r^   r   r   r{   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
    Tr2   c                 C   rB  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 r  )r   rO   r   r   r   ry   rs   rz   r)   r)   r-   r{     s   zsech.taylor_termc                 K   r   r   r   r   r)   r)   r-   r     r   zsech._eval_rewrite_as_cosc                 K   r   r   r   r   r)   r)   r-   r     r   zsech._eval_rewrite_as_secc                 K   rC  r   r   r   r)   r)   r-   r     rD  zsech._eval_rewrite_as_sinhc                 K   r   r   rY   r   r)   r)   r-   r     r   zsech._eval_rewrite_as_coshc                 C   r   r   r   r   r)   r)   r-   r     r   zsech._eval_is_positiveNr   )rH   rI   rJ   rK   rY   r6  r4  r^   r   r   r{   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)rH   rI   rJ   rK   r)   r)   r)   r-   rH    s    rH  c                   @      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	S ) rb   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
    r2   c                 C   s,   |dkrdt | jd d d  S t| |r  )r   rZ   r   r[   r)   r)   r-   r^     s   
zasinh.fdiffc           	      C   st  |j rE|tju rtjS |tju rtjS |tju rtjS |jr!tjS |tju r.tt	dd S |tj
u r;tt	dd S |jrD| |  S n&|tju rMtjS |jrStjS t|}|d uratt| S | rk| |  S t|tr|jd jr|jd }|jr|S t|\}}|d ur|d urt|td  t }|tt |  }|j}|du r|S |du r| S d S d S d S d S d S )Nr3   r2   r   TF)rf   r   rg   rE   rF   rh   rO   rL   r   r   r  ri   rj   r'   r   r   rk   
isinstancerW   rZ   r*  r   r   r   r   is_even)	rq   rP   rr   r  rr  frt   evenr)   r)   r-   ru     sR   






z
asinh.evalc                 G   s   | dk s
| d dkrt jS t|}t|dkr2| dkr2|d }| | d d  | | d   |d  S | d d }tt j|}t|}t j| | | ||   |  S Nr   r3   rA   r2   )r   rO   r   rw   r   r=   r   r  ry   rs   rz   rS   r  Rr	  r)   r)   r-   r{      s   &zasinh.taylor_termNr   c                 C   s   | j d }||d }|jr||S |t ttjfv r)| t	j
|||dS d|d  jro|||r7|nd}t|jrOt|jrN| | tt  S n t|jrdt|jrc| | tt  S n| t	j
|||dS | |S Nr   r   r2   r3   )rZ   r   cancelrh   r   r   r   rj   r*   r   r   ri   r   r   r   r   rm   r   r\   rs   r   r   rP   Zx0ndirr)   r)   r-   r     s$   






zasinh._eval_as_leading_termc           	      C   s   | j d }||d}|tt fv r| tj||||dS tj| |||d}|tju r.|S d|d  j	rq|
||r<|nd}t|jrRt|j	rP| tt  S |S t|j	ret|jrc| tt  S |S | tj||||dS |S Nr   r   ry   r   r2   r3   )rZ   r   r   r*   r   _eval_nseriesr   r   rj   ri   r   r   r   r   r   	r\   rs   ry   r   r   rP   r   resrU  r)   r)   r-   rX  %  s&   





zasinh._eval_nseriesc                 K   s   t |t|d d  S r   r   r   r\   rs   r   r)   r)   r-   _eval_rewrite_as_log>  rD  zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S Nr2   r3   )ro   r   r\  r)   r)   r-   _eval_rewrite_as_atanhC  rD  zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S r^  )r   r   rn   r   )r\   rs   r   Zixr)   r)   r-   _eval_rewrite_as_acoshF  s   ,zasinh._eval_rewrite_as_acoshc                 K   r   r   )r   r   r\  r)   r)   r-   _eval_rewrite_as_asinJ  r   zasinh._eval_rewrite_as_asinc                 K   s   t tt |  t t d  S r   )r   r   r   r\  r)   r)   r-   _eval_rewrite_as_acosM     zasinh._eval_rewrite_as_acosc                 C   r_   r`   rE  r[   r)   r)   r-   rc   P  rd   zasinh.inversec                 C      | j d jS r}   r+  r   r)   r)   r-   r   V  r   zasinh._eval_is_zeror   r}   r   )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  r]  r   r_  r`  ra  rb  rc   r   r)   r)   r)   r-   rb     s$    

-


rb   c                   @   rI  ) rn   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
    r2   c                 C   s8   |dkr| j d }dt|d t|d   S t| |r   rZ   r   r   )r\   r]   rP   r)   r)   r-   r^   p  s   

zacosh.fdiffc           	      C   s  |j r5|tju rtjS |tju rtjS |tju rtjS |jr$tt d S |tju r,tj	S |tj
u r5tt S |jrLt }||v rL|jrH|| t S || S |tju rTtjS |ttj krdtjtt d  S |t tj krutjtt d  S |jrtt tj S t|tr|jd jr|jd }|jrt|S t|\}}|d ur|d urt|t }|tt |  }|j}|du r|jr|S |jr| S d S |du r|tt 8 }|jr| S |jr|S d S d S d S d S d S d S )Nr3   r   TF)rf   r   rg   rE   rF   rh   r   r   rL   rO   r  r*  r>   r   rj   r=   rJ  rY   rZ   r   r   r   r   rK  Zis_nonnegativeri   Zis_nonpositiver   )	rq   rP   	cst_tabler  rL  r  rM  rt   rN  r)   r)   r-   ru   w  sh   






	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r;| dkr;|d }|| d d  | | d   |d  S | d d }ttj|}t|}| | t  ||   |  S rO  )	r   r   r   rO   r   rw   r   r=   r   rP  r)   r)   r-   r{     s   $zacosh.taylor_termNr   c                 C   s   | j d }||d }|tj tjtjtjfv r%| tj	|||dS |d j
r_|||r1|nd}t|j
rO|d j
rI| |dt t  S | | S t|js_| tj	|||dS | |S rR  )rZ   r   rS  r   rL   rO   rj   r*   r   r   ri   r   r   rm   r   r   r   rT  r)   r)   r-   r     s   





zacosh._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfv r| tj||||dS tj| |||d}|tj	u r/|S |d j
rd|||r;|nd}t|j
rS|d j
rP|dt t  S | S t|jsd| tj||||dS |S rV  rZ   r   r   rL   r  r*   r   rX  r   rj   ri   r   r   r   r   r   rY  r)   r)   r-   rX    s    





zacosh._eval_nseriesc                 K   s    t |t|d t|d   S r   r[  r\  r)   r)   r-   r]    r"  zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   r\  r)   r)   r-   rb    r"  zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S r^  )r   r   r   r\  r)   r)   r-   ra    s   (zacosh._eval_rewrite_as_asinc                 K   s0   t |d t d|  td ttt|    S r^  )r   r   r   rb   r\  r)   r)   r-   _eval_rewrite_as_asinh  s   0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 r^  )r   r   ro   )r\   rs   r   Zsxm1Zs1mxZsx2m1r)   r)   r-   r_    s   &zacosh._eval_rewrite_as_atanhc                 C   r_   r`   rG  r[   r)   r)   r-   rc     rd   zacosh.inversec                 C   s   | j d d jr
dS d S )Nr   r2   Tr+  r   r)   r)   r-   r     s   zacosh._eval_is_zeror   r}   re  )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  r]  r   rb  ra  ri  r_  rc   r   r)   r)   r)   r-   rn   Z  s$    

6


rn   c                   @   sx   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dZd	S )ro   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
    r2   c                 C   (   |dkrdd| j d d   S t| |r  rZ   r   r[   r)   r)   r-   r^     r,  zatanh.fdiffc           
      C   s  |j rC|tju rtjS |jrtjS |tju rtjS |tju r!tjS |tju r-t	 t
| S |tju r9t	t
|  S |jrB| |  S n/|tju rZddlm} t	|t d td  S t|}|d urht	t
| S | rr| |  S |jrxtjS t|tr|jd jr|jd }|jr|S t|\}}|d ur|d urtd| t }|j}|t	| t d  }	|du r|	S |du r|	t	t d  S d S d S d S d S d S )Nr   AccumBoundsr3   TF)rf   r   rg   rh   rO   rL   rE   r  rF   r   r    ri   rj   !sympy.calculus.accumulationboundsrm  r   r'   rk   rJ  r   rZ   r*  r   r   r   rK  )
rq   rP   rm  rr   r  rL  r  rM  rN  rt   r)   r)   r-   ru   "  sT   






z
atanh.evalc                 G   s.   | dk s
| d dkrt jS t|}||  |  S Nr   r3   )r   rO   r   rF  r)   r)   r-   r{   Q  s   zatanh.taylor_termNr   c                 C   s   | j d }||d }|jr||S |tj tjtjfv r+| t	j
|||dS d|d  jrk|||r9|nd}t|jrN|jrM| |tt  S nt|jr`|jr_| |tt  S n| t	j
|||dS | |S rR  )rZ   r   rS  rh   r   r   rL   rj   r*   r   r   ri   r   r   rm   r   r   r   rT  r)   r)   r-   r   Z  s$   




zatanh._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfv r| tj||||dS tj| |||d}|tj	u r/|S d|d  j
rl|||r=|nd}t|j
rP|j
rN|tt  S |S t|jr`|jr^|tt  S |S | tj||||dS |S rV  rh  rY  r)   r)   r-   rX  o  s&   



zatanh._eval_nseriesc                 K   s   t d| t d|  d S r^  r   r\  r)   r)   r-   r]    rc  zatanh._eval_rewrite_as_logc                 K   s\   t d|d d  }t| dt |d    t | t d|d   t | | t|  S r^  )r   r   rb   )r\   rs   r   rM  r)   r)   r-   ri    s   ,zatanh._eval_rewrite_as_asinhc                 C   r   r   r+  r   r)   r)   r-   r     r   zatanh._eval_is_zeroc                 C   rd  r}   )rZ   r   r   r)   r)   r-   _eval_is_imaginary  r   zatanh._eval_is_imaginaryc                 C   r_   r`   r0  r[   r)   r)   r-   rc     rd   zatanh.inverser   r}   re  )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  r]  r   ri  r   rq  rc   r)   r)   r)   r-   ro     s     

.

ro   c                   @   sp   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	S )rp   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
    r2   c                 C   rj  r  rk  r[   r)   r)   r-   r^     r,  zacoth.fdiffc                 C   s   |j r>|tju rtjS |tju rtjS |tju rtjS |jr$tt d S |tj	u r,tjS |tj
u r4tjS |jr=| |  S n!|tju rFtjS t|}|d urUt t| S | r_| |  S |jritt tj S d S r   )rf   r   rg   rE   rO   rF   rh   r   r   rL   r  ri   rj   r'   r   rk   r=   )rq   rP   rr   r)   r)   r-   ru     s4   





z
acoth.evalc                 G   sD   | dkrt  t d S | dk s| d dkrtjS t|}||  |  S ro  )r   r   r   rO   r   rF  r)   r)   r-   r{     s   zacoth.taylor_termNr   c                 C   s   | j d }||d }|tju rd| |S |tj tjtjfv r/| t	j
|||dS |jrrd|d  jrr|||r@|nd}t|jrU|jrT| |tt  S nt|jrg|jrf| |tt  S n| t	j
|||dS | |S )Nr   r2   r   r3   )rZ   r   rS  r   rj   r   rL   rO   r*   r   r   r   r   r   r   ri   rm   r   r   rT  r)   r)   r-   r     s$   




zacoth._eval_as_leading_termc           	      C   s   | j d }||d}|tjtjfv r| tj||||dS tj| |||d}|tj	u r/|S |j
rod|d  jro|||r@|nd}t|jrS|jrQ|tt  S |S t|jrc|jra|tt  S |S | tj||||dS |S rV  )rZ   r   r   rL   r  r*   r   rX  r   rj   r   r   r   r   ri   r   r   rY  r)   r)   r-   rX    s&   



zacoth._eval_nseriesc                 K   s$   t dd|  t dd|   d S r^  rp  r\  r)   r)   r-   r]    s   $zacoth._eval_rewrite_as_logc                 K      t d| S r   r  r\  r)   r)   r-   r_    r   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   rb   r\  r)   r)   r-   ri    s   J*zacoth._eval_rewrite_as_asinhc                 C   r_   r`   r#  r[   r)   r)   r-   rc     rd   zacoth.inverser   r}   re  )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  r]  r   r_  ri  rc   r)   r)   r)   r-   rp     s    


	
rp   c                   @      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	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/

    r2   c                 C   s4   |dkr| j d }d|td|d    S t| |Nr2   r   r5   r3   rf  r\   r]   r  r)   r)   r-   r^   L  s   

zasech.fdiffc                 C   s   |j r8|tju rtjS |tju rtt d S |tju r!tt d S |jr'tjS |tju r/tj	S |tj
u r8tt S |jrOt }||v rO|jrK|| t S || S |tju rfddlm} t|t d td  S |jrltjS d S )Nr3   r   rl  )rf   r   rg   rE   r   r   rF   rh   rL   rO   r  r*  rG   r   rj   rn  rm  )rq   rP   rg  rm  r)   r)   r-   ru   S  s2   





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 )Nr   r3   r2   rA   r6   r5   )r   r   rO   r   rw   r   r=   r   rP  r)   r)   r-   r{   r  s   ,zasech.taylor_termNr   c                 C   s   | j d }||d }|tj tjtjtjfv r%| tj	|||dS |j
s-d| j
re|||r4|nd}t|jrU|jsD|d j
rJ| | S | |dt t  S t|j
se| tj	|||dS | |S rR  )rZ   r   rS  r   rL   rO   rj   r*   r   r   ri   r   r   r   rm   r   r   rT  r)   r)   r-   r     s   



zasech._eval_as_leading_termc                 C   s  ddl m} | jd }||d}|tju rtddd}ttj|d  t	
|dd| }	tj| jd  }
|
|}|
| | }||dsV|dkrP|dS |t|S ttj| j|||d}| t|  }|	 ||  ||| | S |tju 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u r|S |jsd| jrF|||r|nd}t|jr4|js)|d jr,| S |dt t  S t|jsF| t	j||||d	S |S 
Nr   )Or8  T)Zpositiver3   r2   rW  r   )r'  rx  rZ   r   r   rL   r   rt  r*   r   nseriesr   is_meromorphicr   rX  removeOr   powsimpr  r   r   r   rj   ri   r   r   r   r\   rs   ry   r   r   rx  rP   r   r8  ZserZarg1rM  gZres1rZ  rU  r)   r)   r-   rX    sJ   

&
&
&
$&zasech._eval_nseriesc                 C   r_   r`   r   r[   r)   r)   r-   rc     rd   zasech.inversec                 K   s,   t d| td| d td| d   S r   r[  r   r)   r)   r-   r]    s   ,zasech._eval_rewrite_as_logc                 K   rr  r   )rn   r   r)   r)   r-   r`    r   zasech._eval_rewrite_as_acoshc                 K   s:   t d| d t dd|   ttt|  ttj   S r   )r   r   rb   r   r   r=   r   r)   r)   r-   ri    s   ,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 r^  )r   r   r   ro   r\  r)   r)   r-   r_    s   Z.zasech._eval_rewrite_as_atanhc                 K   s8   t d| d t dd|   td ttt|    S r^  )r   r   r   acschr\  r)   r)   r-   _eval_rewrite_as_acsch  s   8zasech._eval_rewrite_as_acschr   r}   re  )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  rc   r]  r   r`  ri  r_  r  r)   r)   r)   r-   rt  &  s"    
%



-rt  c                   @   rs  )r  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/

    r2   c                 C   s<   |dkr| j d }d|d tdd|d     S t| |ru  rf  rv  r)   r)   r-   r^     s   
 
zacsch.fdiffc                 C   s   |j r<|tju rtjS |tju rtjS |tju rtjS |jr!tjS |tju r.t	dt
d S |tju r<t	dt
d  S |jrLt }||v rL|| t S |tju rTtjS |jrZtjS |jr`tjS | rj| |  S d S r^  )rf   r   rg   rE   rO   rF   rh   rj   rL   r   r   r  r*  rC   r   is_infiniterk   )rq   rP   rg  r)   r)   r-   ru   	  s4   





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 )Nr   r3   r2   rA   r6   )	r   r   rO   r   rw   r   r=   r   r  rP  r)   r)   r-   r{   +  s   ."zacsch.taylor_termNr   c                 C   s   | j d }||d }|t ttjfv r!| tj|||dS |tj	u r-d| 
|S |jrvd|d  jrv|||r>|nd}t|jrVt|jrU| | tt  S n t|jrkt|jrj| | tt  S n| tj|||dS | |S rR  )rZ   r   rS  r   r   rO   r*   r   r   rj   r   r   r   r   r   r   rm   r   ri   rT  r)   r)   r-   r   =  s$   






zacsch._eval_as_leading_termc                 C   s  ddl m} | jd }||d}|tu rtddd}tt|d  t	|dd| }	t | jd  }
|

|}|
| | }||ds[|dkrN|dS t t d |t| S ttj| j|||d}| t|  }|	 ||  ||| | }|S |tjt krt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u r|S |jr^d|d  jr^| jd ||r%|nd}t|jr=t|jr;| tt  S |S t|jrRt|jrP| tt  S |S | tj||||d	S |S rw  )r'  rx  rZ   r   r   r   r  r*   r   ry  r   rz  r   r   r   rL   rX  r{  r   r|  r  r   rj   r   r   r   r   r   ri   r}  r)   r)   r-   rX  R  sR   
$
*&&
(&zacsch._eval_nseriesc                 C   r_   r`   r   r[   r)   r)   r-   rc     rd   zacsch.inversec                 K   s    t d| td|d  d  S r^  r[  r   r)   r)   r-   r]    r"  zacsch._eval_rewrite_as_logc                 K   rr  r   ra   r   r)   r)   r-   ri    r   zacsch._eval_rewrite_as_asinhc                 K   s:   t tdt |  tt | d  tt |  ttj   S r   )r   r   rn   r   r   r=   r   r)   r)   r-   r`    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=   ro   )r\   rP   r   Zarg2Zarg2p1r)   r)   r-   r_    s
   zacsch._eval_rewrite_as_atanhc                 C   rd  r}   )rZ   r  r   r)   r)   r-   r     r   zacsch._eval_is_zeror   r}   re  )rH   rI   rJ   rK   r^   r   ru   r   r   r{   r   rX  rc   r]  r   ri  r`  r_  r   r)   r)   r)   r-   r    s"    
%
!


0r  N)IZ
sympy.corer   r   r   Zsympy.core.addr   Zsympy.core.functionr   r   Zsympy.core.logicr   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(   r1   r>   rC   rG   r/   rV   rW   rY   r   r   r3  r   r   rH  rb   rn   ro   rp   rt  r  r)   r)   r)   r-   <module>   s\    4


#" U w V -JG; % /   7