o
    GZh                    @   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)DefinedFunction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*   T/var/www/auris/lib/python3.10/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  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 )Nr4   r8   r;   r3   r9   
   r:   r7   r5   )r   r   r   r   r   r*   r*   r*   r.   _acsch_table3   s   
  rD   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 )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   sZ   	
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   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   

rW   c                   @   s   e Zd ZdZd3ddZd3ddZedd Zee	d	d
 Z
dd Zd4ddZd4ddZd4ddZd5d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& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 ZdS )6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       |dkrt | jd S t| |)z@
        Returns the first derivative of this function.
        r3   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   r3   r4   )	is_Numberr   NaNrF   rG   is_zerorP   is_negativeComplexInfinityr(   r   r&   could_extract_minus_signis_AddrW   r   rX   rZ   funcrc   r[   acoshr   atanhacoth)clsrQ   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   r4   rB   r3   r   rP   r   lenr   nrt   previous_termsrT   r*   r*   r.   taylor_term   s   zsinh.taylor_termc                 C      |  | jd  S Nr   rn   r[   	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
r[   is_extended_realexpandr   rP   as_real_imagrX   r"   rZ   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rationalr3   )Ztrig)
r[   r   rm   rO   as_coeff_Mulr   rM   
is_IntegerrX   rZ   r]   r   r   rQ   rt   ycoefftermsr*   r*   r.   _eval_expand_trig     
(zsinh._eval_expand_trigNc                 K      t |t |  d S Nr4   r   r]   rQ   limitvarkwargsr*   r*   r.   _eval_rewrite_as_tractable&     zsinh._eval_rewrite_as_tractablec                 K   r   r   r   r]   rQ   r   r*   r*   r.   _eval_rewrite_as_exp)  r   zsinh._eval_rewrite_as_expc                 K   s   t  tt |  S Nr   r&   r   r*   r*   r.   _eval_rewrite_as_sin,     zsinh._eval_rewrite_as_sinc                 K   s   t  tt |  S r   r   r$   r   r*   r*   r.   _eval_rewrite_as_csc/  r   zsinh._eval_rewrite_as_cscc                 K   s   t  t|tt  d   S r   r   rZ   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     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  r   zsinh._eval_rewrite_as_cothc                 K      dt | S Nr3   cschr   r*   r*   r.   _eval_rewrite_as_csch=     zsinh._eval_rewrite_as_cschc                 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)
r[   as_leading_termsubsr   rh   limitrj   ri   	is_finitern   r]   rt   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r[   is_realr   r   ri   r]   rQ   r   r   r*   r*   r.   _eval_is_realM  s
   

zsinh._eval_is_realc                 C      | j d jrdS d S r   r[   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~   r[   r   is_positiver   r*   r*   r.   _eval_is_positive[     zsinh._eval_is_positivec                 C   r   r~   r[   r   rj   r   r*   r*   r.   _eval_is_negative_  r   zsinh._eval_is_negativec                 C      | j d }|jS r~   r[   r   r]   rQ   r*   r*   r.   _eval_is_finitec     
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S r~   )rW   r[   ri   
is_integerr]   restZipi_multr*   r*   r.   _eval_is_zerog  s   zsinh._eval_is_zeror3   Tr   )rI   rJ   rK   rL   r_   rd   classmethodrv   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.   rX      s8    

	
0




rX   c                   @   s   e Zd ZdZd/ddZedd Zeedd Z	d	d
 Z
d0ddZd0ddZd0ddZd1d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$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZdS )2rZ   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   rY   Nr3   r   rX   r[   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"   r3   r4   )(sympy.functions.elementary.trigonometricr"   rg   r   rh   rF   rG   ri   rM   rj   rk   r(   rl   rm   rW   r   r   rZ   rX   rn   rc   r   r[   ro   rp   rq   )rr   rQ   r"   rs   rt   ru   r*   r*   r.   rv     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   r4   r3   rB   rw   ry   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   )
r[   r   r   r   rP   r   rZ   r"   rX   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   )
r[   r   rm   rO   r   r   rM   r   rZ   rX   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| ddS NFevaluater"   r   r   r*   r*   r.   _eval_rewrite_as_cos     zcosh._eval_rewrite_as_cosc                 K      dt t| dd S Nr3   Fr   r%   r   r   r*   r*   r.   _eval_rewrite_as_sec  r   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        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_sechc                 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   )r[   r   r   r   rh   r   rj   ri   rM   r   rn   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   )r[   r   is_imaginaryr   r   ri   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   r4   TFr5   r[   r   r   ri   r   r	   r]   zrt   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~   )rW   r[   ri   r   r>   r   r   r*   r*   r.   r   ]  s   
zcosh._eval_is_zeror   r   r   )rI   rJ   rK   rL   r_   r   rv   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.   rZ   m  s4    

/



 rZ   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d0ddZdd Zd1d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$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. ZdS )2r   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| |Nr3   r   r4   )r   rM   r   r[   r   r\   r*   r*   r.   r_   w  s   
z
tanh.fdiffc                 C   r`   ra   rp   r\   r*   r*   r.   rd   }  re   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 rf   )rg   r   rh   rF   rM   rG   NegativeOneri   rP   rj   rk   r(   rl   r   r'   rm   rW   r   r   r   rn   rc   r[   r   ro   rp   rq   )rr   rQ   rs   rt   ru   Ztanhmr*   r*   r.   rv     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   r4   r3   )r   rP   r   r   r   )rz   rt   r{   rR   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   r4   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 Fr   )r   r   r,   rt   r*   r*   r.   
<listcomp>  s    z*tanh._eval_expand_trig.<locals>.<listcomp>r3   r4   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  )
r[   rm   rx   r  r)   rN   r   r   r   r   )	r]   r   rQ   rz   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        ztanh._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   r]   rQ   r   r  r  r*   r*   r.   r     r  ztanh._eval_rewrite_as_expc                 K      t  tt | dd S r   )r   r'   r   r*   r*   r.   _eval_rewrite_as_tan  r   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  r   ztanh._eval_rewrite_as_cotc                 K   s$   t t| ttt  d | dd S r   r   r   r*   r*   r.   r        $ztanh._eval_rewrite_as_sinhc                 K   s$   t ttt  d | d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_cothc                 C   sD   ddl m} | jd |}||jv r|d||r|S | |S Nr   )Orderr3   sympy.series.orderr&  r[   r   Zfree_symbolscontainsrn   r]   rt   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   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   r4   FT)r[   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   r[   ri   r   r*   r*   r.   r   2  s   
ztanh._eval_is_zeror   r   r   )rI   rJ   rK   rL   r_   rd   r   rv   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  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| |)Nr3   r6   r   r4   r   r\   r*   r*   r.   r_   L     
z
coth.fdiffc                 C   r`   ra   )rq   r\   r*   r*   r.   rd   R  re   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 rf   )rg   r   rh   rF   rM   rG   r  ri   rk   rj   r(   rl   r   r#   rm   rW   r   r   r   rn   rc   r[   r   ro   rp   rq   )rr   rQ   rs   rt   ru   Zcothmr*   r*   r.   rv   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 rf   r   r   rP   r   r   rz   rt   r{   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   r4   )r   r"   r&   r[   r   r   r   rP   r   rX   rZ   )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 | dd t| S r   r   r   r*   r*   r.   r        &zcoth._eval_rewrite_as_sinhc                 K   s&   t  t| ttt  d | dd S r   r   r   r*   r*   r.   r     r0  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_negativec                 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>r6   r4   r3   Tr   Fr   )r[   rm   rx   r  appendr)   r   rN   r   r   r   r   )
r]   r   rQ   ZCXrT   rz   r  r   rt   cr*   r*   r.   r     s"   

&zcoth._eval_expand_trigr   r   r   )rI   rJ   rK   rL   r_   rd   r   rv   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 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 )Nrd   r   r3   )rl   r5  r6  _reciprocal_ofrv   hasattrrd   r[   )rr   rQ   tr*   r*   r.   rv     s   

z!ReciprocalHyperbolicFunction.evalc                 O   s$   |  | jd }t|||i |S r~   )r7  r[   getattr)r]   method_namer[   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;  r[   r   r9  r*   r*   r.   _calculate_reciprocal  s   z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s2   |  ||}|d ur|| |krd| S d S d S r   )r=  r7  )r]   r;  rQ   r9  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   rA  r   r*   r*   r.   r     r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   r@  )Nr   rA  r   r*   r*   r.   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   r@  )Nr   rA  r   r*   r*   r.   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s"   d|  | jd  j|fi |S r   )r7  r[   r   )r]   r   r   r*   r*   r.   r     s   "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_trigc                 C   s    d|  | jd  j|||dS )Nr3   r   r   )r7  r[   r   )r]   rt   r   r   r*   r*   r.   r   $      z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS r~   )r7  r[   r   r   r*   r*   r.   r   '  r   z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )r7  r[   r   r   r*   r*   r.   r   *  r   z,ReciprocalHyperbolicFunction._eval_is_finiter   r   )rI   rJ   rK   rL   r7  r5  r   __annotations__r6  r   rv   r=  r>  r?  r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   r4    s*   
 



r4  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   0   |dkrt | jd  t| jd  S t| |)z?
        Returns the first derivative of this function
        r3   r   )r   r[   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   r3   r4   r.  r/  r*   r*   r.   r|   N  s    zcsch.taylor_termc                 K   s   t tt | dd S r   r   r   r*   r*   r.   r   `  r   zcsch._eval_rewrite_as_sinc                 K   s   t tt | dd S r   r   r   r*   r*   r.   r   c  r   zcsch._eval_rewrite_as_cscc                 K      t t|t t d  dd S r   r   r   r*   r*   r.   r   f     zcsch._eval_rewrite_as_coshc                 K   r   r   rX   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   )rI   rJ   rK   rL   rX   r7  r6  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
    Tr3   c                 C   rD  r   )r   r[   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   rP   r   r   r   rz   rt   r{   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   rE  r   r   r   r*   r*   r.   r     rF  zsech._eval_rewrite_as_sinhc                 K   r   r   rZ   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   )rI   rJ   rK   rL   rZ   r7  r5  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)rI   rJ   rK   rL   r*   r*   r*   r.   rJ    s    rJ  c                          e Zd ZdZd ddZedd Zeedd Z	d	d
 Z
d! f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  ZS )"rc   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   s,   |dkrdt | jd d d  S t| |r  )r   r[   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 )Nr4   r3   r   TF)rg   r   rh   rF   rG   ri   rP   rM   r   r   r  rj   rk   r(   r   r    rl   
isinstancerX   r[   r+  r   r   r   r   is_even)	rr   rQ   rs   r  rr  fru   evenr*   r*   r.   rv     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   r4   rB   r3   )r   rP   r   rx   r   r>   r   r  rz   rt   r{   rT   r  Rr  r*   r*   r.   r|      s   &zasinh.taylor_termc                 C   s  | j d }||d }|jr||S |tju r)| ||}|jr'|S | S |t	 t	tj
fv r=| tj|||dS d|d  jr|||rK|nd}t|jrct|jrb| | t	t  S n t|jrxt|jrw| | t	t  S n| tj|||dS | |S Nr   r   r3   r4   )r[   r   cancelri   r   r   rh   rn   r   r   rk   r+   r   r   rj   r   r   r   r   r   r]   rt   r   r   rQ   Zx0r1   ndirr*   r*   r.   r     s.   







zasinh._eval_as_leading_termr   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   rz   r   r3   r4   )r[   r   r   r+   r   _eval_nseriessuperr   rk   rj   r   r   r   r   r   	r]   rt   rz   r   r   rQ   r   resrW  	__class__r*   r.   rZ  -  s&   





zasinh._eval_nseriesc                 K   s   t |t|d d  S r   r   r   r]   rt   r   r*   r*   r.   _eval_rewrite_as_logF     zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S Nr3   r4   )rp   r   ra  r*   r*   r.   _eval_rewrite_as_atanhK  rc  zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S rd  )r   r   ro   r   )r]   rt   r   Zixr*   r*   r.   _eval_rewrite_as_acoshN  s   ,zasinh._eval_rewrite_as_acoshc                 K   r   r   )r   r    ra  r*   r*   r.   _eval_rewrite_as_asinR  r   zasinh._eval_rewrite_as_asinc                 K   s    t tt | dd t t d  S )NFr   r4   )r   r   r   ra  r*   r*   r.   _eval_rewrite_as_acosU  rB  zasinh._eval_rewrite_as_acosc                 C   r`   ra   rG  r\   r*   r*   r.   rd   X  re   zasinh.inversec                 C      | j d jS r~   r,  r   r*   r*   r.   r   ^  r   zasinh._eval_is_zeroc                 C   ri  r~   r   r   r*   r*   r.   r   a  r   zasinh._eval_is_extended_realc                 C   ri  r~   r   r   r*   r*   r.   r   d  r   zasinh._eval_is_finiter   r   )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rb  r   re  rf  rg  rh  rd   r   r   r   __classcell__r*   r*   r^  r.   rc     s(    

-
rc   c                       rK  )"ro   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   s8   |dkr| j d }dt|d t|d   S t| |r   r[   r   r   )r]   r^   rQ   r*   r*   r.   r_   ~  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 )Nr4   r   TF)rg   r   rh   rF   rG   ri   r   r   rM   rP   r  r+  r?   r   rk   r>   rL  rZ   r[   r   r   r   r   rM  is_nonnegativerj   Zis_nonpositiver   )	rr   rQ   	cst_tabler  rN  r  rO  ru   rP  r*   r*   r.   rv     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 rQ  )	r   r   r   rP   r   rx   r   r>   r   rR  r*   r*   r.   r|     s   $zacosh.taylor_termc                 C   s   | j d }||d }|tj tjtjtjfv r%| tj	|||dS |tj
u r9| ||}|jr7|S | S |d jrs|||rE|nd}t|jrc|d jr]| |dt t  S | | S t|jss| tj	|||dS | |S rT  )r[   r   rU  r   rM   rP   rk   r+   r   r   rh   rn   r   r   rj   r   r   r   r   r   rV  r*   r*   r.   r     s$   






zacosh._eval_as_leading_termr   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 rX  r[   r   r   rM   r  r+   r   rZ  r[  rk   rj   r   r   r   r   r   r\  r^  r*   r.   rZ    s    





zacosh._eval_nseriesc                 K   s    t |t|d t|d   S r   r`  ra  r*   r*   r.   rb    rB  zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   ra  r*   r*   r.   rh    rB  zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S rd  )r   r   r    ra  r*   r*   r.   rg       (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   rc   ra  r*   r*   r.   _eval_rewrite_as_asinh	     4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 rd  )r   r   rp   )r]   rt   r   Zsxm1Zs1mxZsx2m1r*   r*   r.   re    s   &zacosh._eval_rewrite_as_atanhc                 C   r`   ra   rI  r\   r*   r*   r.   rd     re   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	   r[   r   is_extended_nonnegativer   r*   r*   r.   r     rB  zacosh._eval_is_extended_realc                 C   ri  r~   r   r   r*   r*   r.   r      r   zacosh._eval_is_finiter   rj  )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rb  r   rh  rg  rr  re  rd   r   r   r   rk  r*   r*   r^  r.   ro   h  s(    

6
ro   c                       s   e Zd ZdZdddZedd Zeedd Z	d	d
 Z
d f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  ZS )rp   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   (   |dkrdd| j d d   S t| |r  r[   r   r\   r*   r*   r.   r_   8  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   AccumBoundsr4   TF)rg   r   rh   ri   rP   rM   rF   r  rG   r   r!   rj   rk   !sympy.calculus.accumulationboundsry  r   r(   rl   rL  r   r[   r+  r   r   r   rM  )
rr   rQ   ry  rs   r  rN  r  rO  rP  ru   r*   r*   r.   rv   >  sT   






z
atanh.evalc                 G   s.   | dk s
| d dkrt jS t|}||  |  S Nr   r4   )r   rP   r   rH  r*   r*   r.   r|   m  s   zatanh.taylor_termc                 C   s  | j d }||d }|jr||S |tju r)| ||}|jr'|S | S |tj	 tj	tj
fv r?| tj|||dS d|d  jr|||rM|nd}t|jrb|jra| |tt  S nt|jrt|jrs| |tt  S n| tj|||dS | |S rT  )r[   r   rU  ri   r   r   rh   rn   r   rM   rk   r+   r   r   rj   r   r   r   r   r   rV  r*   r*   r.   r   v  s.   





zatanh._eval_as_leading_termr   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 rX  ro  r\  r^  r*   r.   rZ    s&   



zatanh._eval_nseriesc                 K   s   t d| t d|  d S rd  r   ra  r*   r*   r.   rb    rF  zatanh._eval_rewrite_as_logc                 K   s\   t d|d d  }t| dt |d    t | t d|d   t | | t|  S rd  )r   r   rc   )r]   rt   r   rO  r*   r*   r.   rr    s   ,zatanh._eval_rewrite_as_asinhc                 C   r   r   r,  r   r*   r*   r.   r     r   zatanh._eval_is_zeroc                 C   s.   t | jd jd| jd  j| jd d jgS rt  r	   r[   r   rm  r   r*   r*   r.   r     s   .zatanh._eval_is_extended_realc                 C   (   t t| jd d j| jd d jgS rt  r
   r   r[   ri   r   r*   r*   r.   r     rp  zatanh._eval_is_finitec                 C   ri  r~   )r[   r   r   r*   r*   r.   _eval_is_imaginary  r   zatanh._eval_is_imaginaryc                 C   r`   ra   r1  r\   r*   r*   r.   rd     re   zatanh.inverser   rj  )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rb  r   rr  r   r   r   r  rd   rk  r*   r*   r^  r.   rp   $  s$    

.rp   c                       s   e Zd ZdZdddZedd Zeedd Z	d	d
 Z
d fdd	Zdd ZeZdd Zdd ZdddZdd Zdd Z  ZS )rq   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   rv  r  rw  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   )rg   r   rh   rF   rP   rG   ri   r   r   rM   r  rj   rk   r(   r   rl   r>   )rr   rQ   rs   r*   r*   r.   rv     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 r{  )r   r   r   rP   r   rH  r*   r*   r.   r|     s   zacoth.taylor_termc                 C   s  | j d }||d }|tju rd| |S |tju r-| ||}|jr+|S | S |tj	 tj	tj
fv rC| tj|||dS |jrd|d  jr|||rT|nd}t|jri|jrh| |tt  S nt|jr{|jrz| |tt  S n| tj|||dS | |S )Nr   r3   r   r4   )r[   r   rU  r   rk   r   rh   rn   r   rM   rP   r+   r   r   r   r   r   r   rj   r   r   rV  r*   r*   r.   r     s.   





zacoth._eval_as_leading_termr   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 rX  )r[   r   r   rM   r  r+   r   rZ  r[  rk   r   r   r   r   rj   r   r   r\  r^  r*   r.   rZ  *  s&   



zacoth._eval_nseriesc                 K   s$   t dd|  t dd|   d S rd  r|  ra  r*   r*   r.   rb  C  r#  zacoth._eval_rewrite_as_logc                 K      t d| S r   r  ra  r*   r*   r.   re  H  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   rc   ra  r*   r*   r.   rr  K  s   J*zacoth._eval_rewrite_as_asinhc                 C   r`   ra   r$  r\   r*   r*   r.   rd   O  re   zacoth.inversec                 C   s4   t | jd jt| jd d j| jd d jggS rt  )r	   r[   r   r   ru  Zis_extended_nonpositiver   r*   r*   r.   r   U  rs  zacoth._eval_is_extended_realc                 C   r~  rt  r  r   r*   r*   r.   r   X  rp  zacoth._eval_is_finiter   rj  )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rb  r   re  rr  rd   r   r   rk  r*   r*   r^  r.   rq     s"    

	
rq   c                          e Zd ZdZdddZedd Zeedd Z	d	d
 Z
d f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  Z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   s4   |dkr| j d }d|td|d    S t| |Nr3   r   r6   r4   rl  r]   r^   r  r*   r*   r.   r_     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 )Nr4   r   rx  )rg   r   rh   rF   r   r   rG   ri   rM   rP   r  r+  rH   r   rk   rz  ry  )rr   rQ   rn  ry  r*   r*   r.   rv     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   r4   r3   rB   r7   r6   )r   r   rP   r   rx   r   r>   r   rR  r*   r*   r.   r|     s   ,zasech.taylor_termc                 C   s   | j d }||d }|tj tjtjtjfv r%| tj	|||dS |tj
u r9| ||}|jr7|S | S |jsAd| jry|||rH|nd}t|jri|jsX|d jr^| | S | |dt t  S t|jsy| tj	|||dS | |S rT  )r[   r   rU  r   rM   rP   rk   r+   r   r   rh   rn   r   r   rj   r   r   r   r   r   rV  r*   r*   r.   r     s$   




zasech._eval_as_leading_termr   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   )Or9  T)Zpositiver4   r3   rY  r   )r(  r  r[   r   r   rM   r   r  r+   r   nseriesr   is_meromorphicr   rZ  removeOr   powsimpr  r   r   r[  rk   rj   r   r   r   r]   rt   rz   r   r   r  rQ   r   r9  ZserZarg1rO  gZres1r]  rW  r^  r*   r.   rZ    sJ   

&
&
&
$&zasech._eval_nseriesc                 C   r`   ra   r   r\   r*   r*   r.   rd      re   zasech.inversec                 K   s,   t d| td| d td| d   S r   r`  r   r*   r*   r.   rb    s   ,zasech._eval_rewrite_as_logc                 K   r  r   )ro   r   r*   r*   r.   rf    r   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   rc   r   r   r>   r   r*   r*   r.   rr    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 rd  )r   r   r   rp   ra  r*   r*   r.   re    s   Z.zasech._eval_rewrite_as_atanhc                 K   s<   t d| d t dd|   td ttt| dd   S rq  )r   r   r   acschra  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 rt  r}  r   r*   r*   r.   r     s   *zasech._eval_is_extended_realc                 C      t | jd jS r~   r
   r[   ri   r   r*   r*   r.   r     r   zasech._eval_is_finiter   rj  )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rd   rb  r   rf  rr  re  r  r   r   rk  r*   r*   r^  r.   r  \  s&    
%

-r  c                       r  ) 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/

    r3   c                 C   s<   |dkr| j d }d|d tdd|d     S t| |r  rl  r  r*   r*   r.   r_   F  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 rd  )rg   r   rh   rF   rP   rG   ri   rk   rM   r   r   r  r+  rD   r   is_infiniterl   )rr   rQ   rn  r*   r*   r.   rv   M  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   r4   r3   rB   r7   )	r   r   rP   r   rx   r   r>   r   r  rR  r*   r*   r.   r|   o  s   ."zacsch.taylor_termc                 C   s  | j d }||d }|t ttjfv r!| tj|||dS |tj	u r5| 
||}|jr3|S | S |tju rAd| |S |jrd|d  jr|||rR|nd}t|jrjt|jri| 
| tt  S n t|jrt|jr~| 
| tt  S n| tj|||dS | 
|S rT  )r[   r   rU  r   r   rP   r+   r   r   rh   rn   r   r   rk   r   r   r   r   r   r   rj   rV  r*   r*   r.   r     s.   







zacsch._eval_as_leading_termr   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 r  )r(  r  r[   r   r   r   r  r+   r   r  r   r  r   r   r   rM   rZ  r  r   r  r  r[  rk   r   r   r   r   r   rj   r  r^  r*   r.   rZ    sR   
$
*&&
(&zacsch._eval_nseriesc                 C   r`   ra   r   r\   r*   r*   r.   rd     re   zacsch.inversec                 K   s    t d| td|d  d  S rd  r`  r   r*   r*   r.   rb    rB  zacsch._eval_rewrite_as_logc                 K   r  r   rb   r   r*   r*   r.   rr    r   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   ro   r   r   r>   r   r*   r*   r.   rf    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>   rp   )r]   rQ   r   Zarg2Zarg2p1r*   r*   r.   re    s
   zacsch._eval_rewrite_as_atanhc                 C   ri  r~   )r[   r  r   r*   r*   r.   r     r   zacsch._eval_is_zeroc                 C   ri  r~   r   r   r*   r*   r.   r     r   zacsch._eval_is_extended_realc                 C   r  r~   r  r   r*   r*   r.   r     r   zacsch._eval_is_finiter   rj  )rI   rJ   rK   rL   r_   r   rv   r   r   r|   r   rZ  rd   rb  r   rr  rf  re  r   r   r   rk  r*   r*   r^  r.   r     s&    
%
!
0r  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   rZ   r   r   r4  r   r   rJ  rc   ro   rp   rq   r  r  r*   r*   r*   r.   <module>   s\    4


#" U w V -JG; 3 = &  E