
    RieD                       d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d d	lmZmZmZ d d
lm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d Z5ed             Z6ed             Z7ed             Z8 G d de          Z9d Z: G d de9          Z; G d de9          Z< G d de9          Z= G d de9          Z> G d de9          Z? G d  d!e?          Z@ G d" d#e?          ZA G d$ d%e          ZB G d& d'eB          ZC G d( d)eB          ZD G d* d+eB          ZE G d, d-eB          ZF G d. d/eB          ZG G d0 d1eB          ZHd2S )3    )Ssympifycacheit)Add)FunctionArgumentIndexError)fuzzy_or	fuzzy_and	FuzzyBool)IpiRational)Dummy)binomial	factorialRisingFactorial)	bernoullieulernC)Absimre)explogmatch_real_imag)floor)sqrt)acosacotasinatancoscotcscsecsintan_imaginary_unit_as_coefficient)symmetric_polyc                 p    |                      d |                     t                    D                       S )Nc                 D    i | ]}||                     t                    S  )rewriter   ).0hs     Elib/python3.11/site-packages/sympy/functions/elementary/hyperbolic.py
<dictcomp>z/_rewrite_hyperbolics_as_exp.<locals>.<dictcomp>   s4     1 1 1 QYYs^^ 1 1 1    )xreplaceatomsHyperbolicFunction)exprs    r0   _rewrite_hyperbolics_as_expr7      sA    == 1 1.//1 1 1 2 2 2r2   c                     i t           t          t           dt          d          z   z            t            t          t            dt          d          z   z            t          j        t
          dz  t          dd          t
          t          dd          z  t          d          dz  t
          dz  t          d           dz  t
          t          dd          z  dt          d          z  t
          dz  dt          d          z  t
          t          dd          z  t          d          dz  t
          dz  t          d           dz  t
          t          dd          z  t          d          dz
  t          d          z  t
          t          dd	          z  t          d          dz
   t          d          z  t
          t          d
d	          z  t          dt          d          z             dz  t
          dz  t          dt          d          z              dz  t
          t          d
d          z  t          dt          d          z
            dz  t
          t          dd          z  t          dt          d          z
             dz  t
          t          dd          z  dt          d          z   dt          d          z  z  t
          d	z  dt          d          z    dt          d          z  z  t
          t          dd	          z  t          d          dz   dz  t
          dz  t          d          dz    dz  t
          t          dd          z  iS )N                              )r   r   r   r   Halfr   r   r,   r2   r0   _acosh_tablerE      s   	3q!d1gg+	
CAQK !! 	
1 	QHQNN*	
 	Q	2a4 
a
Bx1~~% 	
$q''	2a4 	477
Bx1~~% 	Q	2a4 
a
Bx1~~% 
a1d4jj "Xa__"4 q''A+tDzz!2hq"oo#5 	Qa[!RT 
a$q''k		1b!Q/ 	Qa[!RA.  
a$q''k		1b!Q/!" 
T!WWqay!2b5#$ d1gg+$q''	"BxB'7'7$7	a1aA
q''A+q"Xa^^+)  r2   c                   6   t           t           dz  t           t          d          t          d          z   z  t           dz  t           dt          d          z   z  t           dz  t           dz  t          dt          d          z
            z  t           dz  t           dz  t           dz  t           t          ddt          d          z  z             z  t           dz  t           t          d          z  t           dz  t           t          d          dz
  z  d	t          z  dz  t           dz  t          d
          z  t           d
z  t           dz  t          dt          d          z             z  d	t          z  dz  t           t          ddt          d          z  z
            z  dt          z  dz  t           t          d          t          d          z
  z  dt          z  dz  t          d          t            t	          dt          d          z   dz            z  iS )Nr:   r>   rA   r9   r?   
   r@   r=   r;   )r   r   r   r   r   r,   r2   r0   _acsch_tablerK   3   s    sQwtAwwa !B38q477{ObS2XaC$q477{###bS1WaC"qd1qay=!!!B37d1ggIsQwtAwwqyM2b52:aC$q''MB37aC$q477{###RUQYd1qay=!!!2b519tAwwa !2b52:aDD1"S!DGG)Q'''
 
r2   c                     i t           t          t           z  dz   t          dt          d          z             z   t            t          t           z  dz  t          dt          d          z             z   t          d          t          d          z
  t          dz  t          d          t          d          z
  dt          z  dz  t          ddt          d          z  z
            t          dz  t          ddt          d          z  z
             dt          z  dz  dt          dt          d          z             z  t          d	z  d
t          dt          d          z             z  dt          z  d	z  dt          d          z  t          dz  d
t          d          z  dt          z  dz  t          d          dz
  t          dz  dt          d          z
  dt          z  dz  t          d          t          dz  t          d           dt          z  dz  t          ddt          d          z  z             dt          z  dz  t          ddt          d          z  z              dt          z  dz  t	          d          t          dz  t	          d           dt          z  dz  t          ddt          d          z   z            dt          z  d	z  t          ddt          d          z   z             dt          z  d	z  dt          d          z   dt          z  dz  dt          d          z
  dt          z  dz  t          d          t          d          z   dt          z  dz  t          d           t          d          z
  dt          z  dz  t           t          j        z  t           t           z  dz  t           t          j        z  t          t           z  dz  i	S )Nr:   r9   r>   rA   rC   r?   rG   	   r@   rI   rB   r;   r=   r<   )r   r   r   r   r   InfinityNegativeInfinityr,   r2   r0   _asech_tablerP   F   s\   
"Q$(|c!d1gg+...
BAST!WW---
 !WWtAwwb
 !WWtAwwB	

 QtAwwYb
 !aQi-   !B$)
 Qa[!!!26
 a$q''k"""AbD1H
 QKa
 aL!B$(
 !WWq[26
 a[1R4!8
 GGR!V
 !WWHadQh
 QtAwwY2
  !aQi-   !B$)!
" aDD"q&#
$ qTTE1R4!8AQK!!1R4!8!Qa[/"""AbD1Ha[1R4!8$q''\AbD1H!WWtAww21ggXQ!B$)ajL2#a%!)a  "Q$(5
 
 	
r2   c                       e Zd ZdZdZdS )r5   ze
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__
unbranchedr,   r2   r0   r5   r5   j   s          JJJr2   r5   c                 (   t           t          z  }t          j        |           D ]C}||k    rt          j        } n<|j        r&|                                \  }}||k    r	|j        r nD| t          j	        fS |t          j
        z  }||z
  }| ||z  z
  |fS )a  
    Split ARG into two parts, a "rest" and a multiple of $I\pi$.
    This assumes ARG to be an ``Add``.
    The multiple of $I\pi$ returned in the second position is always a ``Rational``.

    Examples
    ========

    >>> from sympy.functions.elementary.hyperbolic import _peeloff_ipi as peel
    >>> from sympy import pi, I
    >>> from sympy.abc import x, y
    >>> peel(x + I*pi/2)
    (x, 1/2)
    >>> peel(x + I*2*pi/3 + I*pi*y)
    (x + I*pi*y + I*pi/6, 1/2)
    )r   r   r   	make_argsr   Oneis_Mulas_two_termsis_RationalZerorD   )argipiaKpm1m2s          r0   _peeloff_ipire   w   s    " Q$C]3 	 	88AEX 	>>##DAqCxxAMxAF{
af*B	
RBC<r2   c                       e Zd ZdZddZddZed             Zee	d                         Z
d Zdd	Zdd
ZddZddZd Zd Zd Zd Zd Zd Zd Zd dZd Zd Zd Zd Zd Zd 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
    r9   c                 b    |dk    rt          | j        d                   S t          | |          )z@
        Returns the first derivative of this function.
        r9   r   )coshargsr   selfargindexs     r0   fdiffz
sinh.fdiff   s1     q==	!%%%$T8444r2   c                     t           S z7
        Returns the inverse of this function.
        asinhrk   s     r0   inversezsinh.inverse   	     r2   c                 x   |j         rw|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 rt          j        S t          |          }|t          t          |          z  S |                                r | |            S |j        ret          |          \  }}|rQ|t          z  t          z  }t!          |          t#          |          z  t#          |          t!          |          z  z   S |j        rt          j        S |j        t&          k    r|j        d         S |j        t*          k    r2|j        d         }t-          |dz
            t-          |dz             z  S |j        t.          k    r%|j        d         }|t-          d|dz  z
            z  S |j        t0          k    r5|j        d         }dt-          |dz
            t-          |dz             z  z  S d S Nr   r9   r:   )	is_Numberr   NaNrN   rO   is_zeror]   is_negativeComplexInfinityr(   r   r&   could_extract_minus_signis_Addre   r   rg   ri   funcrr   rj   acoshr   atanhacoth)clsr^   i_coeffxms        r0   evalz	sinh.eval   s   = -	5ae||u
""z!***)) "v "SD		z!" " a'''u4S99G"3w<<''//11 &CII:%z =#C((1 ="QA77477?T!WWT!WW_<<{ vx5  x{"x5  HQKAE{{T!a%[[00x5  HQKa!Q$h''x5  HQK$q1u++QU344 ! r2   c                     | dk     s	| dz  dk    rt           j        S t          |          }t          |          dk    r|d         }||dz  z  | | dz
  z  z  S || z  t	          |           z  S )zG
        Returns the next term in the Taylor series expansion.
        r   r:   rI   r9   r   r]   r   lenr   nr   previous_termsrb   s       r0   taylor_termzsinh.taylor_term   sx     q55AEQJJ6M

A>""Q&&"2&1a4x1a!e9--1v	!,,r2   c                 f    |                      | j        d                                                   S Nr   r~   rj   	conjugaterl   s    r0   _eval_conjugatezsinh._eval_conjugate   &    yy1//11222r2   Tc                    | j         d         j        r/|rd|d<    | j        |fi |t          j        fS | t          j        fS |r/ | j         d         j        |fi |                                \  }}n"| j         d                                         \  }}t          |          t          |          z  t          |          t          |          z  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hintsr   r   s        r0   r   zsinh.as_real_imag  s     9Q<( 	& &#(i #D22E22AF;;af~% 	1(TYq\(7777DDFFFBYq\..00FBRR $r((3r77"233r2   c                 @     | j         dd|i|\  }}||t          z  z   S Nr   r,   r   r   rl   r   r   re_partim_parts        r0   _eval_expand_complexzsinh._eval_expand_complex  3    ,4,@@$@%@@""r2   c                    |r | j         d         j        |fi |}n| j         d         }d }|j        r|                                \  }}nF|                    d          \  }}|t
          j        ur|j        r|t
          j        ur
|}|dz
  |z  }|St          |          t          |          z  t          |          t          |          z  z                       d          S t          |          S Nr   Trationalr9   )trig)
rj   r   r}   r[   as_coeff_Mulr   rY   
is_Integerrg   ri   rl   r   r   r^   r   ycoefftermss           r0   _eval_expand_trigzsinh._eval_expand_trig       	%$)A,%d44e44CC)A,C: 	"##%%DAqq++T+::LE5AE!!e&6!5;M;MQYM=GGDGGOd1ggd1ggo5==4=HHHCyyr2   Nc                 H    t          |          t          |           z
  dz  S Nr:   r   rl   r^   limitvarkwargss       r0   _eval_rewrite_as_tractablezsinh._eval_rewrite_as_tractable&       C3t99$))r2   c                 H    t          |          t          |           z
  dz  S r   r   rl   r^   r   s      r0   _eval_rewrite_as_expzsinh._eval_rewrite_as_exp)  r   r2   c                 B    t            t          t           |z            z  S Nr   r&   r   s      r0   _eval_rewrite_as_sinzsinh._eval_rewrite_as_sin,      rCCLL  r2   c                 B    t            t          t           |z            z  S r   r   r$   r   s      r0   _eval_rewrite_as_csczsinh._eval_rewrite_as_csc/  r   r2   c                 X    t            t          |t          t           z  dz  z             z  S r   r   ri   r   r   s      r0   _eval_rewrite_as_coshzsinh._eval_rewrite_as_cosh2  #    r$sRT!V|$$$$r2   c                 V    t          t          j        |z            }d|z  d|dz  z
  z  S Nr:   r9   tanhr   rD   rl   r^   r   	tanh_halfs       r0   _eval_rewrite_as_tanhzsinh._eval_rewrite_as_tanh5  s-    $$	{A	1,--r2   c                 V    t          t          j        |z            }d|z  |dz  dz
  z  S r   cothr   rD   rl   r^   r   	coth_halfs       r0   _eval_rewrite_as_cothzsinh._eval_rewrite_as_coth9  s-    $$	{IqL1,--r2   c                 &    dt          |          z  S Nr9   cschr   s      r0   _eval_rewrite_as_cschzsinh._eval_rewrite_as_csch=      499}r2   r   c                     | j         d                             |||          }|                    |d          }|t          j        u r!|                    |d|j        rdnd          }|j        r|S |j        r| 	                    |          S | S Nr   logxcdir-+)dir)
rj   as_leading_termsubsr   rx   limitrz   ry   	is_finiter~   rl   r   r   r   r^   arg0s         r0   _eval_as_leading_termzsinh._eval_as_leading_term@  s    il**14d*CCxx1~~15==99Qd.>'GssC9HHD< 	J^ 	99T??"Kr2   c                 z    | j         d         }|j        rdS |                                \  }}|t          z  j        S Nr   Trj   is_realr   r   ry   rl   r^   r   r   s       r0   _eval_is_realzsinh._eval_is_realM  s?    il; 	4 !!##B2r2   c                 .    | j         d         j        rdS d S r   rj   r   r   s    r0   _eval_is_extended_realzsinh._eval_is_extended_realW  "    9Q<( 	4	 	r2   c                 N    | j         d         j        r| j         d         j        S d S r   rj   r   is_positiver   s    r0   _eval_is_positivezsinh._eval_is_positive[  ,    9Q<( 	,9Q<++	, 	,r2   c                 N    | j         d         j        r| j         d         j        S d S r   rj   r   rz   r   s    r0   _eval_is_negativezsinh._eval_is_negative_  r   r2   c                 *    | j         d         }|j        S r   rj   r   rl   r^   s     r0   _eval_is_finitezsinh._eval_is_finitec      il}r2   c                 \    t          | j        d                   \  }}|j        r|j        S d S r   )re   rj   ry   
is_integerrl   restipi_mults      r0   _eval_is_zerozsinh._eval_is_zerog  s6    %dil33h< 	'&&	' 	'r2   r9   Tr   r   )rR   rS   rT   rU   rn   rs   classmethodr   staticmethodr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r,   r2   r0   rg   rg      s        &5 5 5 5    .5 .5 [.5` - - W \-3 3 34 4 4 4 # # # #   "* * * ** * *! ! !! ! !% % %. . .. . .         , , ,, , ,  ' ' ' ' 'r2   rg   c                       e Zd ZdZddZed             Zeed                         Z	d Z
ddZdd	Zdd
ZddZd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd ZdS )ri   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
    r9   c                 b    |dk    rt          | j        d                   S t          | |          Nr9   r   rg   rj   r   rk   s     r0   rn   z
cosh.fdiff  s/    q==	!%%%$T8444r2   c                 @   ddl m} |j        rv|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 rt          j        S t          |          }| ||          S |                                r | |           S |j        ret          |          \  }}|rQ|t          z  t           z  }t#          |          t#          |          z  t%          |          t%          |          z  z   S |j        rt          j        S |j        t(          k    r t+          d|j        d         dz  z             S |j        t.          k    r|j        d         S |j        t0          k    r#dt+          d|j        d         dz  z
            z  S |j        t2          k    r5|j        d         }|t+          |dz
            t+          |dz             z  z  S d S )Nr   )r"   r9   r:   )(sympy.functions.elementary.trigonometricr"   rw   r   rx   rN   rO   ry   rY   rz   r{   r(   r|   r}   re   r   r   ri   rg   r~   rr   r   rj   r   r   r   )r   r^   r"   r   r   r   s         r0   r   z	cosh.eval  s   @@@@@@= +	5ae||u
""z!***z! !u !sC4yy ! ! a'''u4S99G"s7||#//11 %3t99$z =#C((1 ="QA77477?T!WWT!WW_<<{ ux5  AQ.///x5  x{"x5  a#(1+q.01111x5  HQK$q1u++QU344 ! r2   c                     | dk     s	| dz  dk    rt           j        S t          |          }t          |          dk    r|d         }||dz  z  | | dz
  z  z  S || z  t	          |           z  S )Nr   r:   r9   rI   r   r   s       r0   r   zcosh.taylor_term  sx     q55AEQJJ6M

A>""Q&&"2&1a4x1a!e9--1vill**r2   c                 f    |                      | j        d                                                   S r   r   r   s    r0   r   zcosh._eval_conjugate  r   r2   Tc                    | j         d         j        r/|rd|d<    | j        |fi |t          j        fS | t          j        fS |r/ | j         d         j        |fi |                                \  }}n"| j         d                                         \  }}t          |          t          |          z  t          |          t          |          z  fS )Nr   Fr   )
rj   r   r   r   r]   r   ri   r"   rg   r&   r   s        r0   r   zcosh.as_real_imag  s    9Q<( 	& &#(i #D22E22AF;;af~% 	1(TYq\(7777DDFFFBYq\..00FBRR $r((3r77"233r2   c                 @     | j         dd|i|\  }}||t          z  z   S r   r   r   s        r0   r   zcosh._eval_expand_complex  r   r2   c                    |r | j         d         j        |fi |}n| j         d         }d }|j        r|                                \  }}nF|                    d          \  }}|t
          j        ur|j        r|t
          j        ur
|}|dz
  |z  }|St          |          t          |          z  t          |          t          |          z  z                       d          S t          |          S r   )
rj   r   r}   r[   r   r   rY   r   ri   rg   r   s           r0   r   zcosh._eval_expand_trig  r   r2   Nc                 H    t          |          t          |           z   dz  S r   r   r   s       r0   r   zcosh._eval_rewrite_as_tractable  r   r2   c                 H    t          |          t          |           z   dz  S r   r   r   s      r0   r   zcosh._eval_rewrite_as_exp  r   r2   c                 0    t          t          |z            S r   r"   r   r   s      r0   _eval_rewrite_as_coszcosh._eval_rewrite_as_cos      1s7||r2   c                 6    dt          t          |z            z  S r   r%   r   r   s      r0   _eval_rewrite_as_seczcosh._eval_rewrite_as_sec      3q3w<<r2   c                 X    t            t          |t          t           z  dz  z             z  S r   r   rg   r   r   s      r0   _eval_rewrite_as_sinhzcosh._eval_rewrite_as_sinh  r   r2   c                 V    t          t          j        |z            dz  }d|z   d|z
  z  S r   r   r   s       r0   r   zcosh._eval_rewrite_as_tanh  s-    $$a'	II..r2   c                 V    t          t          j        |z            dz  }|dz   |dz
  z  S r   r   r   s       r0   r   zcosh._eval_rewrite_as_coth  s-    $$a'	A	A..r2   c                 &    dt          |          z  S r   sechr   s      r0   _eval_rewrite_as_sechzcosh._eval_rewrite_as_sech  r   r2   r   c                 4   | j         d                             |||          }|                    |d          }|t          j        u r!|                    |d|j        rdnd          }|j        rt          j        S |j	        r| 
                    |          S | S r   )rj   r   r   r   rx   r   rz   ry   rY   r   r~   r   s         r0   r   zcosh._eval_as_leading_term  s    il**14d*CCxx1~~15==99Qd.>'GssC9HHD< 	5L^ 	99T??"Kr2   c                     | j         d         }|j        s|j        rdS |                                \  }}|t          z  j        S r   )rj   r   is_imaginaryr   r   ry   r   s       r0   r   zcosh._eval_is_real  sK    il ; 	#* 	4
 !!##B2r2   c                 (   | j         d         }|                                \  }}|dt          z  z  }|j        }|rdS |j        }|du r|S t	          |t          |t	          |t          dz  k     |dt          z  dz  k    g          g          g          S Nr   r:   TFr;   rj   r   r   ry   r	   r
   rl   zr   r   ymodyzeroxzeros          r0   r   zcosh._eval_is_positive  s     IaL~~1AbDz 	4	E>>LdRTk4!B$q&=9::  	   	r2   c                 (   | j         d         }|                                \  }}|dt          z  z  }|j        }|rdS |j        }|du r|S t	          |t          |t	          |t          dz  k    |dt          z  dz  k    g          g          g          S r/  r0  r1  s          r0   _eval_is_nonnegativezcosh._eval_is_nonnegative?  s    IaL~~1AbDz 	4	E>>LdbdlDAbDFN;<<  	   	r2   c                 *    | j         d         }|j        S r   r   r   s     r0   r  zcosh._eval_is_finiteY  r  r2   c                 ~    t          | j        d                   \  }}|r|j        r|t          j        z
  j        S d S d S r   )re   rj   ry   r   rD   r  r  s      r0   r  zcosh._eval_is_zero]  sN    %dil33h 	2 	2qv%11	2 	2 	2 	2r2   r	  r
  r   r   )rR   rS   rT   rU   rn   r  r   r  r   r   r   r   r   r   r   r   r  r   r$  r   r   r*  r   r   r   r7  r  r  r,   r2   r0   ri   ri   m  s        &5 5 5 5 -5 -5 [-5^ 
+ 
+ W \
+3 3 34 4 4 4# # # #   "* * * ** * *       % % %/ / // / /         @  4  2 2 2 2 2r2   ri   c                       e Zd ZdZddZddZed             Zee	d                         Z
d Zdd	Zd
 ZddZd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd ZdS )r   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
    r9   c                     |dk    r*t           j        t          | j        d                   dz  z
  S t	          | |          Nr9   r   r:   )r   rY   r   rj   r   rk   s     r0   rn   z
tanh.fdiffw  s;    q==54	!--q000$T8444r2   c                     t           S rp   r   rk   s     r0   rs   ztanh.inverse}  rt   r2   c                    |j         rw|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 rt          j        S t          |          }|D|                                rt           t          |           z  S t          t          |          z  S |                                r | |            S |j        r_t!          |          \  }}|rKt#          |t$          z  t          z            }|t          j
        u rt'          |          S t#          |          S |j        rt          j        S |j        t*          k    r%|j        d         }|t/          d|dz  z             z  S |j        t0          k    r5|j        d         }t/          |dz
            t/          |dz             z  |z  S |j        t2          k    r|j        d         S |j        t4          k    rd|j        d         z  S d S rv   )rw   r   rx   rN   rY   rO   NegativeOnery   r]   rz   r{   r(   r|   r   r'   r}   re   r   r   r   r~   rr   rj   r   r   r   r   )r   r^   r   r   r   tanhms         r0   r   z	tanh.eval  s   = 1	%ae||u
""u***}$ "v "SD		z!" " a'''u4S99G"3355 .2WH--3w<<''//11 &CII:%z '#C((1 ' 2aLLE 111#Aww#Aww{ vx5  HQKa!Q$h''x5  HQKAE{{T!a%[[0144x5  x{"x5  !}$ ! r2   c                     | dk     s	| dz  dk    rt           j        S t          |          }d| dz   z  }t          | dz             }t	          | dz             }||dz
  z  |z  |z  || z  z  S Nr   r:   r9   )r   r]   r   r   r   )r   r   r   r`   BFs         r0   r   ztanh.taylor_term  sy     q55AEQJJ6M

AAE
A!a%  A!a%  Aa!e9q=?QT))r2   c                 f    |                      | j        d                                                   S r   r   r   s    r0   r   ztanh._eval_conjugate  r   r2   Tc                    | j         d         j        r/|rd|d<    | j        |fi |t          j        fS | t          j        fS |r/ | j         d         j        |fi |                                \  }}n"| j         d                                         \  }}t          |          dz  t          |          dz  z   }t          |          t          |          z  |z  t          |          t          |          z  |z  fS )Nr   Fr   r:   r   )rl   r   r   r   r   denoms         r0   r   ztanh.as_real_imag  s    9Q<( 	& &#(i #D22E22AF;;af~% 	1(TYq\(7777DDFFFBYq\..00FBR!c"ggqj(Rb!%'RR)>??r2   c                 J  	
 | j         d         }|j        rpt          |j                   }d |j         D             }ddg}t          |dz             D ]#}||dz  xx         t	          ||          z  cc<   $|d         |d         z  S |j        r|                                \  
}
j        rj
dk    rdt          |          		
fdt          d
dz   d          D             }	
fdt          d
dz   d          D             }t          | t          | z  S t          |          S )Nr   c                 T    g | ]%}t          |d                                           &S Fevaluate)r   r   r.   r   s     r0   
<listcomp>z*tanh._eval_expand_trig.<locals>.<listcomp>  sA     # # # q5)));;== # # #r2   r9   r:   c                 V    g | ]%}t          t                    |          |z  z  &S r,   r   ranger.   kTr   s     r0   rO  z*tanh._eval_expand_trig.<locals>.<listcomp>  2    NNN!Rea((A-NNNr2   c                 V    g | ]%}t          t                    |          |z  z  &S r,   rQ  rS  s     r0   rO  z*tanh._eval_expand_trig.<locals>.<listcomp>  rV  r2   )
rj   r}   r   rR  r)   rZ   r   r   r   r   )rl   r   r^   r   TXrb   ir   drU  r   s            @@r0   r   ztanh._eval_expand_trig  sS   il: 	'CHA# ## # #BAA1q5\\ 2 2!a%N1b111Q4!9Z 	'++--LE5 'EAIIKKNNNNNuQ	17M7MNNNNNNNNuQ	17M7MNNNAwsAw&Cyyr2   Nc                 V    t          |           t          |          }}||z
  ||z   z  S r   r   rl   r^   r   r   neg_exppos_exps         r0   r   ztanh._eval_rewrite_as_tractable  .    t99c#hh'!Gg$566r2   c                 V    t          |           t          |          }}||z
  ||z   z  S r   r   rl   r^   r   r]  r^  s        r0   r   ztanh._eval_rewrite_as_exp  r_  r2   c                 B    t            t          t           |z            z  S r   )r   r'   r   s      r0   _eval_rewrite_as_tanztanh._eval_rewrite_as_tan  r   r2   c                 B    t            t          t           |z            z  S r   )r   r#   r   s      r0   _eval_rewrite_as_cotztanh._eval_rewrite_as_cot  r   r2   c                 v    t           t          |          z  t          t          t           z  dz  |z
            z  S r   r#  r   s      r0   r$  ztanh._eval_rewrite_as_sinh  s+    c{41Q----r2   c                 v    t           t          t          t           z  dz  |z
            z  t          |          z  S r   r   r   s      r0   r   ztanh._eval_rewrite_as_cosh  s,    bd1fsl###DII--r2   c                 &    dt          |          z  S r   r   r   s      r0   r   ztanh._eval_rewrite_as_coth      c{r2   r   c                     ddl m} | j        d                             |          }||j        v r! |d|                              |          r|S |                     |          S Nr   )Orderr9   sympy.series.orderrm  rj   r   free_symbolscontainsr~   rl   r   r   r   rm  r^   s         r0   r   ztanh._eval_as_leading_term  sm    ,,,,,,il**1--   UU1a[[%9%9#%>%> J99S>>!r2   c                     | j         d         }|j        rdS |                                \  }}|dk    r|t          z  t          dz  k    rd S |t          dz  z  j        S )Nr   Tr:   r   r   s       r0   r   ztanh._eval_is_real  sd    il; 	4!!##B 77rBw"Q$4 bd$$r2   c                 .    | j         d         j        rdS d S r   r   r   s    r0   r   ztanh._eval_is_extended_real  r   r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   ztanh._eval_is_positive  r   r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   ztanh._eval_is_negative"  r   r2   c                     | j         d         }|                                \  }}t          |          dz  t          |          dz  z   }|dk    rdS |j        rdS |j        rdS d S )Nr   r:   FT)rj   r   r"   rg   	is_numberr   )rl   r^   r   r   rH  s        r0   r  ztanh._eval_is_finite&  sw    il!!##BB
T"XXq[(A::5_ 	4 	4	 	r2   c                 2    | j         d         }|j        rdS d S r   rj   ry   r   s     r0   r  ztanh._eval_is_zero2  s&    il; 	4	 	r2   r	  r
  r   r   )rR   rS   rT   rU   rn   rs   r  r   r  r   r   r   r   r   r   r   rc  re  r$  r   r   r   r   r   r   r   r  r  r,   r2   r0   r   r   c  s        &5 5 5 5    2% 2% [2%h * * W \*3 3 3@ @ @ @  &7 7 7 77 7 7! ! !! ! !. . .. . .  " " " "% % %  , , ,, , ,
 
 
    r2   r   c                       e Zd ZdZddZddZed             Zee	d                         Z
d Zdd	ZddZd Zd Zd Zd Zd Zd ZddZ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
    r9   c                 n    |dk    r dt          | j        d                   dz  z  S t          | |          )Nr9   r<   r   r:   r  rk   s     r0   rn   z
coth.fdiffL  s9    q==d49Q<((!+++$T8444r2   c                     t           S rp   )r   rk   s     r0   rs   zcoth.inverseR  rt   r2   c                    |j         rw|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 rt          j        S t          |          }|D|                                rt          t          |           z  S t           t          |          z  S |                                r | |            S |j        r_t          |          \  }}|rKt!          |t"          z  t          z            }|t          j        u rt!          |          S t%          |          S |j        rt          j        S |j        t(          k    r%|j        d         }t-          d|dz  z             |z  S |j        t.          k    r5|j        d         }|t-          |dz
            t-          |dz             z  z  S |j        t0          k    rd|j        d         z  S |j        t2          k    r|j        d         S d S rv   )rw   r   rx   rN   rY   rO   r@  ry   r{   rz   r(   r|   r   r#   r}   re   r   r   r   r~   rr   rj   r   r   r   r   )r   r^   r   r   r   cothms         r0   r   z	coth.evalX  s#   = 1	#ae||u
""u***}$ "(( "SD		z!" " a'''u4S99G"3355 -sG8}},,rCLL((//11 &CII:%z '#C((1 ' 2aLLE 111#Aww#Aww{ )((x5  HQKA1H~~a''x5  HQK$q1u++QU344x5  !}$x5  x{" ! r2   c                     | dk    rdt          |          z  S | dk     s	| dz  dk    rt          j        S t          |          }t          | dz             }t	          | dz             }d| dz   z  |z  |z  || z  z  S rv   r   r   r]   r   r   r   r   r   rD  rE  s        r0   r   zcoth.taylor_term  s     66wqzz>!UUa!eqjj6M

A!a%  A!a%  Aq1u:>!#ad**r2   c                 f    |                      | j        d                                                   S r   r   r   s    r0   r   zcoth._eval_conjugate  r   r2   Tc                    ddl m}m} | j        d         j        r/|rd|d<    | j        |fi |t          j        fS | t          j        fS |r/ | j        d         j        |fi |                                \  }}n"| j        d                                         \  }}t          |          dz   ||          dz  z   }t          |          t          |          z  |z   ||            ||          z  |z  fS )Nr   )r"   r&   Fr   r:   )r  r"   r&   rj   r   r   r   r]   r   rg   ri   )rl   r   r   r"   r&   r   r   rH  s           r0   r   zcoth.as_real_imag  s   GGGGGGGG9Q<( 	& &#(i #D22E22AF;;af~% 	1(TYq\(7777DDFFFBYq\..00FBR!cc"ggqj(Rb!%'##b''##b'')9%)?@@r2   Nc                 V    t          |           t          |          }}||z   ||z
  z  S r   r   r\  s         r0   r   zcoth._eval_rewrite_as_tractable  r_  r2   c                 V    t          |           t          |          }}||z   ||z
  z  S r   r   ra  s        r0   r   zcoth._eval_rewrite_as_exp  r_  r2   c                 x    t            t          t          t           z  dz  |z
            z  t          |          z  S r   r#  r   s      r0   r$  zcoth._eval_rewrite_as_sinh  s.    r$r!tAv|$$$T#YY..r2   c                 x    t            t          |          z  t          t          t           z  dz  |z
            z  S r   r   r   s      r0   r   zcoth._eval_rewrite_as_cosh  s-    r$s))|DAa#....r2   c                 &    dt          |          z  S r   r   r   s      r0   r   zcoth._eval_rewrite_as_tanh  rj  r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   zcoth._eval_is_positive  r   r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   zcoth._eval_is_negative  r   r2   r   c                     ddl m} | j        d                             |          }||j        v r$ |d|                              |          rd|z  S |                     |          S rl  rn  rr  s         r0   r   zcoth._eval_as_leading_term  sq    ,,,,,,il**1--   UU1a[[%9%9#%>%> S5L99S>>!r2   c                    | j         d         }|j        rd |j         D             }g g g}t          |j                   }t          |dd          D ]1}|||z
  dz                               t          ||                     2t          |d          t          |d          z  S |j        r|                    d          \  }}|j	        r|dk    r}t          |d	          }	g g g}t          |dd          D ]7}|||z
  dz                               t          ||          |	|z  z             8t          |d          t          |d          z  S t          |          S )
Nr   c                 T    g | ]%}t          |d                                           &S rK  )r   r   rN  s     r0   rO  z*coth._eval_expand_trig.<locals>.<listcomp>  s1    PPP!$q5)));;==PPPr2   r<   r:   r9   Tr   FrL  )rj   r}   r   rR  appendr)   r   rZ   r   r   r   r   )
rl   r   r^   CXrb   r   rY  r   r   cs
             r0   r   zcoth._eval_expand_trig  sr   il: 	-PPsxPPPBRACHA1b"%% = =1q5A+%%nQ&;&;<<<<!:c1Q4j((Z 	-'''66HE1 -EAIIU+++Hub"-- G GAuqyAo&--hua.@.@A.EFFFFAaDz#qt*,,Cyyr2   r	  r
  r   r   )rR   rS   rT   rU   rn   rs   r  r   r  r   r   r   r   r   r   r$  r   r   r   r   r   r   r,   r2   r0   r   r   8  s?        &5 5 5 5    2# 2# [2#h + + W \+3 3 3A A A A7 7 7 77 7 7/ / // / /  , , ,, , ," " " "    r2   r   c                       e Zd ZU dZdZdZeed<   dZeed<   e	d             Z
d Zd Zd Zd	 Zdd
Zd Zd ZddZd ZddZd ZddZd Zd ZdS )ReciprocalHyperbolicFunctionz=Base class for reciprocal functions of hyperbolic functions. N_is_even_is_oddc                 (   |                                 r'| j        r | |           S | j        r | |            S | j                            |          }t          |d          r%|                                | k    r|j        d         S |d|z  n|S )Nrs   r   r9   )r|   r  r  _reciprocal_ofr   hasattrrs   rj   )r   r^   ts      r0   r   z!ReciprocalHyperbolicFunction.eval  s    '')) 	"| !sC4yy { "SD		z!##C((3	"" 	s{{}}';';8A;mqss*r2   c                 n    |                      | j        d                   } t          ||          |i |S r   )r  rj   getattr)rl   method_namerj   r   os        r0   _call_reciprocalz-ReciprocalHyperbolicFunction._call_reciprocal  s:    	!--&wq+&&7777r2   c                 6     | j         |g|R i |}|d|z  n|S r   )r  )rl   r  rj   r   r  s        r0   _calculate_reciprocalz2ReciprocalHyperbolicFunction._calculate_reciprocal  s8     "D!+??????mqss*r2   c                 v    |                      ||          }|||                     |          k    rd|z  S d S d S r   )r  r  )rl   r  r^   r  s       r0   _rewrite_reciprocalz0ReciprocalHyperbolicFunction._rewrite_reciprocal  sL     !!+s33=Q$"5"5c":":::Q3J =::r2   c                 .    |                      d|          S )Nr   r  r   s      r0   r   z1ReciprocalHyperbolicFunction._eval_rewrite_as_exp  s    ''(>DDDr2   c                 .    |                      d|          S )Nr   r  r   s       r0   r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractable  s    ''(DcJJJr2   c                 .    |                      d|          S )Nr   r  r   s      r0   r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanh      ''(?EEEr2   c                 .    |                      d|          S )Nr   r  r   s      r0   r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_coth  r  r2   Tc                 `     d|                      | j        d                   z  j        |fi |S r  )r  rj   r   )rl   r   r   s      r0   r   z)ReciprocalHyperbolicFunction.as_real_imag  s6    CD''	!555CDRRERRRr2   c                 f    |                      | j        d                                                   S r   r   r   s    r0   r   z,ReciprocalHyperbolicFunction._eval_conjugate  r   r2   c                 @     | j         dddi|\  }}|t          |z  z   S )Nr   Tr,   r   r   s        r0   r   z1ReciprocalHyperbolicFunction._eval_expand_complex  s3    ,4,@@$@%@@7""r2   c                      | j         di |S )Nr   )r   )r  )rl   r   s     r0   r   z.ReciprocalHyperbolicFunction._eval_expand_trig!  s    )t)GGGGGr2   r   c                 n    d|                      | j        d                   z                      |          S r  )r  rj   r   )rl   r   r   r   s       r0   r   z2ReciprocalHyperbolicFunction._eval_as_leading_term$  s/    $%%dil333JJ1MMMr2   c                 L    |                      | j        d                   j        S r   )r  rj   r   r   s    r0   r   z3ReciprocalHyperbolicFunction._eval_is_extended_real'  s    ""49Q<00AAr2   c                 R    d|                      | j        d                   z  j        S r  )r  rj   r   r   s    r0   r  z,ReciprocalHyperbolicFunction._eval_is_finite*  s$    $%%dil333>>r2   r   r
  r   )rR   rS   rT   rU   r  r  r   __annotations__r  r  r   r  r  r  r   r   r   r   r   r   r   r   r   r   r  r,   r2   r0   r  r    s]        GG NHiGY
+ 
+ [
+8 8 8
+ + +  E E EK K K KF F FF F FS S S S3 3 3# # # #H H HN N N NB B B? ? ? ? ?r2   r  c                   l    e Zd ZdZeZdZddZee	d                         Z
d Zd Zd Zd	 Zd
 Z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
    Tr9   c                     |dk    r6t          | j        d                    t          | j        d                   z  S t          | |          )z?
        Returns the first derivative of this function
        r9   r   )r   rj   r   r   rk   s     r0   rn   z
csch.fdiffE  sG     q==1&&&dil););;;$T8444r2   c                     | dk    rdt          |          z  S | dk     s	| dz  dk    rt          j        S t          |          }t          | dz             }t	          | dz             }ddd| z  z
  z  |z  |z  || z  z  S )zF
        Returns the next term in the Taylor series expansion
        r   r9   r:   r  r  s        r0   r   zcsch.taylor_termN  s     66WQZZ<UUa!eqjj6M

A!a%  A!a%  AAqD>A%a'!Q$..r2   c                 @    t           t          t           |z            z  S r   r   r   s      r0   r   zcsch._eval_rewrite_as_sin`      3q3w<<r2   c                 @    t           t          t           |z            z  S r   r   r   s      r0   r   zcsch._eval_rewrite_as_cscc  r  r2   c                 V    t           t          |t           t          z  dz  z             z  S r   r   r   s      r0   r   zcsch._eval_rewrite_as_coshf  s"    4a"fqj())))r2   c                 &    dt          |          z  S r   rg   r   s      r0   r$  zcsch._eval_rewrite_as_sinhi  r   r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   zcsch._eval_is_positivel  r   r2   c                 N    | j         d         j        r| j         d         j        S d S r   r   r   s    r0   r   zcsch._eval_is_negativep  r   r2   Nr	  )rR   rS   rT   rU   rg   r  r  rn   r  r   r   r   r   r   r$  r   r   r,   r2   r0   r   r   .  s         & NG5 5 5 5 / / W \/           * * *  , , ,, , , , ,r2   r   c                   f    e Zd ZdZeZdZddZee	d                         Z
d Zd Zd Zd	 Z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
    Tr9   c                     |dk    r6t          | j        d                    t          | j        d                   z  S t          | |          r  )r   rj   r)  r   rk   s     r0   rn   z
sech.fdiff  sE    q==$)A,'''TYq\(:(:::$T8444r2   c                     | dk     s	| dz  dk    rt           j        S t          |          }t          |           t	          |           z  || z  z  S rC  )r   r]   r   r   r   r   r   r   s      r0   r   zsech.taylor_term  sK     q55AEQJJ6M

A88ill*QV33r2   c                 6    dt          t          |z            z  S r   r  r   s      r0   r  zsech._eval_rewrite_as_cos  r!  r2   c                 0    t          t          |z            S r   r  r   s      r0   r   zsech._eval_rewrite_as_sec  r  r2   c                 V    t           t          |t           t          z  dz  z             z  S r   r#  r   s      r0   r$  zsech._eval_rewrite_as_sinh  s!    4a"fai((((r2   c                 &    dt          |          z  S r   ri   r   s      r0   r   zsech._eval_rewrite_as_cosh  r   r2   c                 .    | j         d         j        rdS d S r   r   r   s    r0   r   zsech._eval_is_positive  r   r2   Nr	  )rR   rS   rT   rU   ri   r  r  rn   r  r   r   r  r   r$  r   r   r,   r2   r0   r)  r)  u  s         & NH5 5 5 5 4 4 W \4       ) ) )      r2   r)  c                       e Zd ZdZdS )InverseHyperbolicFunctionz,Base class for inverse hyperbolic functions.N)rR   rS   rT   rU   r,   r2   r0   r  r    s        66Dr2   r  c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zd
 ZeZd Zd Zd Zd ZddZd ZdS )rr   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
    r9   c                 t    |dk    r#dt          | j        d         dz  dz             z  S t          | |          r<  )r   rj   r   rk   s     r0   rn   zasinh.fdiff  s=    q==T$)A,/A-....$T8444r2   c                    |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          t          d          dz             S |t          j
        u rt          t          d          dz
            S |j        r | |            S nv|t          j        u rt          j        S |j        rt          j        S t          |          }|t          t          |          z  S |                                r | |            S t#          |t$                    r|j        d         j        ry|j        d         }|j        r|S t-          |          \  }}|Q|Qt/          |t0          dz  z   t0          z            }|t          t0          z  |z  z
  }|j        }|du r|S |du r| S d S d S d S d S d S )Nr:   r9   r   TF)rw   r   rx   rN   rO   ry   r]   rY   r   r   r@  rz   r{   r(   r   r    r|   
isinstancerg   rj   rx  r   r   r   r   is_even)	r   r^   r   r2  rrY  fr   evens	            r0   r   z
asinh.eval  s   = 	&ae||u
""z!***)) "v477Q;'''%%477Q;''' "SD		z!" a'''(({ v4S99G"4==((//11 &CII:%c4   	SXa[%: 	Ay "1%%DAq}1r!t8R-(("QJy4<<HU]]2I	 	 	 	
 } #]r2   c                 l   | dk     s	| dz  dk    rt           j        S t          |          }t          |          dk    r)| dk    r#|d         }| | dz
  dz  z  | | dz
  z  z  |dz  z  S | dz
  dz  }t	          t           j        |          }t          |          }t           j        |z  |z  |z  || z  z  | z  S Nr   r:   rI   r9   )r   r]   r   r   r   rD   r   r@  r   r   r   rb   rT  RrE  s          r0   r   zasinh.taylor_term   s     q55AEQJJ6M

A>""a''AEE"2&rQUQJ1q5	2QT99UqL#AFA..aLL}a'!+a/!Q$6::r2   Nr   c                 P   | j         d         }|                    |d                                          }|j        r|                    |          S |t
           t
          t          j        fv r0|                     t                    
                    |||          S d|dz  z   j        r|                    ||r|nd          }t          |          j        r;t          |          j        r&|                     |           t
          t"          z  z
  S nt          |          j        r;t          |          j        r&|                     |           t
          t"          z  z   S n0|                     t                    
                    |||          S |                     |          S Nr   r   r9   r:   )rj   r   cancelry   r   r   r   r{   r-   r   r   rz   r   r   r   r   r~   r   rl   r   r   r   r^   x0ndirs          r0   r   zasinh._eval_as_leading_term  sv   ilXXa^^""$$: 	*&&q)))1"a*+++<<$$::14d:SSSAI" 		X771d1dd22D$xx# Xb66% 1 IIbMM>AbD001D% Xb66% 1 IIbMM>AbD001 ||C((>>qtRV>WWWyy}}r2   c                    | j         d         }|                    |d          }|t          t           fv r1|                     t                                        ||||          S t          j        | |||          }|t          j        u r|S d|dz  z   j	        r|
                    ||r|nd          }t          |          j        r(t          |          j	        r| t          t          z  z
  S nmt          |          j	        r(t          |          j        r| t          t          z  z   S n1|                     t                                        ||||          S |S Nr   r   r   r   r9   r:   )rj   r   r   r-   r   _eval_nseriesr   r   r{   rz   r   r   r   r   r   	rl   r   r   r   r   r^   r   resr  s	            r0   r  zasinh._eval_nseries%  sV   ilxx1~~ Ar7??<<$$221ad2NNN$T1===1$$$J aK$ 		S771d1dd22D$xx# Sd88' '4!B$;&'D% Sd88' '4!B$;&' ||C((66q!$T6RRR
r2   c                 L    t          |t          |dz  dz             z             S r   r   r   rl   r   r   s      r0   _eval_rewrite_as_logzasinh._eval_rewrite_as_log>  s#    1tAqD1H~~%&&&r2   c                 L    t          |t          d|dz  z             z            S Nr9   r:   )r   r   r  s      r0   _eval_rewrite_as_atanhzasinh._eval_rewrite_as_atanhC  s#    QtA1H~~%&&&r2   c                     t           |z  }t           t          d|z
            t          |dz
            z  t          |          z  t          dz  z
  z  S r  )r   r   r   r   )rl   r   r   ixs       r0   _eval_rewrite_as_acoshzasinh._eval_rewrite_as_acoshF  sC    qS$q2v,,tBF||+eBii7"Q$>??r2   c                 B    t            t          t           |z            z  S r   )r   r    r  s      r0   _eval_rewrite_as_asinzasinh._eval_rewrite_as_asinJ  s    rDQKKr2   c                 f    t           t          t           |z            z  t           t          z  dz  z
  S r   )r   r   r   r  s      r0   _eval_rewrite_as_acoszasinh._eval_rewrite_as_acosM  s#    4A;;2a''r2   c                     t           S rp   r  rk   s     r0   rs   zasinh.inverseP  	     r2   c                 &    | j         d         j        S r   rz  r   s    r0   r  zasinh._eval_is_zeroV  s    y|##r2   r	  r   r   )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  r  r   r  r  r  r  rs   r  r,   r2   r0   rr   rr     s        *5 5 5 5 + + [+Z ; ; W \;   *   2' ' ' "6' ' '@ @ @     ( ( (   $ $ $ $ $r2   rr   c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zd
 ZeZd Zd Zd Zd ZddZ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
    r9   c                     |dk    r5| j         d         }dt          |dz
            t          |dz             z  z  S t          | |          r  rj   r   r   )rl   rm   r^   s      r0   rn   zacosh.fdiffp  sJ    q==)A,Cd37mmDqMM122$T8444r2   c                    |j         r|t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j        rt          t          z  dz  S |t          j        u rt          j	        S |t          j
        u rt          t          z  S |j        r1t                      }||v r|j        r||         t          z  S ||         S |t          j        u rt          j        S |t          t          j        z  k    rt          j        t          t          z  dz  z   S |t           t          j        z  k    rt          j        t          t          z  dz  z
  S |j        rt          t          z  t          j        z  S t!          |t"                    r|j        d         j        r|j        d         }|j        rt)          |          S t+          |          \  }}|{|{t-          |t          z            }|t          t          z  |z  z
  }|j        }|du r|j        r|S |j        r| S d S |du r-|t          t          z  z  }|j        r| S |j        r|S d S d S d S d S d S d S )Nr:   r   TF)rw   r   rx   rN   rO   ry   r   r   rY   r]   r@  rx  rE   r   r{   rD   r  ri   rj   r   r   r   r   r  is_nonnegativerz   is_nonpositiver   )	r   r^   	cst_tabler2  r  rY  r  r   r  s	            r0   r   z
acosh.evalw  sg   = 	ae||u
""z!***z! !taxv%%!t= 	&$Ii' ,$S>!++ ~%!###$$!AJ,:"Q&&1"QZ-:"Q&&; 	a4;c4   	!SXa[%: 	!Ay 1vv"1%%DAq}!B$KK"QJy4<<' "  " !r	" "U]]2IA' ! !r	 ! '	! 	! 	! 	!
 } #]! !r2   c                    | dk    rt           t          z  dz  S | dk     s	| dz  dk    rt          j        S t	          |          }t          |          dk    r(| dk    r"|d         }|| dz
  dz  z  | | dz
  z  z  |dz  z  S | dz
  dz  }t          t          j        |          }t          |          }| |z  t           z  || z  z  | z  S r  )	r   r   r   r]   r   r   r   rD   r   r  s          r0   r   zacosh.taylor_term  s     66R46MUUa!eqjj6M

A>""a''AEE"2&AEA:~q!a%y1AqD88UqL#AFA..aLLrAvzAqD(1,,r2   Nr   c                    | j         d         }|                    |d                                          }|t          j         t          j        t          j        t          j        fv r0|                     t                    	                    |||          S |dz
  j
        r|                    ||r|nd          }t          |          j
        rH|dz   j
        r(|                     |          dt          z  t          z  z
  S |                     |           S t          |          j        s0|                     t                    	                    |||          S |                     |          S r  )rj   r   r  r   rY   r]   r{   r-   r   r   rz   r   r   r~   r   r   r   r  s          r0   r   zacosh._eval_as_leading_term  s6   ilXXa^^""$$15&!&!%):;;;<<$$::14d:SSSF 	X771d1dd22D$xx# XF' 299R==1Q3r611		"~%XX) X||C((>>qtRV>WWWyy}}r2   c                 p   | j         d         }|                    |d          }|t          j        t          j        fv r1|                     t                                        ||||          S t          j        | |||          }|t          j	        u r|S |dz
  j
        r|                    ||r|nd          }t          |          j
        r"|dz   j
        r|dt          z  t          z  z
  S | S t          |          j        s1|                     t                                        ||||          S |S r  rj   r   r   rY   r@  r-   r   r  r   r{   rz   r   r   r   r   r   r  s	            r0   r  zacosh._eval_nseries  s1   ilxx1~~ AE1=)))<<$$221ad2NNN$T1===1$$$J 1H! 	S771d1dd22D$xx# S1H) (1R<'tXX) S||C((66q!$T6RRR
r2   c                 l    t          |t          |dz             t          |dz
            z  z             S r   r  r  s      r0   r  zacosh._eval_rewrite_as_log  s.    1tAE{{T!a%[[00111r2   c                 l    t          |dz
            t          d|z
            z  t          |          z  S r   )r   r   r  s      r0   r  zacosh._eval_rewrite_as_acos  s,    AE{{4A;;&a00r2   c                     t          |dz
            t          d|z
            z  t          dz  t          |          z
  z  S r  )r   r   r    r  s      r0   r  zacosh._eval_rewrite_as_asin  s4    AE{{4A;;&"Q$a.99r2   c                     t          |dz
            t          d|z
            z  t          dz  t          t          t          |z            z  z   z  S r  )r   r   r   rr   r  s      r0   _eval_rewrite_as_asinhzacosh._eval_rewrite_as_asinh  s=    AE{{4A;;&"Q$51::*=>>r2   c                 $   t          |dz
            }t          d|z
            }t          |dz  dz
            }t          dz  |z  |z  d|t          d|dz  z            z  z
  z  |t          |dz             z  |z  t          ||z            z  z   S r  )r   r   r   )rl   r   r   sxm1s1mxsx2m1s         r0   r  zacosh._eval_rewrite_as_atanh  s    AE{{AE{{QTAX1T	$AQq!tV$4 45T!a%[[ &uQw78 	9r2   c                     t           S rp   r  rk   s     r0   rs   zacosh.inverse  r  r2   c                 4    | j         d         dz
  j        rdS d S )Nr   r9   Trz  r   s    r0   r  zacosh._eval_is_zero  s'    IaL1% 	4	 	r2   r	  r   r  )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  r  r   r  r  r  r  rs   r  r,   r2   r0   r   r   Z  s        *5 5 5 5 4! 4! [4!l - - W \-    "   .2 2 2 "61 1 1: : :? ? ?9 9 9       r2   r   c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zd
 ZeZd Zd Zd Z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
    r9   c                 Z    |dk    rdd| j         d         dz  z
  z  S t          | |          r<  rj   r   rk   s     r0   rn   zatanh.fdiff  5    q==a$)A,/)**$T8444r2   c                 (   |j         r|t          j        u rt          j        S |j        rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt           t          |          z  S |t          j        u rt          t          |           z  S |j        r | |            S n|t          j        u r+ddlm} t           |t           dz  t          dz            z  S t!          |          }|t          t          |          z  S |                                r | |            S |j        rt          j        S t%          |t&                    r|j        d         j        r|j        d         }|j        r|S t/          |          \  }}|^|^t1          d|z  t          z            }|j        }|t          |z  t          z  dz  z
  }	|du r|	S |du r|	t          t          z  dz  z
  S d S d S d S d S d S )Nr   AccumBoundsr:   TF)rw   r   rx   ry   r]   rY   rN   r@  rO   r   r!   rz   r{   !sympy.calculus.accumulationboundsr  r   r(   r|   r  r   rj   rx  r   r   r   r  )
r   r^   r  r   r2  r  rY  r  r  r   s
             r0   r   z
atanh.eval"  s*   = 	&ae||u "vz!%%))
""rDII~%***4::~% "SD		z!" a'''IIIIIIbSUBqD11114S99G"4==((//11 &CII:%; 	6Mc4   	&SXa[%: 	&Ay "1%%DAq}!A#b&MMy!BqL4<<HU]]qtAv:%	& 	& 	& 	&
 } #]r2   c                 f    | dk     s	| dz  dk    rt           j        S t          |          }|| z  | z  S Nr   r:   )r   r]   r   r  s      r0   r   zatanh.taylor_termQ  s8     q55AEQJJ6M

Aa4!8Or2   Nr   c                 ,   | j         d         }|                    |d                                          }|j        r|                    |          S |t
          j         t
          j        t
          j        fv r0|                     t                    
                    |||          S d|dz  z
  j        r|                    ||r|nd          }t          |          j        r-|j        r%|                     |          t          t           z  z
  S nqt          |          j        r-|j        r%|                     |          t          t           z  z   S n0|                     t                    
                    |||          S |                     |          S r  )rj   r   r  ry   r   r   rY   r{   r-   r   r   rz   r   r   r~   r   r   r   r  s          r0   r   zatanh._eval_as_leading_termZ  sh   ilXXa^^""$$: 	*&&q)))15&!%!2333<<$$::14d:SSSAI" 		X771d1dd22D$xx# X> 099R==1R4//0D% X> 099R==1R4//0 ||C((>>qtRV>WWWyy}}r2   c                    | j         d         }|                    |d          }|t          j        t          j        fv r1|                     t                                        ||||          S t          j        | |||          }|t          j	        u r|S d|dz  z
  j
        r|                    ||r|nd          }t          |          j
        r|j
        r|t          t          z  z
  S n_t          |          j        r|j        r|t          t          z  z   S n1|                     t                                        ||||          S |S r  r  r  s	            r0   r  zatanh._eval_nserieso  sK   ilxx1~~ AE1=)))<<$$221ad2NNN$T1===1$$$J aK$ 		S771d1dd22D$xx# S# &2:%&D% S# &2:%& ||C((66q!$T6RRR
r2   c                 R    t          d|z             t          d|z
            z
  dz  S r  r   r  s      r0   r  zatanh._eval_rewrite_as_log  s&    AE

SQZZ'1,,r2   c                    t          d|dz  dz
  z            }t          |z  dt          |dz             z  z  t          |           t          d|dz  z
            z  t          |          z  |z  t          |          z  z
  S r  )r   r   rr   )rl   r   r   r  s       r0   r  zatanh._eval_rewrite_as_asinh  sz    AqD1H1aadUm$aRa!Q$h'Q/1%((:; 	<r2   c                 .    | j         d         j        rdS d S r   rz  r   s    r0   r  zatanh._eval_is_zero  s"    9Q< 	4	 	r2   c                 &    | j         d         j        S r   )rj   r-  r   s    r0   _eval_is_imaginaryzatanh._eval_is_imaginary  s    y|((r2   c                     t           S rp   r  rk   s     r0   rs   zatanh.inverse  r  r2   r	  r   r  )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  r  r   r  r  r  rs   r,   r2   r0   r   r     s         &5 5 5 5 ,& ,& [,&\   W \   *   2- - - "6< < <
  ) ) )     r2   r   c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zd
 ZeZd Zd ZddZdS )r   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
    r9   c                 Z    |dk    rdd| j         d         dz  z
  z  S t          | |          r<  r  rk   s     r0   rn   zacoth.fdiff  r  r2   c                    |j         r|t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j        rt          t          z  dz  S |t          j	        u rt          j        S |t          j
        u rt          j        S |j        r | |            S nd|t          j        u rt          j        S t          |          }|t           t          |          z  S |                                r | |            S |j        rt          t          z  t          j        z  S d S r   )rw   r   rx   rN   r]   rO   ry   r   r   rY   r@  rz   r{   r(   r   r|   rD   )r   r^   r   s      r0   r   z
acoth.eval  s/   = 	&ae||u
""v***v "!taxz!%%)) "SD		z!" a'''v4S99G"rDMM))//11 &CII:%; 	a4;	 	r2   c                     | dk    rt            t          z  dz  S | dk     s	| dz  dk    rt          j        S t	          |          }|| z  | z  S r  )r   r   r   r]   r   r  s      r0   r   zacoth.taylor_term  sP     662b57NUUa!eqjj6M

Aa4!8Or2   Nr   c                 N   | j         d         }|                    |d                                          }|t          j        u rd|z                      |          S |t          j         t          j        t          j        fv r0|                     t                    
                    |||          S |j        rd|dz  z
  j        r|                    ||r|nd          }t          |          j        r-|j        r%|                     |          t"          t$          z  z   S nqt          |          j        r-|j        r%|                     |          t"          t$          z  z
  S n0|                     t                    
                    |||          S |                     |          S )Nr   r9   r   r:   )rj   r   r  r   r{   r   rY   r]   r-   r   r   r   r   r   r   rz   r~   r   r   r  s          r0   r   zacoth._eval_as_leading_term  sy   ilXXa^^""$$"""cE**1---15&!%(((<<$$::14d:SSS: 		X1r1u91 		X771d1dd22D$xx# X> 099R==1R4//0D% X> 099R==1R4//0 ||C((>>qtRV>WWWyy}}r2   c                    | j         d         }|                    |d          }|t          j        t          j        fv r1|                     t                                        ||||          S t          j        | |||          }|t          j	        u r|S |j
        rd|dz  z
  j        r|                    ||r|nd          }t          |          j        r|j        r|t          t           z  z   S n_t          |          j        r|j        r|t          t           z  z
  S n1|                     t                                        ||||          S |S r  )rj   r   r   rY   r@  r-   r   r  r   r{   r   r   r   r   rz   r   r   r  s	            r0   r  zacoth._eval_nseries  sU   ilxx1~~ AE1=)))<<$$221ad2NNN$T1===1$$$J < 		SQq[5 		S771d1dd22D$xx# S# &2:%&D% S# &2:%& ||C((66q!$T6RRR
r2   c                 ^    t          dd|z  z             t          dd|z  z
            z
  dz  S r  r  r  s      r0   r  zacoth._eval_rewrite_as_log  s.    A!Gs1qs7||+q00r2   c                 &    t          d|z            S r   r>  r  s      r0   r  zacoth._eval_rewrite_as_atanh  s    QqSzzr2   c           	      T   t           t          z  dz  t          |dz
  |z            t          ||dz
  z            z  t          dd|z  z             t          ||dz   z            z  z
  z  |t          d|dz  z            z  t          t          d|dz  dz
  z                      z  z   S r   )r   r   r   rr   r  s      r0   r  zacoth._eval_rewrite_as_asinh  s    1Qa!eQYQAY7$q1Q3w--QPQTUPUY:WWX$qAv,,uT!QTAX,%7%78889 	:r2   c                     t           S rp   ri  rk   s     r0   rs   zacoth.inverse  r  r2   r	  r   r  )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  r  r   r  r  rs   r,   r2   r0   r   r     s         &5 5 5 5   [>   W \   *   21 1 1 "6  : : :     r2   r   c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zdd
Zd ZeZd Zd Zd Zd ZdS )asecha  
    ``asech(x)`` is the inverse hyperbolic secant of ``x``.

    The inverse hyperbolic secant function.

    Examples
    ========

    >>> from sympy import asech, sqrt, S
    >>> from sympy.abc import x
    >>> asech(x).diff(x)
    -1/(x*sqrt(1 - x**2))
    >>> asech(1).diff(x)
    0
    >>> asech(1)
    0
    >>> asech(S(2))
    I*pi/3
    >>> asech(-sqrt(2))
    3*I*pi/4
    >>> asech((sqrt(6) - sqrt(2)))
    I*pi/12

    See Also
    ========

    asinh, atanh, cosh, acoth

    References
    ==========

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

    r9   c                 ~    |dk    r(| j         d         }d|t          d|dz  z
            z  z  S t          | |          Nr9   r   r<   r:   r  rl   rm   r2  s      r0   rn   zasech.fdiffL  sD    q==	!Aqa!Q$h'(($T8444r2   c                 d   |j         r|t          j        u rt          j        S |t          j        u rt          t
          z  dz  S |t          j        u rt          t
          z  dz  S |j        rt          j        S |t          j        u rt          j	        S |t          j
        u rt          t
          z  S |j        r1t                      }||v r|j        r||         t
          z  S ||         S |t          j        u r+ddlm} t
           |t           dz  t          dz            z  S |j        rt          j        S d S )Nr:   r   r  )rw   r   rx   rN   r   r   rO   ry   rY   r]   r@  rx  rP   r   r{   r  r  )r   r^   r  r  s       r0   r   z
asech.evalS  s,   = 	ae||u
""!tax***!tax z!v%%!t= 	&$Ii' ,$S>!++ ~%!###EEEEEE[["Q1----; 	:	 	r2   c                    | dk    rt          d|z            S | dk     s	| dz  dk    rt          j        S t          |          }t	          |          dk    r.| dk    r(|d         }|| dz
  | dz
  z  z  |dz  z  d| dz  dz  z  z  S | dz  }t          t          j        |          | z  }t          |          | z  dz  | z  dz  }d|z  |z  || z  z  dz  S )Nr   r:   r9   rI   r=   r<   )r   r   r]   r   r   r   rD   r   r  s          r0   r   zasech.taylor_termr  s     66q1u::UUa!eqjj6M

A>""Q&&1q55"2&QUQqSM*QT111qy=AAF#AFA..2aLL1$)A-2AvzAqD(1,,r2   Nr   c                    | j         d         }|                    |d                                          }|t          j         t          j        t          j        t          j        fv r0|                     t                    	                    |||          S |j
        s
d|z
  j
        r|                    ||r|nd          }t          |          j        rO|j        s
|dz   j
        r|                     |           S |                     |          dt          z  t           z  z
  S t          |          j
        s0|                     t                    	                    |||          S |                     |          S r  )rj   r   r  r   rY   r]   r{   r-   r   r   rz   r   r   r   r~   r   r   r  s          r0   r   zasech._eval_as_leading_term  sI   ilXXa^^""$$15&!&!%):;;;<<$$::14d:SSS> 	Xa"f1 	X771d1dd22D$xx# X> *b1f%9 * IIbMM>)yy}}qs2v--XX) X||C((>>qtRV>WWWyy}}r2   c                    ddl m} | j        d         }|                    |d          }|t          j        u rt          dd          }t          t          j        |dz  z
                                t                    
                    |dd|z            }	t          j        | j        d         z
  }
|
                    |          }|
|z
  |z  }|                    |d          s)|dk    r |d          n |t          |                    S t          t          j        |z                                 |||          }|                                t          |          z                                  }|	                                                    ||                                                                           |||z  |          z   S |t          j        u rt          dd          }t          t          j        |dz  z                                 t                    
                    |dd|z            }	t          j        | j        d         z   }
|
                    |          }|
|z
  |z  }|                    |d          s9|dk    r |d          n't&          t(          z   |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |          z                                  }|	                                                    ||                                                                           |||z  |          z   S t+          j        | |||          }|t          j        u r|S |j        s
d|z
  j        r|                    ||r|nd          }t3          |          j        r)|j        s
|dz   j        r| S |dt&          z  t(          z  z
  S t3          |          j        s1|                     t                                        ||||	          S |S 
Nr   )Or  T)positiver:   r9   r  r   )ro  r0  rj   r   r   rY   r   r'  r-   r   nseriesr   is_meromorphicr   r  removeOr   powsimpr@  r   r   r   r{   rz   r   r   r   rl   r   r   r   r   r0  r^   r   r  serarg1r  gres1r  r  s                   r0   r  zasech._eval_nseries  s   ((((((ilxx1~~ 15==cD)))A1%%--c22::1a1EEC549Q<'D$$Q''AAA##Aq)) 6 Avvqqttt11T!WW::5	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM1=  cD)))A1,--55c::BB1a1MMC549Q<'D$$Q''AAA##Aq)) = Avvqqttt1R4!!DGG**+<<	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$$J  	SD5 	S771d1dd22D$xx# S#  q'=  4KQqSV|#XX) S||C((66q!$T6RRR
r2   c                     t           S rp   r(  rk   s     r0   rs   zasech.inverse  r  r2   c                 ~    t          d|z  t          d|z  dz
            t          d|z  dz             z  z             S r   r  r   s      r0   r  zasech._eval_rewrite_as_log  s:    1S54#	??T!C%!)__<<===r2   c                 &    t          d|z            S r   )r   r   s      r0   r  zasech._eval_rewrite_as_acosh      QsU||r2   c                     t          d|z  dz
            t          dd|z  z
            z  t          t          t          |z            z  t          t          j        z  z   z  S r   )r   r   rr   r   r   rD   r   s      r0   r  zasech._eval_rewrite_as_asinh  sN    AcEAItA#I.%#,,24QV)1< = 	=r2   c           	         t           t          z  dt          |          t          d|z            z  z
  t           dz  t          |           z  t          |          z  z
  t           dz  t          |dz            z  t          |dz             z  z
  z  t          d|dz   z            t          |dz             z  t          t          d|dz  z
                      z  z   S r  )r   r   r   r   r  s      r0   r  zasech._eval_rewrite_as_atanh  s    "a$q''$qs))++ac$r((l477.BBQqSaQRd^TXZ[]^Z^Y^T_T_E__`q!a%y//$q1u++-eDQTNN.C.CCD 	Er2   c                     t          d|z  dz
            t          dd|z  z
            z  t          dz  t          t          t          |z            z  z
  z  S r  )r   r   r   acschr  s      r0   _eval_rewrite_as_acschzasech._eval_rewrite_as_acsch  sE    AaC!G}}T!ac']]*BqD1U1Q3ZZ<,?@@r2   r	  r   r  )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  rs   r  r   r  r  r  rC  r,   r2   r0   r'  r'  &  s       # #J5 5 5 5   [< - - W \-    "+ + + +Z   > > > "6  = = =E E EA A A A Ar2   r'  c                       e Zd ZdZddZed             Zeed                         Z	ddZ
dd	Zdd
Zd ZeZd Zd Zd Zd ZdS )rB  a  
    ``acsch(x)`` is the inverse hyperbolic cosecant of ``x``.

    The inverse hyperbolic cosecant function.

    Examples
    ========

    >>> from sympy import acsch, sqrt, I
    >>> from sympy.abc import x
    >>> acsch(x).diff(x)
    -1/(x**2*sqrt(1 + x**(-2)))
    >>> acsch(1).diff(x)
    0
    >>> acsch(1)
    log(1 + sqrt(2))
    >>> acsch(I)
    -I*pi/2
    >>> acsch(-2*I)
    I*pi/6
    >>> acsch(I*(sqrt(6) - sqrt(2)))
    -5*I*pi/12

    See Also
    ========

    asinh

    References
    ==========

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

    r9   c                     |dk    r.| j         d         }d|dz  t          dd|dz  z  z             z  z  S t          | |          r)  r  r*  s      r0   rn   zacsch.fdiff  sN    q==	!Aq!tDQq!tV,,,--$T8444r2   c                    |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          z             S |t          j        u r t          dt          d          z              S |j        r"t                      }||v r||         t          z  S |t          j        u rt          j        S |j        rt          j        S |j        rt          j        S |                                r | |            S d S r  )rw   r   rx   rN   r]   rO   ry   r{   rY   r   r   r@  rx  rK   r   is_infiniter|   )r   r^   r  s      r0   r   z
acsch.eval	  s;   = 	*ae||u
""v***v *((1tAww;'''%%Qa[))))= 	($Ii ~a''!###6M? 	6M; 	%$$'')) 	CII:	 	r2   c                    | dk    rt          d|z            S | dk     s	| dz  dk    rt          j        S t          |          }t	          |          dk    r/| dk    r)|d         }| | dz
  | dz
  z  z  |dz  z  d| dz  dz  z  z  S | dz  }t          t          j        |          | z  }t          |          | z  dz  | z  dz  }t          j        |dz   z  |z  |z  || z  z  dz  S )Nr   r:   r9   rI   r=   )	r   r   r]   r   r   r   rD   r   r@  r  s          r0   r   zacsch.taylor_term+  s    66q1u::UUa!eqjj6M

A>""Q&&1q55"2&ra!eac]+ad2AA	MBBF#AFA..!3aLL1$)A-2}q!t,q014q!t;a??r2   Nr   c                 r   | j         d         }|                    |d                                          }|t           t          t          j        fv r0|                     t                                        |||          S |t          j	        u rd|z  
                    |          S |j        rd|dz  z   j        r|                    ||r|nd          }t          |          j        r;t          |          j        r&|                     |           t          t"          z  z
  S nt          |          j        r;t          |          j        r&|                     |           t          t"          z  z   S n0|                     t                                        |||          S |                     |          S r  )rj   r   r  r   r   r]   r-   r   r   r{   r   r-  r   r   r   r   r~   r   rz   r  s          r0   r   zacsch._eval_as_leading_term=  s   ilXXa^^""$$1"a  <<$$::14d:SSS"""cE**1---? 		XBE	6 		X771d1dd22D$xx# Xb66% 1 IIbMM>AbD001D% Xb66% 1 IIbMM>AbD001 ||C((>>qtRV>WWWyy}}r2   c                 H	   ddl m} | j        d         }|                    |d          }|t          u rt          dd          }t          t          |dz  z                                 t                    	                    |dd|z            }	t           | j        d         z   }
|

                    |          }|
|z
  |z  }|                    |d          s=|dk    r |d          n+t           t          z  dz   |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |          z                                  }|	                                                    ||                                                                           |||z  |          z   }|S |t          j        t          z  k    rt          dd          }t          t           |dz  z                                 t                    	                    |dd|z            }	t          | j        d         z   }
|

                    |          }|
|z
  |z  }|                    |d          s<|dk    r |d          n*t          t          z  dz   |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |          z                                  }|	                                                    ||                                                                           |||z  |          z   S t+          j        | |||          }|t          j        u r|S |j        rd|dz  z   j        r| j        d                             ||r|nd          }t5          |          j        r(t7          |          j        r| t          t          z  z
  S nmt5          |          j        r(t7          |          j        r| t          t          z  z   S n1|                     t                                        ||||	          S |S r/  )ro  r0  rj   r   r   r   rB  r-   r   r2  r   r3  r   r   r   rY   r  r4  r   r5  r@  r   r{   r-  r   r   r   r   rz   r6  s                   r0   r  zacsch._eval_nseriesR  s   ((((((ilxx1~~ 199cD)))AAqD//))#..66q!QqSAAC2	!$D$$Q''AAA##Aq)) @ AvvqqtttA2b57QQtAwwZZ+??	??00ad0CCD<<>>$q'')1133C++--$$Q,,3355==??!!AqD!**LCJ1=?""cD)))AQT	""**3//771acBBCty|#D$$Q''AAA##Aq)) ? Avvqqttt1R46AAd1ggJJ+>>	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$$J  		S!dAg+!: 		S9Q<##At':tt;;D$xx# Sd88' '4!B$;&'D% Sd88' '4!B$;&' ||C((66q!$T6RRR
r2   c                     t           S rp   r   rk   s     r0   rs   zacsch.inverse  r  r2   c                 X    t          d|z  t          d|dz  z  dz             z             S r  r  r   s      r0   r  zacsch._eval_rewrite_as_log  s-    1S54#q&1---...r2   c                 &    t          d|z            S r   rq   r   s      r0   r  zacsch._eval_rewrite_as_asinh  r>  r2   c                     t           t          dt           |z  z
            t          t           |z  dz
            z  t          t           |z            z  t          t          j        z  z
  z  S r   )r   r   r   r   r   rD   r   s      r0   r  zacsch._eval_rewrite_as_acosh  sR    $q1S5y//$quqy//1 %ae-/1!&y9 : 	:r2   c                     |dz  }|dz   }t          |           |z  t          t          j        z  t          |dz             |z  t	          t          |                    z  z
  z  S r   )r   r   r   rD   r   )rl   r^   r   arg2arg2p1s        r0   r  zacsch._eval_rewrite_as_atanh  sf    AvTE{{316	 $faiZ 0 0 7d6ll8K8K K!L M 	Mr2   c                 &    | j         d         j        S r   )rj   rG  r   s    r0   r  zacsch._eval_is_zero  s    y|''r2   r	  r   r  )rR   rS   rT   rU   rn   r  r   r  r   r   r   r  rs   r  r   r  r  r  r  r,   r2   r0   rB  rB    s
       # #J5 5 5 5   [B @ @ W \@    *. . . .`   / / / "6  : : :M M M( ( ( ( (r2   rB  N)I
sympy.corer   r   r   sympy.core.addr   sympy.core.functionr   r   sympy.core.logicr	   r
   r   sympy.core.numbersr   r   r   sympy.core.symbolr   (sympy.functions.combinatorial.factorialsr   r   r   %sympy.functions.combinatorial.numbersr   r   r   $sympy.functions.elementary.complexesr   r   r   &sympy.functions.elementary.exponentialr   r   r   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r  r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   sympy.polys.specialpolysr)   r7   rE   rK   rP   r5   re   rg   ri   r   r   r  r   r)  r  rr   r   r   r   r'  rB  r,   r2   r0   <module>r`     s_   * * * * * * * * * *       < < < < < < < < ; ; ; ; ; ; ; ; ; ; . . . . . . . . . . # # # # # #G G G G G G G G G G F F F F F F F F F F < < < < < < < < < < L L L L L L L L L L 5 5 5 5 5 5 9 9 9 9 9 9$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 4 3 3 3 3 32 2 2
 	  	2 	
 
 	
$ 	
 
 	
F
 
 
 
 
 
 
 
  DQ' Q' Q' Q' Q' Q' Q' Q'hs2 s2 s2 s2 s2 s2 s2 s2lR R R R R R R Rji i i i i i i iXG? G? G? G? G?#5 G? G? G?TD, D, D, D, D,' D, D, D,N4 4 4 4 4' 4 4 4v	 	 	 	 	 	 	 	a$ a$ a$ a$ a$% a$ a$ a$Hk k k k k% k k k\U U U U U% U U UpC C C C C% C C CLsA sA sA sA sA% sA sA sAl( ( ( ( (% ( ( ( ( (r2   