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

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__
unbranchedr*   r*   r*   r.   r2   j   s    	r2   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   	make_argsr   Oneis_Mulas_two_termsis_RationalZeror@   )argipiaKpm1m2r*   r*   r.   _peeloff_ipiw   s   

r]   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
    r5   c                 C       |dkrt | jd S t| |)z@
        Returns the first derivative of this function.
        r5   r   )coshargsr   selfargindexr*   r*   r.   fdiff   s   
z
sinh.fdiffc                 C      t S z7
        Returns the inverse of this function.
        asinhrb   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   r5   r6   )	is_Numberr   NaNrH   rI   is_zerorU   is_negativeComplexInfinityr(   r   r&   could_extract_minus_signis_Addr]   r   r^   r`   funcri   ra   acoshr   atanhacoth)clsrV   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   r6   rD   r5   r   rU   r   lenr   nrz   previous_termsrZ   r*   r*   r.   taylor_term   s   zsinh.taylor_termc                 C      |  | jd  S Nr   rt   ra   	conjugaterc   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
ra   is_extended_realexpandr   rU   as_real_imagr^   r"   r`   r&   rc   deephintsr   r   r*   r*   r.   r     s   
" zsinh.as_real_imagc                 K   $   | j dd|i|\}}||t  S Nr   r*   r   r   rc   r   r   re_part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rationalr5   )trig)
ra   r   rs   rS   as_coeff_Mulr   rQ   
is_Integerr^   r`   rc   r   r   rV   rz   ycoefftermsr*   r*   r.   _eval_expand_trig     
(zsinh._eval_expand_trigNc                 K      t |t |  d S Nr6   r   rc   rV   limitvarkwargsr*   r*   r.   _eval_rewrite_as_tractable&     zsinh._eval_rewrite_as_tractablec                 K   r   r   r   rc   rV   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   r`   r   r   r*   r*   r.   _eval_rewrite_as_cosh2     zsinh._eval_rewrite_as_coshc                 K   s"   t tj| }d| d|d   S Nr6   r5   tanhr   r@   rc   rV   r   	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@   rc   rV   r   	coth_halfr*   r*   r.   _eval_rewrite_as_coth9  r   zsinh._eval_rewrite_as_cothc                 K      dt | S Nr5   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)
ra   as_leading_termsubsr   rn   limitrp   ro   	is_finitert   rc   rz   r   r   rV   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ra   is_realr   r   ro   rc   rV   r   r   r*   r*   r.   _eval_is_realM  s
   

zsinh._eval_is_realc                 C      | j d jrdS d S r   ra   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   ra   r   is_positiver   r*   r*   r.   _eval_is_positive[     zsinh._eval_is_positivec                 C   r   r   ra   r   rp   r   r*   r*   r.   _eval_is_negative_  r   zsinh._eval_is_negativec                 C      | j d }|jS r   ra   r   rc   rV   r*   r*   r.   _eval_is_finitec     
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S r   )r]   ra   ro   
is_integerrc   restipi_multr*   r*   r.   _eval_is_zerog  s   zsinh._eval_is_zeror5   Tr   r   )rK   rL   rM   rN   re   rj   classmethodr|   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.   r^      s8    

	
0





r^   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 )4r`   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
    r5   c                 C   r_   Nr5   r   r^   ra   r   rb   r*   r*   r.   re     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"   r5   r6   )(sympy.functions.elementary.trigonometricr"   rm   r   rn   rH   rI   ro   rQ   rp   rq   r(   rr   rs   r]   r   r   r`   r^   rt   ri   r   ra   ru   rv   rw   )rx   rV   r"   ry   rz   r{   r*   r*   r.   r|     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   r6   r5   rD   r}   r   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   )
ra   r   r   r   rU   r   r`   r"   r^   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   )
ra   r   rs   rS   r   r   rQ   r   r`   r^   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 Nr5   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 Nr6   Fr   r   r^   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_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   )ra   r   r   r   rn   r   rp   ro   rQ   r   rt   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   )ra   r   is_imaginaryr   r   ro   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   r6   TFr7   ra   r   r   ro   r   r	   rc   zrz   r   ymodyzero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   )r]   ra   ro   r   r@   r   r   r*   r*   r.   r   ]  s   
zcosh._eval_is_zeror   r   r   r   )rK   rL   rM   rN   re   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*   r*   r.   r`   m  s4    

/




 r`   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
    r5   c                 C   s*   |dkrt jt| jd d  S t| |Nr5   r   r6   )r   rQ   r   ra   r   rb   r*   r*   r.   re   w  s   
z
tanh.fdiffc                 C   rf   rg   rv   rb   r*   r*   r.   rj   }  rk   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 rl   )rm   r   rn   rH   rQ   rI   NegativeOnero   rU   rp   rq   r(   rr   r   r'   rs   r]   r   r   r   rt   ri   ra   r   ru   rv   rw   )rx   rV   ry   rz   r{   tanhmr*   r*   r.   r|     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   r6   r5   )r   rU   r   r   r   )r   rz   r   rX   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   r6   r   )rc   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,   rz   r*   r*   r.   
<listcomp>  s    z*tanh._eval_expand_trig.<locals>.<listcomp>r5   r6   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*  )
ra   rs   r~   r%  r)   rR   r   r   r   r   )	rc   r   rV   r   TXrZ   ir   dr*   r(  r.   r     s$   

  ztanh._eval_expand_trigNc                 K   s$   t | t |}}|| ||  S r   r   rc   rV   r   r   neg_exppos_expr*   r*   r.   r        ztanh._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   rc   rV   r   r/  r0  r*   r*   r.   r     r1  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     r6  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   )Orderr5   sympy.series.orderr9  ra   r   free_symbolscontainsrt   rc   rz   r   r   r9  rV   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   Tr6   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   r6   FT)ra   r   r"   r^   	is_numberr   )rc   rV   r   r   r  r*   r*   r.   r   &  s   
ztanh._eval_is_finitec                 C   s   | j d }|jr
dS d S r   ra   ro   r   r*   r*   r.   r   2  s   
ztanh._eval_is_zeror   r   r   r   )rK   rL   rM   rN   re   rj   r   r|   r   r   r   r   r   r   r   r   r4  r5  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
    r5   c                 C   s(   |dkrdt | jd d  S t| |)Nr5   r8   r   r6   r   rb   r*   r*   r.   re   L     
z
coth.fdiffc                 C   rf   rg   )rw   rb   r*   r*   r.   rj   R  rk   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 rl   )rm   r   rn   rH   rQ   rI   r  ro   rq   rp   r(   rr   r   r#   rs   r]   r   r   r   rt   ri   ra   r   ru   rv   rw   )rx   rV   ry   rz   r{   cothmr*   r*   r.   r|   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 rl   r   r   rU   r   r   r   rz   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   r6   )r   r"   r&   ra   r   r   r   rU   r   r^   r`   )rc   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     r1  zcoth._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   r2  r*   r*   r.   r     r1  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     rE  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 r8  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>r8   r6   r5   Tr   Fr   )ra   rs   r~   r%  appendr)   r   rR   r   r   r   r   )
rc   r   rV   CXrZ   r   r,  r   rz   cr*   r*   r.   r     s"   

&zcoth._eval_expand_trigr   r   r   r   )rK   rL   rM   rN   re   rj   r   r|   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 )Nrj   r   r5   )rr   rK  rL  _reciprocal_ofr|   hasattrrj   ra   )rx   rV   tr*   r*   r.   r|     s   

z!ReciprocalHyperbolicFunction.evalc                 O   s$   |  | jd }t|||i |S r   )rM  ra   getattr)rc   method_namera   r   or*   r*   r.   _call_reciprocal  s   z-ReciprocalHyperbolicFunction._call_reciprocalc                 O   s,   | j |g|R i |}|d urd| S |S r   )rS  )rc   rQ  ra   r   rO  r*   r*   r.   _calculate_reciprocal  s   z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s2   |  ||}|d ur|| |krd| S d S d S r   )rS  rM  )rc   rQ  rV   rO  r*   r*   r.   _rewrite_reciprocal  s   z0ReciprocalHyperbolicFunction._rewrite_reciprocalc                 K      |  d|S )Nr   rU  r   r*   r*   r.   r     r   z1ReciprocalHyperbolicFunction._eval_rewrite_as_expc                 K   rV  )Nr   rW  r   r*   r*   r.   r     r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   rV  )Nr   rW  r   r*   r*   r.   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   rV  )Nr   rW  r   r*   r*   r.   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s"   d|  | jd  j|fi |S r   )rM  ra   r   )rc   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   )rT  )rc   r   r*   r*   r.   r   !  r  z.ReciprocalHyperbolicFunction._eval_expand_trigr   c                 C   s   d|  | jd  |S r   )rM  ra   r   )rc   rz   r   r   r*   r*   r.   r   $  r   z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS r   )rM  ra   r   r   r*   r*   r.   r   '  r   z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )rM  ra   r   r   r*   r*   r.   r   *  r   z,ReciprocalHyperbolicFunction._eval_is_finiter   r   r   )rK   rL   rM   rN   rM  rK  r   __annotations__rL  r   r|   rS  rT  rU  r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r.   rJ    s*   
 




rJ  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
    Tr5   c                 C   0   |dkrt | jd  t| jd  S t| |)z?
        Returns the first derivative of this function
        r5   r   )r   ra   r   r   rb   r*   r*   r.   re   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   r5   r6   rC  rD  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   r^   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   )rK   rL   rM   rN   r^   rM  rL  re   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
    Tr5   c                 C   rY  r   )r   ra   r  r   rb   r*   r*   r.   re     s   
z
sech.fdiffc                 G   s:   | dk s
| d dkrt jS t|}t| t|  ||   S r  )r   rU   r   r   r   r   rz   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   rZ  r  r  r   r*   r*   r.   r	    r[  zsech._eval_rewrite_as_sinhc                 K   r   r   r`   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   )rK   rL   rM   rN   r`   rM  rK  re   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)rK   rL   rM   rN   r*   r*   r*   r.   r_    s    r_  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d Zdd  Zd	S )$ri   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
    r5   c                 C   s,   |dkrdt | jd d d  S t| |r  )r   ra   r   rb   r*   r*   r.   re     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 )Nr6   r5   r   TF)rm   r   rn   rH   rI   ro   rU   rQ   r   r   r  rp   rq   r(   r   r    rr   
isinstancer^   ra   r?  r   r   r   r   is_even)	rx   rV   ry   r  rr,  fr{   evenr*   r*   r.   r|     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   r6   rD   r5   )r   rU   r   r~   r   r@   r   r  r   rz   r   rZ   r'  Rr  r*   r*   r.   r      s   &zasinh.taylor_termNr   c                 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   r5   r6   )ra   r   cancelro   r   r   rn   rt   r   r   rq   r+   r   r   rp   r   r   r   r   r   rc   rz   r   r   rV   x0r3   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   r   r   r5   r6   )ra   r   r   r+   r   _eval_nseriesr   r   rq   rp   r   r   r   r   r   	rc   rz   r   r   r   rV   r   resrm  r*   r*   r.   rp  -  s&   





zasinh._eval_nseriesc                 K   s   t |t|d d  S r   r   r   rc   rz   r   r*   r*   r.   _eval_rewrite_as_logF     zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S Nr5   r6   )rv   r   rt  r*   r*   r.   _eval_rewrite_as_atanhK  rv  zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S rw  )r   r   ru   r   )rc   rz   r   ixr*   r*   r.   _eval_rewrite_as_acoshN  s   ,zasinh._eval_rewrite_as_acoshc                 K   r3  r   )r   r    rt  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   r6   )r   r   r   rt  r*   r*   r.   _eval_rewrite_as_acosU      zasinh._eval_rewrite_as_acosc                 C   rf   rg   r\  rb   r*   r*   r.   rj   X  rk   zasinh.inversec                 C      | j d jS r   r@  r   r*   r*   r.   r   ^  r   zasinh._eval_is_zeroc                 C   r~  r   r   r   r*   r*   r.   r   a  r   zasinh._eval_is_extended_realc                 C   r~  r   r   r   r*   r*   r.   r   d  r   zasinh._eval_is_finiter   r   r   )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  ru  r   rx  rz  r{  r|  rj   r   r   r   r*   r*   r*   r.   ri     s(    

-


ri   c                   @   r`  )$ru   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
    r5   c                 C   s8   |dkr| j d }dt|d t|d   S t| |r   ra   r   r   )rc   rd   rV   r*   r*   r.   re   ~  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 )Nr6   r   TF)rm   r   rn   rH   rI   ro   r   r   rQ   rU   r  r?  rA   r   rq   r@   ra  r`   ra   r   r   r   r   rb  is_nonnegativerp   is_nonpositiver   )	rx   rV   	cst_tabler  rc  r,  rd  r{   re  r*   r*   r.   r|     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 rf  )	r   r   r   rU   r   r~   r   r@   r   rg  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 |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 ri  )ra   r   rj  r   rQ   rU   rq   r+   r   r   rn   rt   r   r   rp   r   r   r   r   r   rk  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 rn  ra   r   r   rQ   r  r+   r   rp  r   rq   rp   r   r   r   r   r   rq  r*   r*   r.   rp    s    





zacosh._eval_nseriesc                 K   s    t |t|d t|d   S r   rs  rt  r*   r*   r.   ru    r}  zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   rt  r*   r*   r.   r|    r}  zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S rw  )r   r   r    rt  r*   r*   r.   r{       (zacosh._eval_rewrite_as_asinc                 K   s4   t |d t d|  td ttt| dd   S Nr5   r6   Fr   )r   r   r   ri   rt  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 rw  )r   r   rv   )rc   rz   r   sxm1s1mxsx2m1r*   r*   r.   rx    s   &zacosh._eval_rewrite_as_atanhc                 C   rf   rg   r^  rb   r*   r*   r.   rj     rk   zacosh.inversec                 C   s   | j d d jr
dS d S )Nr   r5   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   r5   )r	   ra   r   is_extended_nonnegativer   r*   r*   r.   r     r}  zacosh._eval_is_extended_realc                 C   r~  r   r   r   r*   r*   r.   r      r   zacosh._eval_is_finiter   r   r  )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  ru  r   r|  r{  r  rx  rj   r   r   r   r*   r*   r*   r.   ru   h  s(    

6


ru   c                   @   s   e Zd ZdZdddZedd Zeedd Z	dddZ
dddZdd ZeZdd Zdd Zdd Zdd Zdd ZdddZd	S ) rv   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
    r5   c                 C   (   |dkrdd| j d d   S t| |r  ra   r   rb   r*   r*   r.   re   8  rA  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   AccumBoundsr6   TF)rm   r   rn   ro   rU   rQ   rH   r  rI   r   r!   rp   rq   !sympy.calculus.accumulationboundsr  r   r(   rr   ra  r   ra   r?  r   r   r   rb  )
rx   rV   r  ry   r  rc  r,  rd  re  r{   r*   r*   r.   r|   >  sT   






z
atanh.evalc                 G   s.   | dk s
| d dkrt jS t|}||  |  S Nr   r6   )r   rU   r   r]  r*   r*   r.   r   m  s   zatanh.taylor_termNr   c                 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 ri  )ra   r   rj  ro   r   r   rn   rt   r   rQ   rq   r+   r   r   rp   r   r   r   r   r   rk  r*   r*   r.   r   v  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 rn  r  rq  r*   r*   r.   rp    s&   



zatanh._eval_nseriesc                 K   s   t d| t d|  d S rw  r   rt  r*   r*   r.   ru    r[  zatanh._eval_rewrite_as_logc                 K   s\   t d|d d  }t| dt |d    t | t d|d   t | | t|  S rw  )r   r   ri   )rc   rz   r   rd  r*   r*   r.   r    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 r  r	   ra   r   r  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 r  r
   r   ra   ro   r   r*   r*   r.   r     r  zatanh._eval_is_finitec                 C   r~  r   )ra   r  r   r*   r*   r.   _eval_is_imaginary  r   zatanh._eval_is_imaginaryc                 C   rf   rg   rF  rb   r*   r*   r.   rj     rk   zatanh.inverser   r   r  )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  ru  r   r  r   r   r   r  rj   r*   r*   r*   r.   rv   $  s$    

.

rv   c                   @   s   e Zd ZdZdddZedd Zeedd Z	dddZ
dddZdd ZeZdd Zdd ZdddZdd Zdd Zd	S )rw   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
    r5   c                 C   r  r  r  rb   r*   r*   r.   re     rA  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   )rm   r   rn   rH   rU   rI   ro   r   r   rQ   r  rp   rq   r(   r   rr   r@   )rx   rV   ry   r*   r*   r.   r|     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   rU   r   r]  r*   r*   r.   r     s   zacoth.taylor_termNr   c                 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   r5   r   r6   )ra   r   rj  r   rq   r   rn   rt   r   rQ   rU   r+   r   r   r   r   r   r   rp   r   r   rk  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 rn  )ra   r   r   rQ   r  r+   r   rp  r   rq   r   r   r   r   rp   r   r   rq  r*   r*   r.   rp  *  s&   



zacoth._eval_nseriesc                 K   s$   t dd|  t dd|   d S rw  r  rt  r*   r*   r.   ru  C  r6  zacoth._eval_rewrite_as_logc                 K      t d| S r   r  rt  r*   r*   r.   rx  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   ri   rt  r*   r*   r.   r  K  s   J*zacoth._eval_rewrite_as_asinhc                 C   rf   rg   r7  rb   r*   r*   r.   rj   O  rk   zacoth.inversec                 C   s4   t | jd jt| jd d j| jd d jggS r  )r	   ra   r   r   r  is_extended_nonpositiver   r*   r*   r.   r   U  r  zacoth._eval_is_extended_realc                 C   r  r  r  r   r*   r*   r.   r   X  r  zacoth._eval_is_finiter   r   r  )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  ru  r   rx  r  rj   r   r   r*   r*   r*   r.   rw     s"    


	

rw   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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/

    r5   c                 C   s4   |dkr| j d }d|td|d    S t| |Nr5   r   r8   r6   r  rc   rd   r  r*   r*   r.   re     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 )Nr6   r   r  )rm   r   rn   rH   r   r   rI   ro   rQ   rU   r  r?  rJ   r   rq   r  r  )rx   rV   r  r  r*   r*   r.   r|     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   r6   r5   rD   r9   r8   )r   r   rU   r   r~   r   r@   r   rg  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 |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 ri  )ra   r   rj  r   rQ   rU   rq   r+   r   r   rn   rt   r   r   rp   r   r   r   r   r   rk  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   )OrO  T)positiver6   r5   ro  r   )r;  r  ra   r   r   rQ   r   r  r+   r   nseriesr   is_meromorphicr   rp  removeOr   powsimpr  r   r   r   rq   rp   r   r   r   rc   rz   r   r   r   r  rV   r   rO  serarg1rd  gres1rr  rm  r*   r*   r.   rp    sJ   

&
&
&
$&zasech._eval_nseriesc                 C   rf   rg   r  rb   r*   r*   r.   rj      rk   zasech.inversec                 K   s,   t d| td| d td| d   S r   rs  r   r*   r*   r.   ru    s   ,zasech._eval_rewrite_as_logc                 K   r  r   )ru   r   r*   r*   r.   rz    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   ri   r   r   r@   r   r*   r*   r.   r    s   0zasech._eval_rewrite_as_asinhc                 K   s   t t dt|td|   t d t|  t|  t d t|d  t|d     td|d  t|d  ttd|d    S rw  )r   r   r   rv   rt  r*   r*   r.   rx    s   Z.zasech._eval_rewrite_as_atanhc                 K   s<   t d| d t dd|   td ttt| dd   S r  )r   r   r   acschrt  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 r  r  r   r*   r*   r.   r     s   *zasech._eval_is_extended_realc                 C      t | jd jS r   r
   ra   ro   r   r*   r*   r.   r     r  zasech._eval_is_finiter   r   r  )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  rj   ru  r   rz  r  rx  r  r   r   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/

    r5   c                 C   s<   |dkr| j d }d|d tdd|d     S t| |r  r  r  r*   r*   r.   re   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 rw  )rm   r   rn   rH   rU   rI   ro   rq   rQ   r   r   r  r?  rF   r   is_infiniterr   )rx   rV   r  r*   r*   r.   r|   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   r6   r5   rD   r9   )	r   r   rU   r   r~   r   r@   r   r  rg  r*   r*   r.   r   o  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 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 ri  )ra   r   rj  r   r   rU   r+   r   r   rn   rt   r   r   rq   r  r   r   r   r   r   rp   rk  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 r  )r;  r  ra   r   r   r   r  r+   r   r  r   r  r   r   r   rQ   rp  r  r   r  r  r   rq   r  r   r   r   r   rp   r  r*   r*   r.   rp    sR   
$
*&&
(&zacsch._eval_nseriesc                 C   rf   rg   r   rb   r*   r*   r.   rj     rk   zacsch.inversec                 K   s    t d| td|d  d  S rw  rs  r   r*   r*   r.   ru    r}  zacsch._eval_rewrite_as_logc                 K   r  r   rh   r   r*   r*   r.   r    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   ru   r   r   r@   r   r*   r*   r.   rz    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@   rv   )rc   rV   r   arg2arg2p1r*   r*   r.   rx    s
   zacsch._eval_rewrite_as_atanhc                 C   r~  r   )ra   r  r   r*   r*   r.   r     r   zacsch._eval_is_zeroc                 C   r~  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   r   r  )rK   rL   rM   rN   re   r   r|   r   r   r   r   rp  rj   ru  r   r  rz  rx  r   r   r   r*   r*   r*   r.   r     s&    
%
!


0r  N)J
sympy.corer   r   r   sympy.core.addr   sympy.core.functionr   r   sympy.core.logicr   r	   r
   r   sympy.core.numbersr   r   r   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   r   r   %sympy.functions.combinatorial.numbersr   r   r   $sympy.functions.elementary.complexesr   r   r   &sympy.functions.elementary.exponentialr   r   r   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   sympy.polys.specialpolysr)   r4   rA   rF   rJ   r2   r]   r^   r`   r   r   rJ  r   r  r_  ri   ru   rv   rw   r  r  r*   r*   r*   r.   <module>   s\    4


#" U w V -JG; 3 = &  E