o
    *ήc7                     @   s  d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZ d dlmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
l m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ dd Z0G dd de
Z1dd Z2G dd de1Z3G dd de1Z4G dd de1Z5G dd de1Z6G dd de1Z7G dd de7Z8G dd  d e7Z9G 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:Z?G d-d. d.e:Z@d/S )0    )SsympifycacheitpiIRational)Add)FunctionArgumentIndexError)fuzzy_or	fuzzy_and	FuzzyBool)binomial	factorialRisingFactorial)	bernoullieulernC)Abs)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&   L/tmp/pip-target-vg8gfxp4/lib/python/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   
r0   c                   @   s   e Zd ZdZdZdS )r.   ze
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__
unbranchedr&   r&   r&   r*   r.      s    	r.   c                 C   s~   t jt j }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   PiImaginaryUnitr   	make_argsOneis_Mulas_two_termsis_RationalZeroHalf)argipiaKpm1m2r&   r&   r*   _peeloff_ipi)   s   

rF   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
       c                 C       |dkrt | jd S t| |)z@
        Returns the first derivative of this function.
        rH   r   )coshargsr
   selfargindexr&   r&   r*   fdiff_   s   
z
sinh.fdiffc                 C      t S z7
        Returns the inverse of this function.
        asinhrL   r&   r&   r*   inverseh      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rCtj
t| S | rM| |  S |jrpt|\}}|rp|tj tj
 }t|t| t|t|  S |jrvt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   rH      )	is_Numberr   NaNInfinityNegativeInfinityis_zeror=   is_negativeComplexInfinityr$   r7   r"   could_extract_minus_signis_AddrF   r6   rG   rJ   funcrS   rK   acoshr   atanhacoth)clsr?   i_coeffxmr&   r&   r*   evaln   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   rW   rH   r   r=   r   lenr   nrg   previous_termsrC   r&   r&   r*   taylor_term   s   zsinh.taylor_termc                 C      |  | jd  S Nr   ra   rK   	conjugaterM   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
rK   is_extended_realexpandr   r=   as_real_imagrG   r   rJ   r"   rM   deephintsreimr&   r&   r*   r}      s   
" zsinh.as_real_imagc                 K   &   | j dd|i|\}}||tj  S Nr   r&   r}   r   r7   rM   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rationalrH   )trig)
rK   r|   r`   r;   as_coeff_Mulr   r9   
is_IntegerrG   rJ   rM   r   r   r?   rg   ycoefftermsr&   r&   r*   _eval_expand_trig      
(zsinh._eval_expand_trigNc                 K      t |t |  d S NrW   r   rM   r?   limitvarkwargsr&   r&   r*   _eval_rewrite_as_tractable      zsinh._eval_rewrite_as_tractablec                 K   r   r   r   rM   r?   r   r&   r&   r*   _eval_rewrite_as_exp   r   zsinh._eval_rewrite_as_expc                 K      t  tt |  S Nr   r"   r   r&   r&   r*   _eval_rewrite_as_sin      zsinh._eval_rewrite_as_sinc                 K      t  tt |  S r   r   r    r   r&   r&   r*   _eval_rewrite_as_csc   r   zsinh._eval_rewrite_as_cscc                 K       t j t|t jt j d   S r   r   r7   rJ   r6   r   r&   r&   r*   _eval_rewrite_as_cosh       zsinh._eval_rewrite_as_coshc                 K   s"   t tj| }d| d|d   S NrW   rH   tanhr   r>   rM   r?   r   	tanh_halfr&   r&   r*   _eval_rewrite_as_tanh      zsinh._eval_rewrite_as_tanhc                 K   s"   t tj| }d| |d d  S r   cothr   r>   rM   r?   r   	coth_halfr&   r&   r*   _eval_rewrite_as_coth   r   zsinh._eval_rewrite_as_cothc                 K      dt | S NrH   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)
rK   as_leading_termsubsr   rY   limitr]   r\   	is_finitera   rM   rg   r   r   r?   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rK   is_realr}   r   r\   rM   r?   r   r   r&   r&   r*   _eval_is_real   s
   

zsinh._eval_is_realc                 C      | j d jrdS d S r   rK   r{   ru   r&   r&   r*   _eval_is_extended_real	     zsinh._eval_is_extended_realc                 C      | j d jr| j d jS d S rr   rK   r{   is_positiveru   r&   r&   r*   _eval_is_positive     zsinh._eval_is_positivec                 C   r   rr   rK   r{   r]   ru   r&   r&   r*   _eval_is_negative  r   zsinh._eval_is_negativec                 C      | j d }|jS rr   rK   r   rM   r?   r&   r&   r*   _eval_is_finite     
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S rr   )rF   rK   r\   
is_integerrM   restipi_multr&   r&   r*   _eval_is_zero  s   zsinh._eval_is_zerorH   Tr   rr   )r1   r2   r3   r4   rO   rT   classmethodri   staticmethodr   rp   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   rG   K   s8    

	
0





rG   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 )4rJ   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
    rH   c                 C   rI   NrH   r   rG   rK   r
   rL   r&   r&   r*   rO   3  s   
z
cosh.fdiffc                 C   sz  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rqt|\}}|rq|tj tj }t|t| t|t|  S |jrwt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   rH   rW   )(sympy.functions.elementary.trigonometricr   rX   r   rY   rZ   r[   r\   r9   r]   r^   r$   r_   r`   rF   r6   r7   rJ   rG   ra   rS   r   rK   rb   rc   rd   )re   r?   r   rf   rg   rh   r&   r&   r*   ri   9  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   rW   rH   rj   rk   rm   r&   r&   r*   rp   i  s   zcosh.taylor_termc                 C   rq   rr   rs   ru   r&   r&   r*   rv   w  rw   zcosh._eval_conjugateTc                 K   rx   )Nr   Fry   )
rK   r{   r|   r   r=   r}   rJ   r   rG   r"   r~   r&   r&   r*   r}   z  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   )
rK   r|   r`   r;   r   r   r9   r   rJ   rG   r   r&   r&   r*   r     r   zcosh._eval_expand_trigNc                 K      t |t |  d S r   r   r   r&   r&   r*   r     r   zcosh._eval_rewrite_as_tractablec                 K   r   r   r   r   r&   r&   r*   r     r   zcosh._eval_rewrite_as_expc                 K      t t| S r   r   r   r   r&   r&   r*   _eval_rewrite_as_cos  r   zcosh._eval_rewrite_as_cosc                 K      dt t|  S r   r!   r   r   r&   r&   r*   _eval_rewrite_as_sec     zcosh._eval_rewrite_as_secc                 K   r   r   r   r7   rG   r6   r   r&   r&   r*   _eval_rewrite_as_sinh  r   zcosh._eval_rewrite_as_sinhc                 K   s"   t tj| d }d| d|  S r   r   r   r&   r&   r*   r        zcosh._eval_rewrite_as_tanhc                 K   s"   t tj| d }|d |d  S r   r   r   r&   r&   r*   r     r   zcosh._eval_rewrite_as_cothc                 K   r   r   sechr   r&   r&   r*   _eval_rewrite_as_sech  r   zcosh._eval_rewrite_as_sechr   c                 C   sf   | j d j|||d}||d}|tju r#|j|d|jrdndd}|jr)tjS |j	r1| 
|S | S r   )rK   r   r   r   rY   r   r]   r\   r9   r   ra   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   )rK   r   is_imaginaryr}   r   r\   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   rW   TF   rK   r}   r   r\   r   r   rM   zrg   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   rr   r   r   r&   r&   r*   r     r   zcosh._eval_is_finitec                 C   s0   t | jd \}}|r|jr|tj jS d S d S rr   )rF   rK   r\   r   r>   r   r   r&   r&   r*   r     s   
zcosh._eval_is_zeror   r   r   rr   )r1   r2   r3   r4   rO   r   ri   r   r   rp   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r&   r&   r&   r*   rJ     s4    

/




 rJ   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
    rH   c                 C   s*   |dkrt jt| jd d  S t| |NrH   r   rW   )r   r9   r   rK   r
   rL   r&   r&   r*   rO   )  s   
z
tanh.fdiffc                 C   rP   rQ   rc   rL   r&   r&   r*   rT   /  rU   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rP| rItj t|  S tjt| S | rZ| |  S |jr|t|\}}|r|t|tj tj }|tj
u rxt|S t|S |jrt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 rV   )rX   r   rY   rZ   r9   r[   NegativeOner\   r=   r]   r^   r$   r_   r7   r#   r`   rF   r   r6   r   ra   rS   rK   r   rb   rc   rd   )re   r?   rf   rg   rh   tanhmr&   r&   r*   ri   5  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   rW   rH   )r   r=   r   r   r   )rn   rg   ro   rA   BFr&   r&   r*   rp   j  s   ztanh.taylor_termc                 C   rq   rr   rs   ru   r&   r&   r*   rv   y  rw   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   Fry   rW   rz   )rM   r   r   r   r   denomr&   r&   r*   r}   |  s   
"(ztanh.as_real_imagc           	         s   | j d }|jr7t|j }dd |j D }ddg}t|d D ]}||d   t||7  < q|d |d  S |jrs| \}jrsdkrst|  fddtdd dD } fddtdd dD }t	| t	|  S t|S )Nr   c                 S      g | ]
}t |d d qS Fevaluate)r   r   r(   rg   r&   r&   r*   
<listcomp>  s    z*tanh._eval_expand_trig.<locals>.<listcomp>rH   rW   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  )
rK   r`   rl   r  r%   r:   r   r   r   r   )	rM   r   r?   rn   TXrC   ir   dr&   r  r*   r     s$   

  ztanh._eval_expand_trigNc                 K   s$   t | t |}}|| ||  S r   r   rM   r?   r   r   neg_exppos_expr&   r&   r*   r        ztanh._eval_rewrite_as_tractablec                 K   s$   t | t |}}|| ||  S r   r   rM   r?   r   r  r   r&   r&   r*   r     r!  ztanh._eval_rewrite_as_expc                 K   r   r   )r   r#   r   r&   r&   r*   _eval_rewrite_as_tan  r   ztanh._eval_rewrite_as_tanc                 K   r   r   )r   r   r   r&   r&   r*   _eval_rewrite_as_cot  r   ztanh._eval_rewrite_as_cotc                 K   s&   t jt| tt jt j d |  S r   r   r   r&   r&   r*   r        &ztanh._eval_rewrite_as_sinhc                 K   s&   t jtt jt j d |  t| S r   r   r   r&   r&   r*   r     r%  ztanh._eval_rewrite_as_coshc                 K   r   r   r   r   r&   r&   r*   r     r   ztanh._eval_rewrite_as_cothr   c                 C   D   ddl m} | jd |}||jv r|d||r|S | |S Nr   OrderrH   sympy.series.orderr*  rK   r   free_symbolscontainsra   rM   rg   r   r   r*  r?   r&   r&   r*   r     
   
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   TrW   r   r   r&   r&   r*   r     s   
ztanh._eval_is_realc                 C   r   r   r   ru   r&   r&   r*   r     r   ztanh._eval_is_extended_realc                 C   r   rr   r   ru   r&   r&   r*   r     r   ztanh._eval_is_positivec                 C   r   rr   r   ru   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   rW   FT)rK   r}   r   rG   	is_numberr{   )rM   r?   r   r   r  r&   r&   r*   r     s   
ztanh._eval_is_finitec                 C   s   | j d }|jr
dS d S r   rK   r\   r   r&   r&   r*   r     s   
ztanh._eval_is_zeror   r   r   rr   )r1   r2   r3   r4   rO   rT   r   ri   r   r   rp   rv   r}   r   r   r   r#  r$  r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   r     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
    rH   c                 C   s(   |dkrdt | jd d  S t| |)NrH   r   rW   r   rL   r&   r&   r*   rO        
z
coth.fdiffc                 C   rP   rQ   )rd   rL   r&   r&   r*   rT     rU   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rP| rHtjt|  S tj t| S | rZ| |  S |jr|t|\}}|r|t|tj tj }|tju rxt|S t|S |jrt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 rV   )rX   r   rY   rZ   r9   r[   r  r\   r^   r]   r$   r_   r7   r   r`   rF   r   r6   r   ra   rS   rK   r   rb   rc   rd   )re   r?   rf   rg   rh   cothmr&   r&   r*   ri   
  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 rV   r   r   r=   r   r   rn   rg   ro   r
  r  r&   r&   r*   rp   ?  s   zcoth.taylor_termc                 C   rq   rr   rs   ru   r&   r&   r*   rv   N  rw   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"   Fry   rW   )r   r   r"   rK   r{   r|   r   r=   r}   rG   rJ   )rM   r   r   r   r"   r   r   r  r&   r&   r*   r}   Q  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   d  r!  zcoth._eval_rewrite_as_expc                 K   s(   t j tt jt j d |  t| S r   r   r   r&   r&   r*   r   h     (zcoth._eval_rewrite_as_sinhc                 K   s(   t j t| tt jt j d |  S r   r   r   r&   r&   r*   r   k  r8  zcoth._eval_rewrite_as_coshc                 K   r   r   r   r   r&   r&   r*   r   n  r   zcoth._eval_rewrite_as_tanhc                 C   r   rr   r   ru   r&   r&   r*   r   q  r   zcoth._eval_is_positivec                 C   r   rr   r   ru   r&   r&   r*   r   u  r   zcoth._eval_is_negativer   c                 C   sH   ddl m} | jd |}||jv r|d||rd| S | |S r(  r+  r/  r&   r&   r*   r   y  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>r3  rW   rH   Tr   Fr  )rK   r`   rl   r  appendr%   r   r:   r   r   r   r   )
rM   r   r?   CXrC   rn   r  r   rg   cr&   r&   r*   r     s"   

&zcoth._eval_expand_trigr   r   r   rr   )r1   r2   r3   r4   rO   rT   r   ri   r   r   rp   rv   r}   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   r     s(    


4


	r   c                   @   s   e Zd ZdZdZdZdZ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. Nc                 C   sj   |  r| jr| | S | jr| |  S | j|}t|dr+| | kr+|jd S |d ur3d| S |S )NrT   r   rH   )r_   _is_even_is_odd_reciprocal_ofri   hasattrrT   rK   )re   r?   tr&   r&   r*   ri     s   

z!ReciprocalHyperbolicFunction.evalc                 O   s$   |  | jd }t|||i |S rr   )r@  rK   getattr)rM   method_namerK   r   or&   r&   r*   _call_reciprocal  s   z-ReciprocalHyperbolicFunction._call_reciprocalc                 O   s,   | j |g|R i |}|d urd| S |S r   )rF  )rM   rD  rK   r   rB  r&   r&   r*   _calculate_reciprocal  s   z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s2   |  ||}|d ur|| |krd| S d S d S r   )rF  r@  )rM   rD  r?   rB  r&   r&   r*   _rewrite_reciprocal  s   z0ReciprocalHyperbolicFunction._rewrite_reciprocalc                 K      |  d|S )Nr   rH  r   r&   r&   r*   r     r   z1ReciprocalHyperbolicFunction._eval_rewrite_as_expc                 K   rI  )Nr   rJ  r   r&   r&   r*   r     r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   rI  )Nr   rJ  r   r&   r&   r*   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   rI  )Nr   rJ  r   r&   r&   r*   r     r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s"   d|  | jd  j|fi |S r   )r@  rK   r}   )rM   r   r   r&   r&   r*   r}     s   "z)ReciprocalHyperbolicFunction.as_real_imagc                 C   rq   rr   rs   ru   r&   r&   r*   rv     rw   z,ReciprocalHyperbolicFunction._eval_conjugatec                 K   s&   | j dddi|\}}|tj|  S )Nr   Tr&   r   r   r&   r&   r*   r     r   z1ReciprocalHyperbolicFunction._eval_expand_complexc                 K   s   | j di |S )Nr   )r   )rG  )rM   r   r&   r&   r*   r     r   z.ReciprocalHyperbolicFunction._eval_expand_trigr   c                 C   s   d|  | jd  |S r   )r@  rK   r   )rM   rg   r   r   r&   r&   r*   r     s   z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS rr   )r@  rK   r{   ru   r&   r&   r*   r     r   z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )r@  rK   r   ru   r&   r&   r*   r     r   z,ReciprocalHyperbolicFunction._eval_is_finiter   r   rr   )r1   r2   r3   r4   r@  r>  r?  r   ri   rF  rG  rH  r   r   r   r   r}   rv   r   r   r   r   r   r&   r&   r&   r*   r=    s*    




r=  c                   @   sb   e Zd ZdZeZdZdddZee	dd Z
dd	 Zd
d Zdd Zdd Zdd Zdd ZdS )r   a8  
    ``csch(x)`` is the hyperbolic cosecant of ``x``.

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

    Examples
    ========

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

    See Also
    ========

    sinh, cosh, tanh, sech, asinh, acosh
    TrH   c                 C   0   |dkrt | jd  t| jd  S t| |)z?
        Returns the first derivative of this function
        rH   r   )r   rK   r   r
   rL   r&   r&   r*   rO     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   rH   rW   r6  r7  r&   r&   r*   rp      s    zcsch.taylor_termc                 K   s   t tt |  S r   r   r   r&   r&   r*   r     r   zcsch._eval_rewrite_as_sinc                 K   s   t tt |  S r   r   r   r&   r&   r*   r     r   zcsch._eval_rewrite_as_cscc                 K      t jt|t jt j d   S r   r   r   r&   r&   r*   r        zcsch._eval_rewrite_as_coshc                 K   r   r   rG   r   r&   r&   r*   r     r   zcsch._eval_rewrite_as_sinhc                 C   r   rr   r   ru   r&   r&   r*   r     r   zcsch._eval_is_positivec                 C   r   rr   r   ru   r&   r&   r*   r   "  r   zcsch._eval_is_negativeNr   )r1   r2   r3   r4   rG   r@  r?  rO   r   r   rp   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
    TrH   c                 C   rK  r   )r   rK   r   r
   rL   r&   r&   r*   rO   >  s   
z
sech.fdiffc                 G   s:   | dk s
| d dkrt jS t|}t| t|  ||   S r	  )r   r=   r   r   r   rn   rg   ro   r&   r&   r*   rp   D  s   zsech.taylor_termc                 K   r   r   r   r   r&   r&   r*   r   M  r   zsech._eval_rewrite_as_cosc                 K   r   r   r   r   r&   r&   r*   r   P  r   zsech._eval_rewrite_as_secc                 K   rL  r   r   r   r&   r&   r*   r   S  rM  zsech._eval_rewrite_as_sinhc                 K   r   r   rJ   r   r&   r&   r*   r   V  r   zsech._eval_rewrite_as_coshc                 C   r   r   r   ru   r&   r&   r*   r   Y  r   zsech._eval_is_positiveNr   )r1   r2   r3   r4   rJ   r@  r>  rO   r   r   rp   r   r   r   r   r   r&   r&   r&   r*   r   '  s    
r   c                   @   s   e Zd ZdZdS )InverseHyperbolicFunctionz,Base class for inverse hyperbolic functions.N)r1   r2   r3   r4   r&   r&   r&   r*   rQ  b  s    rQ  c                   @   sz   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 Zdd Zdd Zdd Zdd ZdddZdd Zd	S )rS   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
    rH   c                 C   s,   |dkrdt | jd d d  S t| |r  )r   rK   r
   rL   r&   r&   r*   rO   ~  s   
zasinh.fdiffc           	      C   sv  |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rbtjt| S | rl| |  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 )NrW   rH   r   TF)rX   r   rY   rZ   r[   r\   r=   r9   r   r   r  r]   r^   r$   r7   r   r_   
isinstancerG   rK   r1  r   r   r   r   r   is_even)	re   r?   rf   r   rr  frh   evenr&   r&   r*   ri     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   rW   rj   rH   )r   r=   r   rl   r   r>   r   r  rn   rg   ro   rC   r  Rr  r&   r&   r*   rp     s   &zasinh.taylor_termNr   c                 C   r'  r(  r+  r/  r&   r&   r*   r     r0  zasinh._eval_as_leading_termc                 K   s   t |t|d d  S r   r   r   rM   rg   r   r&   r&   r*   _eval_rewrite_as_log     zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S NrH   rW   )rc   r   r[  r&   r&   r*   _eval_rewrite_as_atanh  r]  zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S r^  )r   r   rb   r   )rM   rg   r   ixr&   r&   r*   _eval_rewrite_as_acosh  s   ,zasinh._eval_rewrite_as_acoshc                 K   r   r   )r   r   r[  r&   r&   r*   _eval_rewrite_as_asin  r   zasinh._eval_rewrite_as_asinc                 K   s   t tt |  t t d  S r   )r   r   r   r[  r&   r&   r*   _eval_rewrite_as_acos     zasinh._eval_rewrite_as_acosc                 C   rP   rQ   rN  rL   r&   r&   r*   rT     rU   zasinh.inversec                 C      | j d jS rr   r2  ru   r&   r&   r*   r     r   zasinh._eval_is_zeror   rr   )r1   r2   r3   r4   rO   r   ri   r   r   rp   r   r\  r_  ra  rb  rc  rT   r   r&   r&   r&   r*   rS   h  s     

-
	
rS   c                   @   s   e Zd ZdZdddZeedd Zedd Z	eed	d
 Z
d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 )rb   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
    rH   c                 C   s8   |dkr| j d }dt|d t|d   S t| |r   rK   r   r
   )rM   rN   r?   r&   r&   r*   rO     s   

zacosh.fdiffc                
   C   s:  i t jtt jdtd  t j tt j dtd  t jt jd tddt jtdd tdd t jd td d t jtdd dtd t jd dtd t jtdd tdd t jd td d t jtdd tdd td t jtdd	 tdd  td t jtd
d	 tdtd d t jd tdtd  d t jtd
d tdtd d t jtdd tdtd  d t jtdd dtd dtd  t jd	 dtd  dtd  t jtdd	 tdd d t jd tdd  d t jtdd iS )NrH   rW   r   r3                       )r   r7   r   r   r>   r6   r   r&   r&   r&   r*   _acosh_table  sN   	
 "" "&zacosh._acosh_tablec           	      C   s  |j r9|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tj d S |tju r.tj	S |tj
u r9tjtj S |jrR|  }||v rR|jrN|| tj S || S |tju rZtjS |tjtj krmtjtjtj d  S |tj tj krtjtjtj d  S |jrtjtj 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 )NrW   r   TF)rX   r   rY   rZ   r[   r\   r6   r7   r9   r=   r  r1  rn  r{   r^   r>   rR  rJ   rK   r   r   r   r   r   r   rS  is_nonnegativer]   is_nonpositiver   )	re   r?   	cst_tabler   rT  r  rU  rh   rV  r&   r&   r*   ri     sh   






	z
acosh.evalc                 G   s   | dkrt jt j 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 j ||   |  S rW  )	r   r6   r7   r=   r   rl   r   r>   r   rX  r&   r&   r*   rp   S  s   $zacosh.taylor_termNr   c                 C   P   ddl m} | jd |}||jv r#|d||r#tjtj d S | 	|S Nr   r)  rH   rW   
r,  r*  rK   r   r-  r.  r   r7   r6   ra   r/  r&   r&   r*   r   e  
   
zacosh._eval_as_leading_termc                 K   s    t |t|d t|d   S r   rZ  r[  r&   r&   r*   r\  n  r   zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   r[  r&   r&   r*   rc  q  r   zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S r^  )r   r   r   r[  r&   r&   r*   rb  t  r8  zacosh._eval_rewrite_as_asinc                 K   s0   t |d t d|  td ttt|    S r^  )r   r   r   rS   r[  r&   r&   r*   _eval_rewrite_as_asinhw  s   0zacosh._eval_rewrite_as_asinhc                 K   sp   t |d }t d| }t |d d }td | | d|t d|d     |t |d  | t||   S r^  )r   r   rc   )rM   rg   r   sxm1s1mxsx2m1r&   r&   r*   r_  z  s   &zacosh._eval_rewrite_as_atanhc                 C   rP   rQ   rP  rL   r&   r&   r*   rT     rU   zacosh.inversec                 C   s   | j d d jr
dS d S )Nr   rH   Tr2  ru   r&   r&   r*   r     s   zacosh._eval_is_zeror   rr   )r1   r2   r3   r4   rO   r   r   rn  r   ri   rp   r   r\  rc  rb  rv  r_  rT   r   r&   r&   r&   r*   rb     s&    

6
	
rb   c                   @   sj   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 Zdd Zdd Zdd ZdddZd	S )rc   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
    rH   c                 C   (   |dkrdd| j d d   S t| |r  rK   r
   rL   r&   r&   r*   rO     r4  zatanh.fdiffc           
      C   s  |j rE|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j	 t
| S |tju r;tj	t
|  S |jrD| |  S n3|tju r_ddlm} tj	|tj d tjd  S t|}|d urntj	t
| S | rx| |  S |jr~t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   AccumBoundsrW   TF)rX   r   rY   r\   r=   r9   rZ   r  r[   r7   r   r]   r^   !sympy.calculus.accumulationboundsr}  r6   r$   r_   rR  r   rK   r1  r   r   r   r   rS  r   )
re   r?   r}  rf   r   rT  r  rU  rV  rh   r&   r&   r*   ri     sT   






z
atanh.evalc                 G   s.   | dk s
| d dkrt jS t|}||  |  S Nr   rW   )r   r=   r   rO  r&   r&   r*   rp     s   zatanh.taylor_termNr   c                 C   r'  r(  r+  r/  r&   r&   r*   r     r0  zatanh._eval_as_leading_termc                 K   s   t d| t d|  d S r^  r   r[  r&   r&   r*   r\    rd  zatanh._eval_rewrite_as_logc                 K   s\   t d|d d  }t| dt |d    t | t d|d   t | | t|  S r^  )r   r   rS   )rM   rg   r   rU  r&   r&   r*   rv    s   ,zatanh._eval_rewrite_as_asinhc                 C   r   r   r2  ru   r&   r&   r*   r     r   zatanh._eval_is_zeroc                 C   re  rr   )rK   r   ru   r&   r&   r*   _eval_is_imaginary  r   zatanh._eval_is_imaginaryc                 C   rP   rQ   r9  rL   r&   r&   r*   rT     rU   zatanh.inverser   rr   )r1   r2   r3   r4   rO   r   ri   r   r   rp   r   r\  rv  r   r  rT   r&   r&   r&   r*   rc     s    

.
	rc   c                   @   sb   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 Zdd Zdd ZdddZd	S )rd   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
    rH   c                 C   rz  r  r{  rL   r&   r&   r*   rO     r4  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jtj d S |tj	u r.tjS |tj
u r6tjS |jr?| |  S n"|tju rHtjS t|}|d urXtj t| S | rb| |  S |jrntjtj tj S d S r   )rX   r   rY   rZ   r=   r[   r\   r6   r7   r9   r  r]   r^   r$   r   r_   r>   )re   r?   rf   r&   r&   r*   ri     s4   





z
acoth.evalc                 G   sF   | dkrt jt j d S | dk s| d dkrt jS t|}||  |  S r  )r   r6   r7   r=   r   rO  r&   r&   r*   rp   7  s   zacoth.taylor_termNr   c                 C   rr  rs  rt  r/  r&   r&   r*   r   B  ru  zacoth._eval_as_leading_termc                 K   s$   t dd|  t dd|   d S r^  r  r[  r&   r&   r*   r\  K  s   $zacoth._eval_rewrite_as_logc                 K      t d| S r   r  r[  r&   r&   r*   r_  N  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   rS   r[  r&   r&   r*   rv  Q  s   J*zacoth._eval_rewrite_as_asinhc                 C   rP   rQ   r&  rL   r&   r&   r*   rT   U  rU   zacoth.inverser   rr   )r1   r2   r3   r4   rO   r   ri   r   r   rp   r   r\  r_  rv  rT   r&   r&   r&   r*   rd     s    


		rd   c                   @   sx   e Zd ZdZdddZeedd Zedd Z	eed	d
 Z
d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] http://dlmf.nist.gov/4.37
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcSech/

    rH   c                 C   s4   |dkr| j d }d|td|d    S t| |NrH   r   r3  rW   rf  rM   rN   r   r&   r&   r*   rO     s   

zasech.fdiffc                   C   s  i t jt jt j d  tdtd  t j t jt j d tdtd  tdtd t jd tdtd dt j d tddtd  t jd tddtd   dt j d dtdtd  t jd	 d
tdtd  dt j d	 dtd t jd d
td dt j d tdd t jd dtd dt j d tdt jd td dt j d tddtd  dt j d tddtd   dt j d t dt jd t d dt j d tddtd  dt j d	 tddtd   dt j d	 dtd dt j d dtd dt j d tdtd dt j d td td dt j d t jt j t j t j d t jt j t jt j d i	S )NrW   rH   rh  rk  rm  ri  
   	   rj  rj   rl  r   rg  r3  )r   r7   r6   r   r   rZ   r[   r&   r&   r&   r*   _asech_table  sZ   $$ 	
  zasech._asech_tablec                 C   s   |j r>|tju rtjS |tju rtjtj d S |tju r%tjtj d S |jr+tjS |tju r3tj	S |tj
u r>tjtj S |jrW|  }||v rW|jrS|| tj S || S |tju rqddlm} tj|tj d tjd  S |jrwtjS d S )NrW   r   r|  )rX   r   rY   rZ   r6   r7   r[   r\   r9   r=   r  r1  r  r{   r^   r~  r}  )re   r?   rq  r}  r&   r&   r*   ri     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   rW   rH   rj   rg  r3  )r   r   r=   r   rl   r   r>   r   rX  r&   r&   r*   expansion_term  s   (zasech.expansion_termc                 C   rP   rQ   r   rL   r&   r&   r*   rT     rU   zasech.inversec                 K   s,   t d| td| d td| d   S r   rZ  r   r&   r&   r*   r\    s   ,zasech._eval_rewrite_as_logc                 K   r  r   )rb   r   r&   r&   r*   ra    r   zasech._eval_rewrite_as_acoshc                 K   s@   t d| d t dd|   tjttj|  tjtj   S r   )r   r   r7   rS   r6   r>   r   r&   r&   r*   rv    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 r^  )r   r   r   rc   r[  r&   r&   r*   r_    s   Z.zasech._eval_rewrite_as_atanhc                 K   s8   t d| d t dd|   td ttt|    S r^  )r   r   r   acschr[  r&   r&   r*   _eval_rewrite_as_acsch  s   8zasech._eval_rewrite_as_acschNr   )r1   r2   r3   r4   rO   r   r   r  r   ri   r  rT   r\  ra  rv  r_  r  r&   r&   r&   r*   r  \  s"    
%

r  c                   @   sh   e Zd ZdZdddZeedd Zedd Z	dd	d
Z
dd Zdd Zdd Zdd Zdd ZdS )r  a  
    ``acsch(x)`` is the inverse hyperbolic cosecant of ``x``.

    The inverse hyperbolic cosecant function.

    Examples
    ========

    >>> from sympy import acsch, sqrt, S
    >>> 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(S.ImaginaryUnit)
    -I*pi/2
    >>> acsch(-2*S.ImaginaryUnit)
    I*pi/6
    >>> acsch(S.ImaginaryUnit*(sqrt(6) - sqrt(2)))
    -5*I*pi/12

    See Also
    ========

    asinh

    References
    ==========

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

    rH   c                 C   s<   |dkr| j d }d|d tdd|d     S t| |r  rf  r  r&   r&   r*   rO     s   
 
zacsch.fdiffc                   C   st  t jt j d t jtdtd  t j d t jdtd  t j d t jd tdtd  t j d t jd t j d t jtddtd   t j d t jtd t j d t jtdd  d	t j d t jd td
 t j d
 t jd tdtd  d	t j d t jtddtd   dt j d t jtdtd  dt j d t dt j tdtd d  iS )NrW   rh  rk  rH   ri  r  rj  rg  r   rj   )r   r7   r6   r   r   r&   r&   r&   r*   _acsch_table  s   ""$$  zacsch._acsch_tablec                 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rN|  }||v rN|| tj S |tju rVtjS |jr\tjS |jrbtjS | rl| |  S d S r^  )rX   r   rY   rZ   r=   r[   r\   r^   r9   r   r   r  r1  r  r7   is_infiniter_   )re   r?   rq  r&   r&   r*   ri   2  s4   





z
acsch.evalc                 C   rP   rQ   r   rL   r&   r&   r*   rT   T  rU   zacsch.inversec                 K   s    t d| td|d  d  S r^  rZ  r   r&   r&   r*   r\  Z  r   zacsch._eval_rewrite_as_logc                 K   r  r   rR   r   r&   r&   r*   rv  ]  r   zacsch._eval_rewrite_as_asinhc                 K   sD   t jtdt j|  tt j| d  tt j|  t jt j   S r   )r   r7   r   rb   r6   r>   r   r&   r&   r*   ra  `  s
   &
zacsch._eval_rewrite_as_acoshc                 K   sH   |d }|d }t | | tjtj t |d  | tt |   S r   )r   r   r6   r>   rc   )rM   r?   r   arg2arg2p1r&   r&   r*   r_  d  s
   zacsch._eval_rewrite_as_atanhc                 C   re  rr   )rK   r  ru   r&   r&   r*   r   j  r   zacsch._eval_is_zeroNr   )r1   r2   r3   r4   rO   r   r   r  r   ri   rT   r\  rv  ra  r_  r   r&   r&   r&   r*   r    s    
%

!r  N)A
sympy.corer   r   r   r   r   r   sympy.core.addr   sympy.core.functionr	   r
   sympy.core.logicr   r   r   (sympy.functions.combinatorial.factorialsr   r   r   %sympy.functions.combinatorial.numbersr   r   r   $sympy.functions.elementary.complexesr   &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%   r0   r.   rF   rG   rJ   r   r   r=  r   r   rQ  rS   rb   rc   rd   r  r  r&   r&   r&   r*   <module>   sF     4
" U w V -JG;} (q_ 