a
    RG5d7                     @   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&   a/var/www/html/django/DPS/env/lib/python3.9/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    
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} q^q|jr| \}}||kr|jr q^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d5ddZedd Zee	d	d
 Z
dd Zd6ddZd7ddZd8ddZd9ddZdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd:d&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS );sinha  
    ``sinh(x)`` is the hyperbolic sine of ``x``.

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

    Examples
    ========

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

    See Also
    ========

    cosh, tanh, asinh
       c                 C   s$   |dkrt | jd S t| |dS )z@
        Returns the first derivative of this function.
        rH   r   N)coshargsr
   selfargindexr&   r&   r*   fdiff_   s    z
sinh.fdiffc                 C   s   t S z7
        Returns the inverse of this function.
        asinhrK   r&   r&   r*   inverseh   s    zsinh.inversec                 C   s  |j rX|tju rtjS |tju r&tjS |tju r6tjS |jrBtjS |jrT| |  S n4|tju rhtjS t	|}|d urtj
t| S | r| |  S |jrt|\}}|r|tj tj
 }t|t| t|t|  S |jrtjS |jtkr|jd S |jtkr0|jd }t|d t|d  S |jtkrZ|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   rI   funcrQ   rJ   acoshr   atanhacoth)clsr?   i_coeffxmr&   r&   r*   evaln   sH    



 



z	sinh.evalc                 G   sb   | dk s| d dkrt jS t|}t|dkrN|d }||d  | | d   S ||  t|  S dS )zG
        Returns the next term in the Taylor series expansion.
        r   rT   rH   Nr   r=   r   lenr   nrd   previous_termsrC   r&   r&   r*   taylor_term   s    zsinh.taylor_termc                 C   s   |  | jd  S Nr   r^   rJ   	conjugaterL   r&   r&   r*   _eval_conjugate   s    zsinh._eval_conjugateTc                 K   s   | j d jr:|r0d|d< | j|fi |tjfS | tjfS |r`| 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
rJ   is_extended_realexpandr   r=   as_real_imagrG   r   rI   r"   rL   deephintsreimr&   r&   r*   rw      s    
"zsinh.as_real_imagc                 K   s&   | j f d|i|\}}||tj  S Nry   rw   r   r7   rL   ry   rz   re_partim_partr&   r&   r*   _eval_expand_complex   s    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rz|jrz|tjurz|}|d | }|d urt|t	| t|t	|  jddS t|S Nr   TrationalrH   )trig)
rJ   rv   r]   r;   as_coeff_Mulr   r9   
is_IntegerrG   rI   rL   ry   rz   r?   rd   ycoefftermsr&   r&   r*   _eval_expand_trig   s    
(zsinh._eval_expand_trigNc                 K   s   t |t |  d S NrT   r   rL   r?   limitvarkwargsr&   r&   r*   _eval_rewrite_as_tractable   s    zsinh._eval_rewrite_as_tractablec                 K   s   t |t |  d S r   r   rL   r?   r   r&   r&   r*   _eval_rewrite_as_exp   s    zsinh._eval_rewrite_as_expc                 K   s   t  tt |  S Nr   r"   r   r&   r&   r*   _eval_rewrite_as_sin   s    zsinh._eval_rewrite_as_sinc                 K   s   t  tt |  S r   r   r    r   r&   r&   r*   _eval_rewrite_as_csc   s    zsinh._eval_rewrite_as_cscc                 K   s    t j t|t jt j d   S r   r   r7   rI   r6   r   r&   r&   r*   _eval_rewrite_as_cosh   s    zsinh._eval_rewrite_as_coshc                 K   s"   t tj| }d| d|d   S NrT   rH   tanhr   r>   rL   r?   r   Z	tanh_halfr&   r&   r*   _eval_rewrite_as_tanh   s    zsinh._eval_rewrite_as_tanhc                 K   s"   t tj| }d| |d d  S r   cothr   r>   rL   r?   r   Z	coth_halfr&   r&   r*   _eval_rewrite_as_coth   s    zsinh._eval_rewrite_as_cothc                 K   s   dt | S NrH   cschr   r&   r&   r*   _eval_rewrite_as_csch   s    zsinh._eval_rewrite_as_cschr   c                 C   sh   | j d j|||d}||d}|tju rF|j|d|jr>dndd}|jrP|S |jr`| 	|S | S d S Nr   )logxcdir-+)dir)
rJ   as_leading_termsubsr   rV   limitrZ   rY   	is_finiter^   rL   rd   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rJ   is_realrw   r   rY   rL   r?   r{   r|   r&   r&   r*   _eval_is_real   s
    
zsinh._eval_is_realc                 C   s   | j d jrdS d S r   rJ   ru   rq   r&   r&   r*   _eval_is_extended_real	  s    zsinh._eval_is_extended_realc                 C   s   | j d jr| j d jS d S rn   rJ   ru   is_positiverq   r&   r&   r*   _eval_is_positive  s    zsinh._eval_is_positivec                 C   s   | j d jr| j d jS d S rn   rJ   ru   rZ   rq   r&   r&   r*   _eval_is_negative  s    zsinh._eval_is_negativec                 C   s   | j d }|jS rn   rJ   r   rL   r?   r&   r&   r*   _eval_is_finite  s    
zsinh._eval_is_finitec                 C   s"   t | jd \}}|jr|jS d S rn   )rF   rJ   rY   
is_integerrL   restZipi_multr&   r&   r*   _eval_is_zero  s    zsinh._eval_is_zero)rH   )rH   )T)T)T)N)Nr   )r1   r2   r3   r4   rN   rR   classmethodrf   staticmethodr   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   rG   K   s6   
	

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d2ddZd3ddZd4ddZdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd5d$d%Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdS )6rI   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   s$   |dkrt | jd S t| |d S NrH   r   rG   rJ   r
   rK   r&   r&   r*   rN   3  s    z
cosh.fdiffc                 C   s  ddl m} |jrb|tju r"tjS |tju r2tjS |tju rBtjS |jrNtjS |j	r^| | S n|tj
u rrtjS t|}|d ur||S | r| | S |jrt|\}}|r|tj tj }t|t| t|t|  S |jrtjS |jtkrtd|jd d  S |jtkr&|jd S |jtkrLdtd|jd d   S |jtkr~|jd }|t|d t|d   S d S )Nr   )r   rH   rT   )(sympy.functions.elementary.trigonometricr   rU   r   rV   rW   rX   rY   r9   rZ   r[   r$   r\   r]   rF   r6   r7   rI   rG   r^   rQ   r   rJ   r_   r`   ra   )rb   r?   r   rc   rd   re   r&   r&   r*   rf   9  sF    




 

z	cosh.evalc                 G   sb   | dk s| d dkrt jS t|}t|dkrN|d }||d  | | d   S ||  t|  S d S )Nr   rT   rH   rg   rh   rj   r&   r&   r*   rm   i  s    zcosh.taylor_termc                 C   s   |  | jd  S rn   ro   rq   r&   r&   r*   rr   w  s    zcosh._eval_conjugateTc                 K   s   | j d jr:|r0d|d< | j|fi |tjfS | tjfS |r`| j d j|fi | \}}n| j d  \}}t|t| t|t	| fS )Nr   Frs   )
rJ   ru   rv   r   r=   rw   rI   r   rG   r"   rx   r&   r&   r*   rw   z  s    
"zcosh.as_real_imagc                 K   s&   | j f d|i|\}}||tj  S r}   r~   r   r&   r&   r*   r     s    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rz|jrz|tjurz|}|d | }|d urt|t| t	|t	|  jddS t|S r   )
rJ   rv   r]   r;   r   r   r9   r   rI   rG   r   r&   r&   r*   r     s    
(zcosh._eval_expand_trigNc                 K   s   t |t |  d S r   r   r   r&   r&   r*   r     s    zcosh._eval_rewrite_as_tractablec                 K   s   t |t |  d S r   r   r   r&   r&   r*   r     s    zcosh._eval_rewrite_as_expc                 K   s   t t| S r   r   r   r   r&   r&   r*   _eval_rewrite_as_cos  s    zcosh._eval_rewrite_as_cosc                 K   s   dt t|  S r   r!   r   r   r&   r&   r*   _eval_rewrite_as_sec  s    zcosh._eval_rewrite_as_secc                 K   s    t j t|t jt j d   S r   r   r7   rG   r6   r   r&   r&   r*   _eval_rewrite_as_sinh  s    zcosh._eval_rewrite_as_sinhc                 K   s"   t tj| d }d| d|  S r   r   r   r&   r&   r*   r     s    zcosh._eval_rewrite_as_tanhc                 K   s"   t tj| d }|d |d  S r   r   r   r&   r&   r*   r     s    zcosh._eval_rewrite_as_cothc                 K   s   dt | S r   sechr   r&   r&   r*   _eval_rewrite_as_sech  s    zcosh._eval_rewrite_as_sechr   c                 C   sj   | j d j|||d}||d}|tju rF|j|d|jr>dndd}|jrRtjS |j	rb| 
|S | S d S r   )rJ   r   r   r   rV   r   rZ   rY   r9   r   r^   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   )rJ   r   is_imaginaryrw   r   rY   r   r&   r&   r*   r     s
    
zcosh._eval_is_realc              	   C   sr   | j d }| \}}|dt  }|j}|r0dS |j}|du rB|S t|t|t|td k |dt d kgggS Nr   rT   TF   rJ   rw   r   rY   r   r   rL   zrd   r   ZymodZyzeroZxzeror&   r&   r*   r     s     
zcosh._eval_is_positivec              	   C   sr   | j d }| \}}|dt  }|j}|r0dS |j}|du rB|S t|t|t|td k|dt d kgggS r   r   r   r&   r&   r*   _eval_is_nonnegative  s     
zcosh._eval_is_nonnegativec                 C   s   | j d }|jS rn   r   r   r&   r&   r*   r     s    
zcosh._eval_is_finitec                 C   s,   t | jd \}}|r(|jr(|tj jS d S rn   )rF   rJ   rY   r   r>   r   r   r&   r&   r*   r     s    
zcosh._eval_is_zero)rH   )T)T)T)N)Nr   )r1   r2   r3   r4   rN   r   rf   r   r   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   rI     s2   

/




 rI   c                   @   s   e Zd ZdZd0ddZd1ddZedd Zee	d	d
 Z
dd Zd2ddZdd Zd3ddZdd Zdd Zdd Zdd Zdd Zdd  Zd4d"d#Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ ZdS )5r   a'  
    ``tanh(x)`` is the hyperbolic tangent of ``x``.

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

    Examples
    ========

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

    See Also
    ========

    sinh, cosh, atanh
    rH   c                 C   s.   |dkr t jt| jd d  S t| |d S NrH   r   rT   )r   r9   r   rJ   r
   rK   r&   r&   r*   rN   )  s    z
tanh.fdiffc                 C   s   t S rO   r`   rK   r&   r&   r*   rR   /  s    ztanh.inversec                 C   s  |j rX|tju rtjS |tju r&tjS |tju r6tjS |jrBtjS |j	rT| |  S n@|tj
u rhtjS t|}|d ur| rtj t|  S tjt| S | r| |  S |j rt|\}}| rt|tj tj }|tj
u  rt|S t|S |jrtjS |jtkr6|jd }|td|d   S |jtkrh|jd }t|d t|d  | S |jtkr~|jd S |jtkrd|jd  S d S rS   )rU   r   rV   rW   r9   rX   NegativeOnerY   r=   rZ   r[   r$   r\   r7   r#   r]   rF   r   r6   r   r^   rQ   rJ   r   r_   r`   ra   )rb   r?   rc   rd   re   Ztanhmr&   r&   r*   rf   5  sN    






z	tanh.evalc                 G   sf   | dk s| d dkrt jS t|}d| d  }t| d }t| d }||d  | | ||   S d S Nr   rT   rH   )r   r=   r   r   r   )rk   rd   rl   rA   BFr&   r&   r*   rm   j  s    ztanh.taylor_termc                 C   s   |  | jd  S rn   ro   rq   r&   r&   r*   rr   y  s    ztanh._eval_conjugateTc                 K   s   | j d jr:|r0d|d< | j|fi |tjfS | tjfS |r`| j d j|fi | \}}n| j d  \}}t|d t|d  }t|t| | t	|t| | fS )Nr   Frs   rT   rt   )rL   ry   rz   r{   r|   denomr&   r&   r*   rw   |  s    
"ztanh.as_real_imagc           	         s   | j d }|jrnt|j }dd |j D }ddg}t|d D ]}||d   t||7  < q>|d |d  S |jr| \}jrdkrt|  fddtdd dD } fddtdd dD }t	| t	|  S t|S )Nr   c                 S   s   g | ]}t |d d qS Fevaluate)r   r   r(   rd   r&   r&   r*   
<listcomp>  s   z*tanh._eval_expand_trig.<locals>.<listcomp>rH   rT   c                    s"   g | ]}t t| |  qS r&   r   ranger(   kTr   r&   r*   r         c                    s"   g | ]}t t| |  qS r&   r   r   r   r&   r*   r     r   )
rJ   r]   ri   r   r%   r:   r   r   r   r   )	rL   rz   r?   rk   TXrC   ir   dr&   r   r*   r     s$    

  ztanh._eval_expand_trigNc                 K   s$   t | t | }}|| ||  S r   r   rL   r?   r   r   neg_exppos_expr&   r&   r*   r     s    ztanh._eval_rewrite_as_tractablec                 K   s$   t | t | }}|| ||  S r   r   rL   r?   r   r   r   r&   r&   r*   r     s    ztanh._eval_rewrite_as_expc                 K   s   t  tt |  S r   )r   r#   r   r&   r&   r*   _eval_rewrite_as_tan  s    ztanh._eval_rewrite_as_tanc                 K   s   t  tt |  S r   )r   r   r   r&   r&   r*   _eval_rewrite_as_cot  s    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     s    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     s    ztanh._eval_rewrite_as_coshc                 K   s   dt | S r   r   r   r&   r&   r*   r     s    ztanh._eval_rewrite_as_cothr   c                 C   sH   ddl m} | jd |}||jv r:|d||r:|S | |S d S Nr   OrderrH   sympy.series.orderr   rJ   r   free_symbolscontainsr^   rL   rd   r   r   r   r?   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   TrT   r   r   r&   r&   r*   r     s    
ztanh._eval_is_realc                 C   s   | j d jrdS d S r   r   rq   r&   r&   r*   r     s    ztanh._eval_is_extended_realc                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r     s    ztanh._eval_is_positivec                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r     s    ztanh._eval_is_negativec                 C   sR   | j d }| \}}t|d t|d  }|dkr:dS |jrDdS |jrNdS d S )Nr   rT   FT)rJ   rw   r   rG   	is_numberru   )rL   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   rJ   rY   r   r&   r&   r*   r     s    
ztanh._eval_is_zero)rH   )rH   )T)N)Nr   )r1   r2   r3   r4   rN   rR   r   rf   r   r   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r&   r&   r*   r     s2   


4


	r   c                   @   s   e Zd ZdZd$ddZd%ddZedd Zee	d	d
 Z
dd Zd&ddZd'ddZdd Zdd Zdd Zdd Zdd Zdd Zd(d d!Zd"d# ZdS ))r   a+  
    ``coth(x)`` is the hyperbolic cotangent of ``x``.

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

    Examples
    ========

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

    See Also
    ========

    sinh, cosh, acoth
    rH   c                 C   s,   |dkrdt | jd d  S t| |d S )NrH   r   rT   r   rK   r&   r&   r*   rN     s    z
coth.fdiffc                 C   s   t S rO   )ra   rK   r&   r&   r*   rR     s    zcoth.inversec                 C   s  |j rX|tju rtjS |tju r&tjS |tju r6tjS |jrBtjS |j	rT| |  S n@|tju rhtjS t
|}|d ur| rtjt|  S tj t| S | r| |  S |j rt|\}}| rt|tj tj }|tju  rt|S t|S |jrtjS |jtkr6|jd }td|d  | S |jtkrh|jd }|t|d t|d   S |jtkrd|jd  S |jtkr|jd S d S rS   )rU   r   rV   rW   r9   rX   r   rY   r[   rZ   r$   r\   r7   r   r]   rF   r   r6   r   r^   rQ   rJ   r   r_   r`   ra   )rb   r?   rc   rd   re   Zcothmr&   r&   r*   rf   
  sN    





z	coth.evalc                 G   sn   | dkrdt | S | dk s(| d dkr.tjS t |}t| d }t| d }d| d  | | ||   S d S rS   r   r   r=   r   r   rk   rd   rl   r   r   r&   r&   r*   rm   ?  s    zcoth.taylor_termc                 C   s   |  | jd  S rn   ro   rq   r&   r&   r*   rr   N  s    zcoth._eval_conjugateTc                 K   s   ddl m}m} | jd jrJ|r@d|d< | j|fi |tjfS | tjfS |rp| jd j|fi | \}}n| jd  \}}t	|d ||d  }t	|t
| | || || | fS )Nr   )r   r"   Frs   rT   )r   r   r"   rJ   ru   rv   r   r=   rw   rG   rI   )rL   ry   rz   r   r"   r{   r|   r   r&   r&   r*   rw   Q  s    
"zcoth.as_real_imagNc                 K   s$   t | t | }}|| ||  S r   r   r   r&   r&   r*   r   `  s    zcoth._eval_rewrite_as_tractablec                 K   s$   t | t | }}|| ||  S r   r   r   r&   r&   r*   r   d  s    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  s    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  s    zcoth._eval_rewrite_as_coshc                 K   s   dt | S r   r   r   r&   r&   r*   r   n  s    zcoth._eval_rewrite_as_tanhc                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r   q  s    zcoth._eval_is_positivec                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r   u  s    zcoth._eval_is_negativer   c                 C   sL   ddl m} | jd |}||jv r>|d||r>d| S | |S d S r   r   r  r&   r&   r*   r   y  s
    zcoth._eval_as_leading_termc           
      K   s  | j d }|jrxdd |j D }g g g}t|j }t|ddD ] }||| d  t|| q>t|d  t|d   S |jr|jdd\}}|j	r|dkrt
|d	d
}	g g g}t|ddD ](}||| d  t|||	|   qt|d  t|d   S t
|S )Nr   c                 S   s   g | ]}t |d d qS r   )r   r   r   r&   r&   r*   r     r   z*coth._eval_expand_trig.<locals>.<listcomp>r  rT   rH   Tr   Fr   )rJ   r]   ri   r   appendr%   r   r:   r   r   r   r   )
rL   rz   r?   CXrC   rk   r   r   rd   cr&   r&   r*   r     s"    

&zcoth._eval_expand_trig)rH   )rH   )T)N)Nr   )r1   r2   r3   r4   rN   rR   r   rf   r   r   rm   rr   rw   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rV| | krV|jd S |d urfd| S |S )NrR   r   rH   )r\   _is_even_is_odd_reciprocal_ofrf   hasattrrR   rJ   )rb   r?   tr&   r&   r*   rf     s    

z!ReciprocalHyperbolicFunction.evalc                 O   s$   |  | jd }t|||i |S rn   )r  rJ   getattr)rL   method_namerJ   r   or&   r&   r*   _call_reciprocal  s    z-ReciprocalHyperbolicFunction._call_reciprocalc                 O   s,   | j |g|R i |}|d ur(d| S |S r   )r  )rL   r  rJ   r   r  r&   r&   r*   _calculate_reciprocal  s    z2ReciprocalHyperbolicFunction._calculate_reciprocalc                 C   s.   |  ||}|d ur*|| |kr*d| S d S r   )r  r  )rL   r  r?   r  r&   r&   r*   _rewrite_reciprocal  s    z0ReciprocalHyperbolicFunction._rewrite_reciprocalc                 K   s   |  d|S )Nr   r  r   r&   r&   r*   r     s    z1ReciprocalHyperbolicFunction._eval_rewrite_as_expc                 K   s   |  d|S )Nr   r  r   r&   r&   r*   r     s    z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractablec                 K   s   |  d|S )Nr   r  r   r&   r&   r*   r     s    z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanhc                 K   s   |  d|S )Nr   r  r   r&   r&   r*   r     s    z2ReciprocalHyperbolicFunction._eval_rewrite_as_cothTc                 K   s"   d|  | jd  j|fi |S r   )r  rJ   rw   )rL   ry   rz   r&   r&   r*   rw     s    z)ReciprocalHyperbolicFunction.as_real_imagc                 C   s   |  | jd  S rn   ro   rq   r&   r&   r*   rr     s    z,ReciprocalHyperbolicFunction._eval_conjugatec                 K   s&   | j f ddi|\}}|tj|  S )Nry   Tr~   r   r&   r&   r*   r     s    z1ReciprocalHyperbolicFunction._eval_expand_complexc                 K   s   | j di |S )Nr   )r   )r  )rL   rz   r&   r&   r*   r     s    z.ReciprocalHyperbolicFunction._eval_expand_trigr   c                 C   s   d|  | jd  |S r   )r  rJ   r   )rL   rd   r   r   r&   r&   r*   r     s    z2ReciprocalHyperbolicFunction._eval_as_leading_termc                 C   s   |  | jd jS rn   )r  rJ   ru   rq   r&   r&   r*   r     s    z3ReciprocalHyperbolicFunction._eval_is_extended_realc                 C   s   d|  | jd  jS r   )r  rJ   r   rq   r&   r&   r*   r     s    z,ReciprocalHyperbolicFunction._eval_is_finite)N)T)T)Nr   )r1   r2   r3   r4   r  r  r  r   rf   r  r  r  r   r   r   r   rw   rr   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   s4   |dkr&t | jd  t| jd  S t| |dS )z?
        Returns the first derivative of this function
        rH   r   N)r   rJ   r   r
   rK   r&   r&   r*   rN     s    z
csch.fdiffc                 G   sr   | dkrdt | S | dk s(| d dkr.tjS t |}t| d }t| d }ddd|    | | ||   S dS )zF
        Returns the next term in the Taylor series expansion
        r   rH   rT   Nr  r  r&   r&   r*   rm      s    zcsch.taylor_termc                 K   s   t tt |  S r   r   r   r&   r&   r*   r     s    zcsch._eval_rewrite_as_sinc                 K   s   t tt |  S r   r   r   r&   r&   r*   r     s    zcsch._eval_rewrite_as_cscc                 K   s   t jt|t jt j d   S r   r   r   r&   r&   r*   r     s    zcsch._eval_rewrite_as_coshc                 K   s   dt | S r   rG   r   r&   r&   r*   r     s    zcsch._eval_rewrite_as_sinhc                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r     s    zcsch._eval_is_positivec                 C   s   | j d jr| j d jS d S rn   r   rq   r&   r&   r*   r   "  s    zcsch._eval_is_negativeN)rH   )r1   r2   r3   r4   rG   r  r  rN   r   r   rm   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   s4   |dkr&t | jd  t| jd  S t| |d S r   )r   rJ   r   r
   rK   r&   r&   r*   rN   >  s    z
sech.fdiffc                 G   s>   | dk s| d dkrt jS t|}t| t|  ||   S d S r   )r   r=   r   r   r   rk   rd   rl   r&   r&   r*   rm   D  s    zsech.taylor_termc                 K   s   dt t|  S r   r   r   r&   r&   r*   r   M  s    zsech._eval_rewrite_as_cosc                 K   s   t t| S r   r   r   r&   r&   r*   r   P  s    zsech._eval_rewrite_as_secc                 K   s   t jt|t jt j d   S r   r   r   r&   r&   r*   r   S  s    zsech._eval_rewrite_as_sinhc                 K   s   dt | S r   rI   r   r&   r&   r*   r   V  s    zsech._eval_rewrite_as_coshc                 C   s   | j d jrdS d S r   r   rq   r&   r&   r*   r   Y  s    zsech._eval_is_positiveN)rH   )r1   r2   r3   r4   rI   r  r  rN   r   r   rm   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*   r  b  s   r  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 )rQ   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   s0   |dkr"dt | jd d d  S t| |d S r   )r   rJ   r
   rK   r&   r&   r*   rN   ~  s    zasinh.fdiffc           	      C   st  |j r|tju rtjS |tju r&tjS |tju r6tjS |jrBtjS |tju r\tt	dd S |tj
u rvtt	dd S |jr| |  S nN|tju rtjS |jrtjS t|}|d urtjt| S | r| |  S t|trp|jd jrp|jd }|jr|S t|\}}|d urp|d urpt|td  t }|tt |  }|j}|du r`|S |du rp| S d S )NrT   rH   r   TF)rU   r   rV   rW   rX   rY   r=   r9   r   r   r   rZ   r[   r$   r7   r   r\   
isinstancerG   rJ   r  r   r   r   r   r   is_even)	rb   r?   rc   r   rr   fre   evenr&   r&   r*   rf     sJ    








z
asinh.evalc                 G   s   | dk s| d dkrt jS t|}t|dkrd| dkrd|d }| | d d  | | d   |d  S | d d }tt j|}t|}t j| | | ||   |  S d S Nr   rT   rg   rH   )r   r=   r   ri   r   r>   r   r   rk   rd   rl   rC   r   Rr   r&   r&   r*   rm     s    &zasinh.taylor_termNr   c                 C   sH   ddl m} | jd |}||jv r:|d||r:|S | |S d S r   r   r  r&   r&   r*   r     s
    zasinh._eval_as_leading_termc                 K   s   t |t|d d  S r   r   r   rL   rd   r   r&   r&   r*   _eval_rewrite_as_log  s    zasinh._eval_rewrite_as_logc                 K   s   t |td|d   S NrH   rT   )r`   r   r'  r&   r&   r*   _eval_rewrite_as_atanh  s    zasinh._eval_rewrite_as_atanhc                 K   s4   t | }t td| t|d  t| td   S r)  )r   r   r_   r   )rL   rd   r   ixr&   r&   r*   _eval_rewrite_as_acosh  s    zasinh._eval_rewrite_as_acoshc                 K   s   t  tt |  S r   )r   r   r'  r&   r&   r*   _eval_rewrite_as_asin  s    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  s    zasinh._eval_rewrite_as_acosc                 C   s   t S rO   r  rK   r&   r&   r*   rR     s    zasinh.inversec                 C   s   | j d jS rn   r  rq   r&   r&   r*   r     s    zasinh._eval_is_zero)rH   )Nr   )rH   )r1   r2   r3   r4   rN   r   rf   r   r   rm   r   r(  r*  r,  r-  r.  rR   r   r&   r&   r&   r*   rQ   h  s   

-
	
rQ   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 ) r_   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   s<   |dkr.| j d }dt|d t|d   S t| |d S r   rJ   r   r
   )rL   rM   r?   r&   r&   r*   rN     s    
zacosh.fdiffc                +   C   s  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   rT   r   r                       )r   r7   r   r   r>   r6   r   r&   r&   r&   r*   _acosh_table  s*     "" "&zacosh._acosh_tablec           	      C   s  |j rr|tju rtjS |tju r&tjS |tju r6tjS |jrLtjtj d S |tju r\tj	S |tj
u rrtjtj S |jr|  }||v r|jr|| tj S || S |tju rtjS |tjtj krtjtjtj d  S |tj tj krtjtjtj d  S |jrtjtj tj S t|tr|jd jr|jd }|jrRt|S t|\}}|d ur|d urt|t }|tt |  }|j}|du r|jr|S |jr| S n0|du r|tt 8 }|jr| S |jr|S d S )NrT   r   TF)rU   r   rV   rW   rX   rY   r6   r7   r9   r=   r   r  r7  ru   r[   r>   r  rI   rJ   r   r   r   r   r   r   r  is_nonnegativerZ   is_nonpositiver   )	rb   r?   	cst_tabler   r   r   r!  re   r"  r&   r&   r*   rf     s^    








z
acosh.evalc                 G   s   | dkrt jt j d S | dk s,| d dkr2t jS t|}t|dkrz| dkrz|d }|| d d  | | d   |d  S | d d }tt j|}t|}| | t j ||   |  S d S r#  )	r   r6   r7   r=   r   ri   r   r>   r   r$  r&   r&   r*   rm   S  s    $zacosh.taylor_termNr   c                 C   sT   ddl m} | jd |}||jv rF|d||rFtjtj d S | 	|S d S Nr   r   rH   rT   
r   r   rJ   r   r  r  r   r7   r6   r^   r  r&   r&   r*   r   e  s
    zacosh._eval_as_leading_termc                 K   s    t |t|d t|d   S r   r&  r'  r&   r&   r*   r(  n  s    zacosh._eval_rewrite_as_logc                 K   s    t |d t d|  t| S r   )r   r   r'  r&   r&   r*   r.  q  s    zacosh._eval_rewrite_as_acosc                 K   s(   t |d t d|  td t|  S r)  )r   r   r   r'  r&   r&   r*   r-  t  s    zacosh._eval_rewrite_as_asinc                 K   s0   t |d t d|  td ttt|    S r)  )r   r   r   rQ   r'  r&   r&   r*   _eval_rewrite_as_asinhw  s    zacosh._eval_rewrite_as_asinhc                 K   sp   t |d }t d| }t |d d }td | | d|t d|d     |t |d  | t||   S r)  )r   r   r`   )rL   rd   r   Zsxm1Zs1mxZsx2m1r&   r&   r*   r*  z  s    &zacosh._eval_rewrite_as_atanhc                 C   s   t S rO   r  rK   r&   r&   r*   rR     s    zacosh.inversec                 C   s   | j d d jrdS d S )Nr   rH   Tr  rq   r&   r&   r*   r     s    zacosh._eval_is_zero)rH   )Nr   )rH   )r1   r2   r3   r4   rN   r   r   r7  r   rf   rm   r   r(  r.  r-  r=  r*  rR   r   r&   r&   r&   r*   r_     s$   

6
	
r_   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 )r`   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   s,   |dkrdd| j d d   S t| |d S r   rJ   r
   rK   r&   r&   r*   rN     s    zatanh.fdiffc           
      C   s  |j r|tju rtjS |jr"tjS |tju r2tjS |tju rBtjS |tju r\tj	 t
| S |tju rvtj	t
|  S |jr| |  S nf|tju rddlm} tj	|tj d tjd  S t|}|d urtj	t
| S | r| |  S |j rt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 )Nr   AccumBoundsrT   TF)rU   r   rV   rY   r=   r9   rW   r   rX   r7   r   rZ   r[   !sympy.calculus.accumulationboundsr@  r6   r$   r\   r  r   rJ   r  r   r   r   r   r  r   )
rb   r?   r@  rc   r   r   r   r!  r"  re   r&   r&   r*   rf     sL    








z
atanh.evalc                 G   s2   | dk s| d dkrt jS t|}||  |  S d S Nr   rT   )r   r=   r   r  r&   r&   r*   rm     s    zatanh.taylor_termNr   c                 C   sH   ddl m} | jd |}||jv r:|d||r:|S | |S d S r   r   r  r&   r&   r*   r     s
    zatanh._eval_as_leading_termc                 K   s   t d| t d|  d S r)  r   r'  r&   r&   r*   r(    s    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   rQ   )rL   rd   r   r!  r&   r&   r*   r=    s    ,zatanh._eval_rewrite_as_asinhc                 C   s   | j d jrdS d S r   r  rq   r&   r&   r*   r     s    zatanh._eval_is_zeroc                 C   s   | j d jS rn   )rJ   r   rq   r&   r&   r*   _eval_is_imaginary  s    zatanh._eval_is_imaginaryc                 C   s   t S rO   r	  rK   r&   r&   r*   rR     s    zatanh.inverse)rH   )Nr   )rH   )r1   r2   r3   r4   rN   r   rf   r   r   rm   r   r(  r=  r   rD  rR   r&   r&   r&   r*   r`     s   

.
	r`   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 )ra   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   s,   |dkrdd| j d d   S t| |d S r   r>  rK   r&   r&   r*   rN     s    zacoth.fdiffc                 C   s   |j r|tju rtjS |tju r&tjS |tju r6tjS |jrLtjtj d S |tj	u r\tjS |tj
u rltjS |jr| |  S nD|tju rtjS t|}|d urtj t| S | r| |  S |jrtjtj tj S d S r   )rU   r   rV   rW   r=   rX   rY   r6   r7   r9   r   rZ   r[   r$   r   r\   r>   )rb   r?   rc   r&   r&   r*   rf     s0    





z
acoth.evalc                 G   sJ   | dkrt jt j d S | dk s,| d dkr2t jS t|}||  |  S d S rB  )r   r6   r7   r=   r   r  r&   r&   r*   rm   7  s    zacoth.taylor_termNr   c                 C   sT   ddl m} | jd |}||jv rF|d||rFtjtj d S | 	|S d S r;  r<  r  r&   r&   r*   r   B  s
    zacoth._eval_as_leading_termc                 K   s$   t dd|  t dd|   d S r)  rC  r'  r&   r&   r*   r(  K  s    zacoth._eval_rewrite_as_logc                 K   s   t d| S r   r   r'  r&   r&   r*   r*  N  s    zacoth._eval_rewrite_as_atanhc                 K   sx   t t d t|d | t||d   tdd|  t||d     |td|d   ttd|d d    S r   )r   r   r   rQ   r'  r&   r&   r*   r=  Q  s    J*zacoth._eval_rewrite_as_asinhc                 C   s   t S rO   r   rK   r&   r&   r*   rR   U  s    zacoth.inverse)rH   )Nr   )rH   )r1   r2   r3   r4   rN   r   rf   r   r   rm   r   r(  r*  r=  rR   r&   r&   r&   r*   ra     s   

	
	ra   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   s8   |dkr*| j d }d|td|d    S t| |d S NrH   r   r  rT   r/  rL   rM   r   r&   r&   r*   rN     s    
zasech.fdiffc                5   C   s  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 )NrT   rH   r1  r4  r6  r2  
   	   r3  rg   r5  r   r0  r  )r   r7   r6   r   r   rW   rX   r&   r&   r&   r*   _asech_table  s6    $$   zasech._asech_tablec                 C   s   |j r||tju rtjS |tju r0tjtj d S |tju rJtjtj d S |jrVtjS |tju rftj	S |tj
u r|tjtj S |jr|  }||v r|jr|| tj S || S |tju rddlm} tj|tj d tjd  S |jrtjS d S )NrT   r   r?  )rU   r   rV   rW   r6   r7   rX   rY   r9   r=   r   r  rJ  ru   r[   rA  r@  )rb   r?   r:  r@  r&   r&   r*   rf     s0    





z
asech.evalc                 G   s   | dkrt d| S | dk s(| d dkr.tjS t|}t|dkrz| dkrz|d }|| d d  | d d  |d  d S | d }ttj||  }t||  d |  d }d| | ||   d S d S )Nr   rT   rH   rg   r0  r  )r   r   r=   r   ri   r   r>   r   r$  r&   r&   r*   expansion_term  s    (zasech.expansion_termc                 C   s   t S rO   r   rK   r&   r&   r*   rR     s    zasech.inversec                 K   s,   t d| td| d td| d   S r   r&  r   r&   r&   r*   r(    s    zasech._eval_rewrite_as_logc                 K   s   t d| S r   )r_   r   r&   r&   r*   r,    s    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   rQ   r6   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 r)  )r   r   r   r`   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    zasech._eval_rewrite_as_acschN)rH   )rH   )r1   r2   r3   r4   rN   r   r   rJ  r   rf   rK  rR   r(  r,  r=  r*  rM  r&   r&   r&   r*   rE  \  s    %


rE  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 )rL  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r2| j d }d|d tdd|d     S t| |d S rF  r/  rG  r&   r&   r*   rN     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 )NrT   r1  r4  rH   r2  rH  r3  r0  r   rg   )r   r7   r6   r   r   r&   r&   r&   r*   _acsch_table  s    ""$$  zacsch._acsch_tablec                 C   s   |j rx|tju rtjS |tju r&tjS |tju r6tjS |jrBtjS |tju r\t	dt
d S |tju rxt	dt
d  S |jr|  }||v r|| tj S |tju rtjS |jrtjS |jrtjS | r| |  S d S r)  )rU   r   rV   rW   r=   rX   rY   r[   r9   r   r   r   r  rP  r7   is_infiniter\   )rb   r?   r:  r&   r&   r*   rf   2  s2    





z
acsch.evalc                 C   s   t S rO   r   rK   r&   r&   r*   rR   T  s    zacsch.inversec                 K   s    t d| td|d  d  S r)  r&  r   r&   r&   r*   r(  Z  s    zacsch._eval_rewrite_as_logc                 K   s   t d| S r   rP   r   r&   r&   r*   r=  ]  s    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   r_   r6   r>   r   r&   r&   r*   r,  `  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>   r`   )rL   r?   r   arg2Zarg2p1r&   r&   r*   r*  d  s
    zacsch._eval_rewrite_as_atanhc                 C   s   | j d jS rn   )rJ   rQ  rq   r&   r&   r*   r   j  s    zacsch._eval_is_zeroN)rH   )rH   )r1   r2   r3   r4   rN   r   r   rP  r   rf   rR   r(  r=  r,  r*  r   r&   r&   r&   r*   rL    s   %

!
rL  N)A
sympy.corer   r   r   r   r   r   Z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   rI   r   r   r  r   r   r  rQ   r_   r`   ra   rE  rL  r&   r&   r&   r*   <module>   sD    4
" U w V -JG;} (q_ 