
    Ed7                        d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZ d dlmZmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
l m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ d Z0 G d de
          Z1d Z2 G d de1          Z3 G d de1          Z4 G d de1          Z5 G d de1          Z6 G d de1          Z7 G d de7          Z8 G d de7          Z9 G d d e
          Z: G d! d"e:          Z; G d# d$e:          Z< G d% d&e:          Z= G d' d(e:          Z> G d) d*e:          Z? G d+ d,e:          Z@d-S ).    )SsympifycacheitpiIRational)Add)FunctionArgumentIndexError)fuzzy_or	fuzzy_and	FuzzyBool)binomial	factorialRisingFactorial)	bernoullieulernC)Abs)explogmatch_real_imag)floor)sqrt)acosacotasinatancoscotcscsecsintan_imaginary_unit_as_coefficient)symmetric_polyc                 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    r-   _rewrite_hyperbolics_as_expr4      sA    == 1 1.//1 1 1 2 2 2r/   c                       e Zd ZdZdZdS )r2   ze
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    TN)__name__
__module____qualname____doc__
unbranchedr)   r/   r-   r2   r2      s          JJJr/   r2   c                 <   t           j        t           j        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   PiImaginaryUnitr	   	make_argsOneis_Mulas_two_termsis_RationalZeroHalf)argipiaKpm1m2s          r-   _peeloff_ipirL   )   s    " $q
C]3 	 	8 	AEX 	>>##DAqCx AM AF{
af*B	
RBC<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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
       c                 b    |dk    rt          | j        d                   S t          | |          )z@
        Returns the first derivative of this function.
        rO   r   )coshargsr   selfargindexs     r-   fdiffz
sinh.fdiff_   s4     q= 	5	!%%%$T8444r/   c                     t           S z7
        Returns the inverse of this function.
        asinhrS   s     r-   inversezsinh.inverseh   	     r/   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          |          }|t          j
        t          |          z  S |                                r | |            S |j        rot          |          \  }}|r[|t          j        z  t          j
        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   rO      )	is_Numberr   NaNInfinityNegativeInfinityis_zerorC   is_negativeComplexInfinityr%   r=   r#   could_extract_minus_signis_AddrL   r<   rN   rQ   funcrZ   rR   acoshr   atanhacoth)clsrE   i_coeffxms        r-   evalz	sinh.evaln   s/   = -	5ae| 	"u
" "z!** ")) "v "SD		z!" " a'' u4S99G &W55//11 &CII:%z =#C((1 =!$q.A77477?T!WWT!WW_<<{ vx5  #x{"x5  1HQKAE{{T!a%[[00x5  (HQKa!Q$h''x5  5HQK$q1u++QU3445 5r/   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_   rO   r   rC   r   lenr   nro   previous_termsrI   s       r-   taylor_termzsinh.taylor_term   s     q5 		-AEQJ 		-6M

A>""Q& -"2&1a4x1a!e9--1v	!,,r/   c                 f    |                      | j        d                                                   S Nr   ri   rR   	conjugaterT   s    r-   _eval_conjugatezsinh._eval_conjugate   &    yy1//11222r/   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
rR   is_extended_realexpandr   rC   as_real_imagrN   r   rQ   r#   rT   deephintsreims        r-   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3r/   c                 J     | j         dd|i|\  }}||t          j        z  z   S Nr   r)   r   r   r=   rT   r   r   re_partim_parts        r-   _eval_expand_complexzsinh._eval_expand_complex   6    ,4,@@$@%@@000r/   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rationalrO   )trig)
rR   r   rh   rA   as_coeff_Mulr   r?   
is_IntegerrN   rQ   rT   r   r   rE   ro   ycoefftermss           r-   _eval_expand_trigzsinh._eval_expand_trig       	%$)A,%d44e44CC)A,C: 	"##%%DAqq++T+::LE5AE! "e&6 "5;M "QYM 	IGGDGGOd1ggd1ggo5==4=HHHCyyr/   Nc                 H    t          |          t          |           z
  dz  S Nr_   r   rT   rE   limitvarkwargss       r-   _eval_rewrite_as_tractablezsinh._eval_rewrite_as_tractable        C3t99$))r/   c                 H    t          |          t          |           z
  dz  S r   r   rT   rE   r   s      r-   _eval_rewrite_as_expzsinh._eval_rewrite_as_exp   r   r/   c                 B    t            t          t           |z            z  S Nr   r#   r   s      r-   _eval_rewrite_as_sinzsinh._eval_rewrite_as_sin       rCCLL  r/   c                 B    t            t          t           |z            z  S r   r   r!   r   s      r-   _eval_rewrite_as_csczsinh._eval_rewrite_as_csc   r   r/   c                 v    t           j         t          |t           j        t           j        z  dz  z             z  S r   r   r=   rQ   r<   r   s      r-   _eval_rewrite_as_coshzsinh._eval_rewrite_as_cosh   -    S14+?+A%A B BBBr/   c                 V    t          t          j        |z            }d|z  d|dz  z
  z  S Nr_   rO   tanhr   rD   rT   rE   r   	tanh_halfs       r-   _eval_rewrite_as_tanhzsinh._eval_rewrite_as_tanh   s-    $$	{A	1,--r/   c                 V    t          t          j        |z            }d|z  |dz  dz
  z  S r   cothr   rD   rT   rE   r   	coth_halfs       r-   _eval_rewrite_as_cothzsinh._eval_rewrite_as_coth   s-    $$	{IqL1,--r/   c                 &    dt          |          z  S NrO   cschr   s      r-   _eval_rewrite_as_cschzsinh._eval_rewrite_as_csch       499}r/   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)
rR   as_leading_termsubsr   ra   limitre   rd   	is_finiteri   rT   ro   r   r   rE   arg0s         r-   _eval_as_leading_termzsinh._eval_as_leading_term   s    il**14d*CCxx1~~15= 	I99Qd.>'GssC9HHD< 	J^ 	99T??"Kr/   c                 z    | j         d         }|j        rdS |                                \  }}|t          z  j        S Nr   TrR   is_realr   r   rd   rT   rE   r   r   s       r-   _eval_is_realzsinh._eval_is_real   s?    il; 	4 !!##B2r/   c                 .    | j         d         j        rdS d S r   rR   r   r~   s    r-   _eval_is_extended_realzsinh._eval_is_extended_real	  "    9Q<( 	4	 	r/   c                 N    | j         d         j        r| j         d         j        S d S r{   rR   r   is_positiver~   s    r-   _eval_is_positivezsinh._eval_is_positive  ,    9Q<( 	,9Q<++	, 	,r/   c                 N    | j         d         j        r| j         d         j        S d S r{   rR   r   re   r~   s    r-   _eval_is_negativezsinh._eval_is_negative  r   r/   c                 *    | j         d         }|j        S r{   rR   r   rT   rE   s     r-   _eval_is_finitezsinh._eval_is_finite      il}r/   c                 \    t          | j        d                   \  }}|j        r|j        S d S r{   )rL   rR   rd   
is_integerrT   restipi_mults      r-   _eval_is_zerozsinh._eval_is_zero  s6    %dil33h< 	'&&	' 	'r/   rO   Tr   r{   )r6   r7   r8   r9   rV   r[   classmethodrq   staticmethodr   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r/   r-   rN   rN   K   s        &5 5 5 5    .5 .5 [.5` - - W \-3 3 34 4 4 4 1 1 1 1   "* * * ** * *! ! !! ! !C C C. . .. . .         , , ,, , ,  ' ' ' ' 'r/   rN   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 )rQ   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
    rO   c                 b    |dk    rt          | j        d                   S t          | |          NrO   r   rN   rR   r   rS   s     r-   rV   z
cosh.fdiff3  s2    q= 	5	!%%%$T8444r/   c                 T   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        rot          |          \  }}|r[|t          j        z  t          j        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   rO   r_   )(sympy.functions.elementary.trigonometricr   r`   r   ra   rb   rc   rd   r?   re   rf   r%   rg   rh   rL   r<   r=   rQ   rN   ri   rZ   r   rR   rj   rk   rl   )rm   rE   r   rn   ro   rp   s         r-   rq   z	cosh.eval9  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  0AQ.///x5  #x{"x5  2a#(1+q.01111x5  5HQK$q1u++QU3445 5r/   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_   rO   rs   rt   rv   s       r-   ry   zcosh.taylor_termi  s     q5 		+AEQJ 		+6M

A>""Q& +"2&1a4x1a!e9--1vill**r/   c                 f    |                      | j        d                                                   S r{   r|   r~   s    r-   r   zcosh._eval_conjugatew  r   r/   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   )
rR   r   r   r   rC   r   rQ   r   rN   r#   r   s        r-   r   zcosh.as_real_imagz  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3r/   c                 J     | j         dd|i|\  }}||t          j        z  z   S r   r   r   s        r-   r   zcosh._eval_expand_complex  r   r/   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   )
rR   r   rh   rA   r   r   r?   r   rQ   rN   r   s           r-   r   zcosh._eval_expand_trig  r   r/   Nc                 H    t          |          t          |           z   dz  S r   r   r   s       r-   r   zcosh._eval_rewrite_as_tractable  r   r/   c                 H    t          |          t          |           z   dz  S r   r   r   s      r-   r   zcosh._eval_rewrite_as_exp  r   r/   c                 0    t          t          |z            S r   r   r   r   s      r-   _eval_rewrite_as_coszcosh._eval_rewrite_as_cos      1s7||r/   c                 6    dt          t          |z            z  S r   r"   r   r   s      r-   _eval_rewrite_as_seczcosh._eval_rewrite_as_sec      3q3w<<r/   c                 v    t           j         t          |t           j        t           j        z  dz  z             z  S r   r   r=   rN   r<   r   s      r-   _eval_rewrite_as_sinhzcosh._eval_rewrite_as_sinh  r   r/   c                 V    t          t          j        |z            dz  }d|z   d|z
  z  S r   r   r   s       r-   r   zcosh._eval_rewrite_as_tanh  s-    $$a'	II..r/   c                 V    t          t          j        |z            dz  }|dz   |dz
  z  S r   r   r   s       r-   r   zcosh._eval_rewrite_as_coth  s-    $$a'	A	A..r/   c                 &    dt          |          z  S r   sechr   s      r-   _eval_rewrite_as_sechzcosh._eval_rewrite_as_sech  r   r/   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   )rR   r   r   r   ra   r   re   rd   r?   r   ri   r   s         r-   r   zcosh._eval_as_leading_term  s    il**14d*CCxx1~~15= 	I99Qd.>'GssC9HHD< 	5L^ 	99T??"Kr/   c                     | j         d         }|j        s|j        rdS |                                \  }}|t          z  j        S r   )rR   r   is_imaginaryr   r   rd   r   s       r-   r   zcosh._eval_is_real  sK    il ; 	#* 	4
 !!##B2r/   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_   TF   rR   r   r   rd   r   r   rT   zro   r   ymodyzeroxzeros          r-   r   zcosh._eval_is_positive  s     IaL~~1AbDz 	4	E> 	LdRTk4!B$q&=9::  	   	r/   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  r  r  s          r-   _eval_is_nonnegativezcosh._eval_is_nonnegative  s    IaL~~1AbDz 	4	E> 	LdbdlDAbDFN;<<  	   	r/   c                 *    | j         d         }|j        S r{   r   r   s     r-   r   zcosh._eval_is_finite  r   r/   c                 ~    t          | j        d                   \  }}|r|j        r|t          j        z
  j        S d S d S r{   )rL   rR   rd   r   rD   r   r   s      r-   r   zcosh._eval_is_zero  sN    %dil33h 	2 	2qv%11	2 	2 	2 	2r/   r   r   r   r{   )r6   r7   r8   r9   rV   r   rq   r   r   ry   r   r   r   r   r   r   r	  r  r  r   r   r  r   r   r   r%  r   r   r)   r/   r-   rQ   rQ     s        &5 5 5 5 -5 -5 [-5^ 
+ 
+ W \
+3 3 34 4 4 41 1 1 1   "* * * ** * *       C C C/ / // / /         @  4  2 2 2 2 2r/   rQ   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
    rO   c                     |dk    r*t           j        t          | j        d                   dz  z
  S t	          | |          NrO   r   r_   )r   r?   r   rR   r   rS   s     r-   rV   z
tanh.fdiff)  s>    q= 	554	!--q000$T8444r/   c                     t           S rX   rk   rS   s     r-   r[   ztanh.inverse/  r\   r/   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          |          }|N|                                rt          j         t          |           z  S t          j        t          |          z  S |                                r | |            S |j        rit!          |          \  }}|rUt#          |t          j        z  t          j        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 r^   )r`   r   ra   rb   r?   rc   NegativeOnerd   rC   re   rf   r%   rg   r=   r$   rh   rL   r   r<   r   ri   rZ   rR   r   rj   rk   rl   )rm   rE   rn   ro   rp   tanhms         r-   rq   z	tanh.eval5  sB   = 1	%ae| 	"u
" "u** "}$ "v "SD		z!" " a'' u4S99G &3355 <O+c7(mm;;W55//11 &CII:%z '#C((1 ' 14!788E 11 '#Aww#Aww{ vx5  (HQKa!Q$h''x5  5HQKAE{{T!a%[[0144x5  #x{"x5  %!}$% %r/   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_   rO   )r   rC   r   r   r   )rw   ro   rx   rG   BFs         r-   ry   ztanh.taylor_termj  s     q5 
	*AEQJ 
	*6M

AAE
A!a%  A!a%  Aa!e9q=?QT))r/   c                 f    |                      | j        d                                                   S r{   r|   r~   s    r-   r   ztanh._eval_conjugatey  r   r/   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   )rT   r   r   r   r   denoms         r-   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)>??r/   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+   ro   s     r-   
<listcomp>z*tanh._eval_expand_trig.<locals>.<listcomp>  sA     # # # q5)));;== # # #r/   rO   r_   c                 V    g | ]%}t          t                    |          |z  z  &S r)   r   ranger+   kTr   s     r-   r=  z*tanh._eval_expand_trig.<locals>.<listcomp>  2    NNN!Rea((A-NNNr/   c                 V    g | ]%}t          t                    |          |z  z  &S r)   r?  rA  s     r-   r=  z*tanh._eval_expand_trig.<locals>.<listcomp>  rD  r/   )
rR   rh   ru   r@  r&   r@   r   r   r   r	   )rT   r   rE   rw   TXrI   ir   drC  r   s            @@r-   r   ztanh._eval_expand_trig  sV   il: 	'CHA# ## # #BAA1q5\\ 2 2!a%N1b111Q4!9Z 	'++--LE5 'EAI 'KKNNNNNuQ	17M7MNNNNNNNNuQ	17M7MNNNAwsAw&Cyyr/   Nc                 V    t          |           t          |          }}||z
  ||z   z  S r   r   rT   rE   r   r   neg_exppos_exps         r-   r   ztanh._eval_rewrite_as_tractable  .    t99c#hh'!Gg$566r/   c                 V    t          |           t          |          }}||z
  ||z   z  S r   r   rT   rE   r   rK  rL  s        r-   r   ztanh._eval_rewrite_as_exp  rM  r/   c                 B    t            t          t           |z            z  S r   )r   r$   r   s      r-   _eval_rewrite_as_tanztanh._eval_rewrite_as_tan  r   r/   c                 B    t            t          t           |z            z  S r   )r   r    r   s      r-   _eval_rewrite_as_cotztanh._eval_rewrite_as_cot  r   r/   c                     t           j        t          |          z  t          t           j        t           j        z  dz  |z
            z  S r   r  r   s      r-   r  ztanh._eval_rewrite_as_sinh  s5    tCyy(ad1?.B1.Ds.J)K)KKKr/   c                     t           j        t          t           j        t           j        z  dz  |z
            z  t          |          z  S r   r   r   s      r-   r   ztanh._eval_rewrite_as_cosh  s5    tAD$8$:S$@AAA$s))KKr/   c                 &    dt          |          z  S r   r   r   s      r-   r   ztanh._eval_rewrite_as_coth      c{r/   r   c                     ddl m} | j        d                             |          }||j        v r! |d|                              |          r|S |                     |          S Nr   OrderrO   sympy.series.orderr\  rR   r   free_symbolscontainsri   rT   ro   r   r   r\  rE   s         r-   r   ztanh._eval_as_leading_term  q    ,,,,,,il**1--   	"UU1a[[%9%9#%>%> 	"J99S>>!r/   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       r-   r   ztanh._eval_is_real  sj    il; 	4!!##B 7 	rBw"Q$ 	4 bd$$r/   c                 .    | j         d         j        rdS d S r   r   r~   s    r-   r   ztanh._eval_is_extended_real  r   r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   ztanh._eval_is_positive  r   r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   ztanh._eval_is_negative  r   r/   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)rR   r   r   rN   	is_numberr   )rT   rE   r   r   r6  s        r-   r   ztanh._eval_is_finite  sz    il!!##BB
T"XXq[(A: 	5_ 	4 	4	 	r/   c                 2    | j         d         }|j        rdS d S r   rR   rd   r   s     r-   r   ztanh._eval_is_zero  s&    il; 	4	 	r/   r   r   r   r{   )r6   r7   r8   r9   rV   r[   r   rq   r   r   ry   r   r   r   r   r   rQ  rS  r  r   r   r   r   r   r   r   r   r   r)   r/   r-   r   r     s        &5 5 5 5    2% 2% [2%h * * W \*3 3 3@ @ @ @  &7 7 7 77 7 7! ! !! ! !L L LL L L  " " " "% % %  , , ,, , ,
 
 
    r/   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
    rO   c                 n    |dk    r dt          | j        d                   dz  z  S t          | |          )NrO   r   r_   r   rS   s     r-   rV   z
coth.fdiff  s<    q= 	5d49Q<((!+++$T8444r/   c                     t           S rX   )rl   rS   s     r-   r[   zcoth.inverse  r\   r/   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          |          }|N|                                rt          j        t          |           z  S t          j         t          |          z  S |                                r | |            S |j        rit          |          \  }}|rUt!          |t          j        z  t          j        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 r^   )r`   r   ra   rb   r?   rc   r.  rd   rf   re   r%   rg   r=   r    rh   rL   r   r<   r   ri   rZ   rR   r   rj   rk   rl   )rm   rE   rn   ro   rp   cothms         r-   rq   z	coth.eval
  sF   = 1	#ae| 	"u
" "u** "}$ "(( "SD		z!" " a'' u4S99G &3355 ;?S']]::'#g,,66//11 &CII:%z '#C((1 ' 14!788E 11 '#Aww#Aww{ )((x5  (HQKA1H~~a''x5  5HQK$q1u++QU344x5  %!}$x5  #x{"# #r/   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 r^   r   r   rC   r   r   rw   ro   rx   r2  r3  s        r-   ry   zcoth.taylor_term?  s     6 
	+wqzz>!U 	+a!eqj 	+6M

A!a%  A!a%  Aq1u:>!#ad**r/   c                 f    |                      | j        d                                                   S r{   r|   r~   s    r-   r   zcoth._eval_conjugateN  r   r/   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#   rR   r   r   r   rC   r   rN   rQ   )rT   r   r   r   r#   r   r   r6  s           r-   r   zcoth.as_real_imagQ  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%)?@@r/   Nc                 V    t          |           t          |          }}||z   ||z
  z  S r   r   rJ  s         r-   r   zcoth._eval_rewrite_as_tractable`  rM  r/   c                 V    t          |           t          |          }}||z   ||z
  z  S r   r   rO  s        r-   r   zcoth._eval_rewrite_as_expd  rM  r/   c                     t           j         t          t           j        t           j        z  dz  |z
            z  t          |          z  S r   r  r   s      r-   r  zcoth._eval_rewrite_as_sinhh  s8    QT!/%9!%;c%A B BB499LLr/   c                     t           j         t          |          z  t          t           j        t           j        z  dz  |z
            z  S r   r   r   s      r-   r   zcoth._eval_rewrite_as_coshk  s8    S		)$qtAO/CA/E/K*L*LLLr/   c                 &    dt          |          z  S r   r   r   s      r-   r   zcoth._eval_rewrite_as_tanhn  rX  r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   zcoth._eval_is_positiveq  r   r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   zcoth._eval_is_negativeu  r   r/   r   c                     ddl m} | j        d                             |          }||j        v r$ |d|                              |          rd|z  S |                     |          S rZ  r]  ra  s         r-   r   zcoth._eval_as_leading_termy  su    ,,,,,,il**1--   	"UU1a[[%9%9#%>%> 	"S5L99S>>!r/   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 r9  )r   r   r<  s     r-   r=  z*coth._eval_expand_trig.<locals>.<listcomp>  s1    PPP!$q5)));;==PPPr/   rm  r_   rO   Tr   Fr:  )rR   rh   ru   r@  appendr&   r	   r@   r   r   r   r   )
rT   r   rE   CXrI   rw   rG  r   ro   cs
             r-   r   zcoth._eval_expand_trig  su   il: 	-PPsxPPPBRACHA1b"%% = =1q5A+%%nQ&;&;<<<<!:c1Q4j((Z 	-'''66HE1 -EAI -U+++Hub"-- G GAuqyAo&--hua.@.@A.EFFFFAaDz#qt*,,Cyyr/   r   r   r   r{   )r6   r7   r8   r9   rV   r[   r   rq   r   r   ry   r   r   r   r   r  r   r   r   r   r   r   r)   r/   r-   r   r     sE        &5 5 5 5    2# 2# [2#h + + W \+3 3 3A A A A7 7 7 77 7 7M M MM M M  , , ,, , ," " " "    r/   r   c                       e Zd ZdZdZdZdZ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. Nc                 (   |                                 r'| j        r | |           S | j        r | |            S | j                            |          }t          |d          r%|                                | k    r|j        d         S |d|z  n|S )Nr[   r   rO   )rg   _is_even_is_odd_reciprocal_ofrq   hasattrr[   rR   )rm   rE   ts      r-   rq   z!ReciprocalHyperbolicFunction.eval  s    '')) 	"| !sC4yy { "SD		z!##C((3	"" 	s{{}}'; 	8A;*qss*r/   c                 n    |                      | j        d                   } t          ||          |i |S r{   )r  rR   getattr)rT   method_namerR   r   os        r-   _call_reciprocalz-ReciprocalHyperbolicFunction._call_reciprocal  s:    	!--&wq+&&7777r/   c                 6     | j         |g|R i |}|d|z  n|S r   )r  )rT   r  rR   r   r  s        r-   _calculate_reciprocalz2ReciprocalHyperbolicFunction._calculate_reciprocal  s9     "D!+??????*qss*r/   c                 v    |                      ||          }|||                     |          k    rd|z  S d S d S r   )r  r  )rT   r  rE   r  s       r-   _rewrite_reciprocalz0ReciprocalHyperbolicFunction._rewrite_reciprocal  sX     !!+s33 	Q$"5"5c":":: 	Q3J	 	 	 	r/   c                 .    |                      d|          S )Nr   r  r   s      r-   r   z1ReciprocalHyperbolicFunction._eval_rewrite_as_exp  s    ''(>DDDr/   c                 .    |                      d|          S )Nr   r  r   s       r-   r   z7ReciprocalHyperbolicFunction._eval_rewrite_as_tractable  s    ''(DcJJJr/   c                 .    |                      d|          S )Nr   r  r   s      r-   r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_tanh      ''(?EEEr/   c                 .    |                      d|          S )Nr   r  r   s      r-   r   z2ReciprocalHyperbolicFunction._eval_rewrite_as_coth  r  r/   Tc                 `     d|                      | j        d                   z  j        |fi |S r   )r  rR   r   )rT   r   r   s      r-   r   z)ReciprocalHyperbolicFunction.as_real_imag  s6    CD''	!555CDRRERRRr/   c                 f    |                      | j        d                                                   S r{   r|   r~   s    r-   r   z,ReciprocalHyperbolicFunction._eval_conjugate  r   r/   c                 J     | j         dddi|\  }}|t          j        |z  z   S )Nr   Tr)   r   r   s        r-   r   z1ReciprocalHyperbolicFunction._eval_expand_complex  s6    ,4,@@$@%@@000r/   c                      | j         di |S )Nr   )r   )r  )rT   r   s     r-   r   z.ReciprocalHyperbolicFunction._eval_expand_trig  s    )t)GGGGGr/   r   c                 n    d|                      | j        d                   z                      |          S r   )r  rR   r   )rT   ro   r   r   s       r-   r   z2ReciprocalHyperbolicFunction._eval_as_leading_term  s/    $%%dil333JJ1MMMr/   c                 L    |                      | j        d                   j        S r{   )r  rR   r   r~   s    r-   r   z3ReciprocalHyperbolicFunction._eval_is_extended_real  s    ""49Q<00AAr/   c                 R    d|                      | j        d                   z  j        S r   )r  rR   r   r~   s    r-   r   z,ReciprocalHyperbolicFunction._eval_is_finite  s$    $%%dil333>>r/   r   r   r{   )r6   r7   r8   r9   r  r  r  r   rq   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r)   r/   r-   r  r    sE       GG NHG
+ 
+ [
+8 8 8
+ + +  E E EK K K KF F FF F FS S S S3 3 31 1 1 1H H HN N N NB B B? ? ? ? ?r/   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
    TrO   c                     |dk    r6t          | j        d                    t          | j        d                   z  S t          | |          )z?
        Returns the first derivative of this function
        rO   r   )r   rR   r   r   rS   s     r-   rV   z
csch.fdiff  sJ     q= 	51&&&dil););;;$T8444r/   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   rO   r_   rr  rs  s        r-   ry   zcsch.taylor_term   s     6 
	/WQZZ<U 	/a!eqj 	/6M

A!a%  A!a%  AAqD>A%a'!Q$..r/   c                 @    t           t          t           |z            z  S r   r   r   s      r-   r   zcsch._eval_rewrite_as_sin      3q3w<<r/   c                 @    t           t          t           |z            z  S r   r   r   s      r-   r   zcsch._eval_rewrite_as_csc  r  r/   c                 t    t           j        t          |t           j        t           j        z  dz  z             z  S r   r   r   s      r-   r   zcsch._eval_rewrite_as_cosh  s*    cAOad,BQ,F&F!G!GGGr/   c                 &    dt          |          z  S r   rN   r   s      r-   r  zcsch._eval_rewrite_as_sinh  r   r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   zcsch._eval_is_positive  r   r/   c                 N    | j         d         j        r| j         d         j        S d S r{   r   r~   s    r-   r   zcsch._eval_is_negative"  r   r/   Nr   )r6   r7   r8   r9   rN   r  r  rV   r   r   ry   r   r   r   r  r   r   r)   r/   r-   r   r     s         & NG5 5 5 5 / / W \/           H H H  , , ,, , , , ,r/   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
    TrO   c                     |dk    r6t          | j        d                    t          | j        d                   z  S t          | |          r   )r   rR   r  r   rS   s     r-   rV   z
sech.fdiff>  sH    q= 	5$)A,'''TYq\(:(:::$T8444r/   c                     | dk     s	| dz  dk    rt           j        S t          |          }t          |           t	          |           z  || z  z  S r1  )r   rC   r   r   r   rw   ro   rx   s      r-   ry   zsech.taylor_termD  sQ     q5 	4AEQJ 	46M

A88ill*QV33r/   c                 6    dt          t          |z            z  S r   r  r   s      r-   r	  zsech._eval_rewrite_as_cosM  r  r/   c                 0    t          t          |z            S r   r  r   s      r-   r  zsech._eval_rewrite_as_secP  r
  r/   c                 t    t           j        t          |t           j        t           j        z  dz  z             z  S r   r  r   s      r-   r  zsech._eval_rewrite_as_sinhS  s*    cAOad,BA,E&E!F!FFFr/   c                 &    dt          |          z  S r   rQ   r   s      r-   r   zsech._eval_rewrite_as_coshV  r   r/   c                 .    | j         d         j        rdS d S r   r   r~   s    r-   r   zsech._eval_is_positiveY  r   r/   Nr   )r6   r7   r8   r9   rQ   r  r  rV   r   r   ry   r	  r  r  r   r   r)   r/   r-   r  r  '  s         & NH5 5 5 5 4 4 W \4       G G G      r/   r  c                       e Zd ZdZdS )InverseHyperbolicFunctionz,Base class for inverse hyperbolic functions.N)r6   r7   r8   r9   r)   r/   r-   r  r  b  s        66Dr/   r  c                       e Zd ZdZddZed             Zeed                         Z	ddZ
d	 Zd
 Zd Zd Zd ZddZd ZdS )rZ   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
    rO   c                 t    |dk    r#dt          | j        d         dz  dz             z  S t          | |          r*  )r   rR   r   rS   s     r-   rV   zasinh.fdiff~  s@    q= 	5T$)A,/A-....$T8444r/   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 n{|t          j        u rt          j        S |j        rt          j        S t          |          }|t          j        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            }|t2          t0          z  |z  z
  }|j        }|du r|S |du r| S d S d S d S d S d S )Nr_   rO   r   TF)r`   r   ra   rb   rc   rd   rC   r?   r   r   r.  re   rf   r%   r=   r   rg   
isinstancerN   rR   rh  r   r   r   r   r   is_even)	rm   rE   rn   r   rrG  frp   evens	            r-   rq   z
asinh.eval  s-   = 	&ae| "u
" "z!** 	")) "v "477Q;'''% "477Q;''' "SD		z!" a'' )(({ v4S99G &g66//11 &CII:%c4   	SXa[%: 	Ay "1%%DAq  1r!t8R-(("QJy4< HU] 2I	 	 	 	
    r/   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_   rs   rO   )r   rC   r   ru   r   rD   r   r.  rw   ro   rx   rI   rB  Rr3  s          r-   ry   zasinh.taylor_term  s     q5 	;AEQJ 	;6M

A>""a' ;AE ;"2&rQUQJ1q5	2QT99UqL#AFA..aLL}a'!+a/!Q$6::r/   Nr   c                     ddl m} | j        d                             |          }||j        v r! |d|                              |          r|S |                     |          S rZ  r]  ra  s         r-   r   zasinh._eval_as_leading_term  rb  r/   c                 L    t          |t          |dz  dz             z             S r   r   r   rT   ro   r   s      r-   _eval_rewrite_as_logzasinh._eval_rewrite_as_log  s#    1tAqD1H~~%&&&r/   c                 L    t          |t          d|dz  z             z            S NrO   r_   )rk   r   r  s      r-   _eval_rewrite_as_atanhzasinh._eval_rewrite_as_atanh  s#    QtA1H~~%&&&r/   c                     t           |z  }t           t          d|z
            t          |dz
            z  t          |          z  t          dz  z
  z  S r  )r   r   rj   r   )rT   ro   r   ixs       r-   _eval_rewrite_as_acoshzasinh._eval_rewrite_as_acosh  sC    qS$q2v,,tBF||+eBii7"Q$>??r/   c                 B    t            t          t           |z            z  S r   )r   r   r  s      r-   _eval_rewrite_as_asinzasinh._eval_rewrite_as_asin  s    rDQKKr/   c                 f    t           t          t           |z            z  t           t          z  dz  z
  S r   )r   r   r   r  s      r-   _eval_rewrite_as_acoszasinh._eval_rewrite_as_acos  s#    4A;;2a''r/   c                     t           S rX   r  rS   s     r-   r[   zasinh.inverse  	     r/   c                 &    | j         d         j        S r{   rj  r~   s    r-   r   zasinh._eval_is_zero  s    y|##r/   r   r{   )r6   r7   r8   r9   rV   r   rq   r   r   ry   r   r  r  r  r  r  r[   r   r)   r/   r-   rZ   rZ   h  s         *5 5 5 5 + + [+Z ; ; W \;" " " "' ' '' ' '@ @ @     ( ( (   $ $ $ $ $r/   rZ   c                       e Zd ZdZddZeed                         Zed             Z	eed                         Z
dd	Zd
 Zd Zd Zd Zd ZddZd ZdS )rj   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
    rO   c                     |dk    r5| j         d         }dt          |dz
            t          |dz             z  z  S t          | |          r   rR   r   r   )rT   rU   rE   s      r-   rV   zacosh.fdiff  sM    q= 	5)A,Cd37mmDqMM122$T8444r/   c                     i t           j        t          t           j        dt          d          z   z            t           j         t          t           j         dt          d          z   z            t           j        t           j        dz  t          dd          t           j        t          dd          z  t          d          dz  t           j        dz  t          d           dz  t           j        t          dd          z  dt          d          z  t           j        dz  dt          d          z  t           j        t          dd          z  t          d          dz  t           j        dz  t          d           dz  t           j        t          dd          z  t          d          dz
  t          d          z  t           j        t          dd	          z  t          d          dz
   t          d          z  t           j        t          d
d	          z  t          dt          d          z             dz  t           j        dz  t          dt          d          z              dz  t           j        t          d
d          z  t          dt          d          z
            dz  t           j        t          dd          z  t          dt          d          z
             dz  t           j        t          dd          z  dt          d          z   dt          d          z  z  t           j        d	z  dt          d          z    dt          d          z  z  t           j        t          dd	          z  t          d          dz   dz  t           j        dz  t          d          dz    dz  t           j        t          dd          z  iS )NrO   r_   r  rm                       )r   r=   r   r   rD   r<   r   r)   r/   r-   _acosh_tablezacosh._acosh_table  s'   OS!d1gg+!>??_c1?"2AQK"@AA FADF ROOQT(1a..0	
 GGAIqtAv !WWHQJXa^^+ d1ggIqtAv tAwwJXa^^+ GGAIqtAv !WWHQJXa^^+ !WWq[$t**$ad8Ar??&: 1ggkN4::%qtHQOO'; T!WWaa !d1gg+q !$x1~~"5 T!WWahq!nn!4  !d1gg+q !$x1~~"5!" a[1T!WW9%qtBw#$ $q''kNAd1ggI&Xb"-=-=(=!WWq[!OQT!V1ggkN1ad8Aq>>1)  	r/   c                 d   |j         r|t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |j        rt          j        t          j        z  dz  S |t          j        u rt          j	        S |t          j
        u rt          j        t          j        z  S |j        r<|                                 }||v r$|j        r||         t          j        z  S ||         S |t          j        u rt          j        S |t          j        t          j        z  k    r)t          j        t          j        t          j        z  dz  z   S |t          j         t          j        z  k    r)t          j        t          j        t          j        z  dz  z
  S |j        r&t          j        t          j        z  t          j        z  S t!          |t"                    r|j        d         j        r|j        d         }|j        rt)          |          S t+          |          \  }}|{|{t-          |t.          z            }|t0          t.          z  |z  z
  }|j        }|du r|j        r|S |j        r| S d S |du r-|t0          t.          z  z  }|j        r| S |j        r|S d S d S d S d S d S d S )Nr_   r   TF)r`   r   ra   rb   rc   rd   r<   r=   r?   rC   r.  rh  r  r   rf   rD   r  rQ   rR   r   r   r   r   r   r   r  is_nonnegativere   is_nonpositiver   )	rm   rE   	cst_tabler   r  rG  r  rp   r  s	            r-   rq   z
acosh.eval  s   = 	,ae| ,u
" 	,z!** ,z! ,tAO+a// ,v% ,tAO++= 	&((**Ii &' :$S>!/99 ~%!## 	%$$!/!*,, 	7: 4Q 6661?"1:-- 	7: 4Q 666; 	/4'..c4   	!SXa[%: 	!Ay 1vv"1%%DAq ! !!B$KK"QJy4< 
!' "  " !r	" "U] !2IA' ! !r	 ! '	! 	! 	! 	!
! ! ! !! !! !r/   c                    | dk    rt           j        t           j        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           j        z  || z  z  | z  S r  )	r   r<   r=   rC   r   ru   r   rD   r   r  s          r-   ry   zacosh.taylor_termS  s     6 	;4'!++U 	;a!eqj 	;6M

A>""a' ;AE ;"2&AEA:~q!a%y1AqD88UqL#AFA..aLLrAv/!Q$6::r/   Nr   c                     ddl m} | j        d                             |          }||j        v r; |d|                              |          rt          j        t          j        z  dz  S | 	                    |          S Nr   r[  rO   r_   
r^  r\  rR   r   r_  r`  r   r=   r<   ri   ra  s         r-   r   zacosh._eval_as_leading_terme      ,,,,,,il**1--   	"UU1a[[%9%9#%>%> 	"?14'))99S>>!r/   c                 l    t          |t          |dz             t          |dz
            z  z             S r   r  r  s      r-   r  zacosh._eval_rewrite_as_logn  s.    1tAE{{T!a%[[00111r/   c                 l    t          |dz
            t          d|z
            z  t          |          z  S r   )r   r   r  s      r-   r  zacosh._eval_rewrite_as_acosq  s,    AE{{4A;;&a00r/   c                     t          |dz
            t          d|z
            z  t          dz  t          |          z
  z  S r  )r   r   r   r  s      r-   r  zacosh._eval_rewrite_as_asint  s4    AE{{4A;;&"Q$a.99r/   c                     t          |dz
            t          d|z
            z  t          dz  t          t          t          |z            z  z   z  S r  )r   r   r   rZ   r  s      r-   _eval_rewrite_as_asinhzacosh._eval_rewrite_as_asinhw  s=    AE{{4A;;&"Q$51::*=>>r/   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   rk   )rT   ro   r   sxm1s1mxsx2m1s         r-   r  zacosh._eval_rewrite_as_atanhz  s    AE{{AE{{QTAX1T	$AQq!tV$4 45T!a%[[ &uQw78 	9r/   c                     t           S rX   r  rS   s     r-   r[   zacosh.inverse  r  r/   c                 4    | j         d         dz
  j        rdS d S )Nr   rO   Trj  r~   s    r-   r   zacosh._eval_is_zero  s'    IaL1% 	4	 	r/   r   r{   )r6   r7   r8   r9   rV   r   r   r  r   rq   ry   r   r  r  r  r  r  r[   r   r)   r/   r-   rj   rj     s        *5 5 5 5   W \0 4! 4! [4!l ; ; W \; " " " "2 2 21 1 1: : :? ? ?9 9 9       r/   rj   c                   ~    e Zd ZdZddZed             Zeed                         Z	ddZ
d	 Zd
 Zd Zd ZddZdS )rk   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
    rO   c                 Z    |dk    rdd| j         d         dz  z
  z  S t          | |          r*  rR   r   rS   s     r-   rV   zatanh.fdiff  8    q= 	5a$)A,/)**$T8444r/   c                 d   |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          j	         t          |          z  S |t          j        u rt          j	        t          |           z  S |j        r | |            S n|t          j        u r:ddlm} t          j	         |t          j         dz  t          j        dz            z  S t!          |          }|t          j	        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  t2          z            }|j        }|t6          |z  t2          z  dz  z
  }	|du r|	S |du r|	t6          t2          z  dz  z
  S d S d S d S d S d S )Nr   AccumBoundsr_   TF)r`   r   ra   rd   rC   r?   rb   r.  rc   r=   r   re   rf   !sympy.calculus.accumulationboundsr  r<   r%   rg   r  r   rR   rh  r   r   r   r   r  r   )
rm   rE   r  rn   r   r  rG  r  r  rp   s
             r-   rq   z
atanh.eval  sb   = 	&ae| "u "v 	"z!% "))
" "'$s))33** "sd33 "SD		z!" a'' DIIIIII{{AD57ADF'C'CCC4S99G &g66//11 &CII:%; 	6Mc4   	&SXa[%: 	&Ay "1%%DAq & &!A#b&MMy!BqL4< &HU] &qtAv:%	& 	& 	& 	&
& & & && &r/   c                 f    | dk     s	| dz  dk    rt           j        S t          |          }|| z  | z  S Nr   r_   )r   rC   r   r  s      r-   ry   zatanh.taylor_term  s>     q5 	AEQJ 	6M

Aa4!8Or/   Nr   c                     ddl m} | j        d                             |          }||j        v r! |d|                              |          r|S |                     |          S rZ  r]  ra  s         r-   r   zatanh._eval_as_leading_term  rb  r/   c                 R    t          d|z             t          d|z
            z
  dz  S r  r   r  s      r-   r  zatanh._eval_rewrite_as_log  s&    AE

SQZZ'1,,r/   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   rZ   )rT   ro   r   r  s       r-   r  zatanh._eval_rewrite_as_asinh  sz    AqD1H1aadUm$aRa!Q$h'Q/1%((:; 	<r/   c                 .    | j         d         j        rdS d S r   rj  r~   s    r-   r   zatanh._eval_is_zero  s"    9Q< 	4	 	r/   c                 &    | j         d         j        S r{   )rR   r  r~   s    r-   _eval_is_imaginaryzatanh._eval_is_imaginary  s    y|((r/   c                     t           S rX   r{  rS   s     r-   r[   zatanh.inverse  r  r/   r   r{   )r6   r7   r8   r9   rV   r   rq   r   r   ry   r   r  r  r   r  r[   r)   r/   r-   rk   rk     s         &5 5 5 5 ,& ,& [,&\   W \" " " "- - -< < <
  ) ) )     r/   rk   c                   x    e Zd ZdZddZed             Zeed                         Z	ddZ
d	 Zd
 Zd ZddZdS )rl   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
    rO   c                 Z    |dk    rdd| j         d         dz  z
  z  S t          | |          r*  r  rS   s     r-   rV   zacoth.fdiff  r  r/   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        t          j        z  dz  S |t          j	        u rt          j        S |t          j
        u rt          j        S |j        r | |            S ni|t          j        u rt          j        S t          |          }|t          j         t          |          z  S |                                r | |            S |j        r&t          j        t          j        z  t          j        z  S d S r   )r`   r   ra   rb   rC   rc   rd   r<   r=   r?   r.  re   rf   r%   r   rg   rD   )rm   rE   rn   s      r-   rq   z
acoth.eval  sO   = 	&ae| "u
" "v** 	"v "tAO+a// "z!% ")) "SD		z!" a'' v4S99G &'$w--77//11 &CII:%; 	/4'..	/ 	/r/   c                     | dk    rt           j        t           j        z  dz  S | dk     s	| dz  dk    rt           j        S t	          |          }|| z  | z  S r   )r   r<   r=   rC   r   r  s      r-   ry   zacoth.taylor_term7  s^     6 	4'!++U 	a!eqj 	6M

Aa4!8Or/   Nr   c                     ddl m} | j        d                             |          }||j        v r; |d|                              |          rt          j        t          j        z  dz  S | 	                    |          S r  r  ra  s         r-   r   zacoth._eval_as_leading_termB  r  r/   c                 ^    t          dd|z  z             t          dd|z  z
            z
  dz  S r  r  r  s      r-   r  zacoth._eval_rewrite_as_logK  s.    A!Gs1qs7||+q00r/   c                 &    t          d|z            S r   r,  r  s      r-   r  zacoth._eval_rewrite_as_atanhN  s    QqSzzr/   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   rZ   r  s      r-   r  zacoth._eval_rewrite_as_asinhQ  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 	:r/   c                     t           S rX   rW  rS   s     r-   r[   zacoth.inverseU  r  r/   r   r{   )r6   r7   r8   r9   rV   r   rq   r   r   ry   r   r  r  r  r[   r)   r/   r-   rl   rl     s         &5 5 5 5 / / [/>   W \" " " "1 1 1  : : :     r/   rl   c                       e Zd ZdZddZeed                         Zed             Z	eed                         Z
ddZd 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] http://dlmf.nist.gov/4.37
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcSech/

    rO   c                 ~    |dk    r(| j         d         }d|t          d|dz  z
            z  z  S t          | |          NrO   r   rm  r_   r  rT   rU   r   s      r-   rV   zasech.fdiff  sG    q= 	5	!Aqa!Q$h'(($T8444r/   c                   	   i t           j        t           j        t           j        z  dz   t          dt	          d          z             z   t           j         t           j        t           j        z  dz  t          dt	          d          z             z   t	          d          t	          d          z
  t           j        dz  t	          d          t	          d          z
  dt           j        z  dz  t	          ddt	          d          z  z
            t           j        dz  t	          ddt	          d          z  z
             dt           j        z  dz  dt	          dt	          d          z             z  t           j        d	z  d
t	          dt	          d          z             z  dt           j        z  d	z  dt	          d          z  t           j        dz  d
t	          d          z  dt           j        z  dz  t	          d          dz
  t           j        dz  dt	          d          z
  dt           j        z  dz  t	          d          t           j        dz  t	          d           dt           j        z  dz  t	          ddt	          d          z  z             dt           j        z  dz  t	          ddt	          d          z  z              dt           j        z  dz  t          d          t           j        dz  t          d           dt           j        z  dz  t	          ddt	          d          z   z            dt           j        z  d	z  t	          ddt	          d          z   z             dt           j        z  d	z  dt	          d          z   dt           j        z  dz  dt	          d          z
  dt           j        z  dz  t	          d          t	          d          z   dt           j        z  dz  t	          d           t	          d          z
  dt           j        z  dz  t           j        t           j        z  t           j         t           j        z  dz  t           j        t           j        z  t           j        t           j        z  dz  i	S )Nr_   rO   r  r  r  r  
   	   r  rs   r  r  r  rm  )r   r=   r<   r   r   rb   rc   r)   r/   r-   _asech_tablezasech._asech_table  s   AD$81$<!=AQK@P@P!P 14#7!#;s1tAww;?O?O"O a477"QTBY a477"RWr\	
 Q477]##QTBY a!DGG)m$$$afrk DT!WW%%%qtax T!d1gg+&&&!$
 DGGQTAX T!WWafqj a1qtax T!WWqvz Q a!AD&1* Q477]##QqtVb[  a!DGG)m$$$afrk!" !adQh#$ 1qvzQDGG_%%qvzaT!WWo&&&!$
T!WWqvzd1gg!$
a477"QqtVb[q''DGG#afrk
*QTE!/,AA,E 22AD4H14L5  r/   c                    |j         r|t          j        u rt          j        S |t          j        u rt          j        t          j        z  dz  S |t          j        u rt          j        t          j        z  dz  S |j        rt          j        S |t          j        u rt          j	        S |t          j
        u rt          j        t          j        z  S |j        r<|                                 }||v r$|j        r||         t          j        z  S ||         S |t          j        u r:ddlm} t          j         |t          j         dz  t          j        dz            z  S |j        rt          j        S d S )Nr_   r   r  )r`   r   ra   rb   r<   r=   rc   rd   r?   rC   r.  rh  r  r   rf   r  r  )rm   rE   r  r  s       r-   rq   z
asech.eval  sa   = 	,ae| ,u
" 	,tAO+a//** ,tAO+a// ,z! ,v% ,tAO++= 	&((**Ii &' :$S>!/99 ~%!## 	@EEEEEE?;;uQwQ#?#???; 	:	 	r/   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  | dz  dz  z  |dz  z  d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_   rO   rs   r  rm  )r   r   rC   r   ru   r   rD   r   r  s          r-   expansion_termzasech.expansion_term  s     6 	-q1u::U 	-a!eqj 	-6M

A>""Q& -1q5 -"2&AEA:~!q&14q!t;a??F#AFA..!3aLL1$)A-2AvzAqD(1,,r/   c                     t           S rX   r  rS   s     r-   r[   zasech.inverse  r  r/   c                 ~    t          d|z  t          d|z  dz
            t          d|z  dz             z  z             S r   r  r   s      r-   r  zasech._eval_rewrite_as_log  s:    1S54#	??T!C%!)__<<===r/   c                 &    t          d|z            S r   )rj   r   s      r-   r  zasech._eval_rewrite_as_acosh      QsU||r/   c                     t          d|z  dz
            t          dd|z  z
            z  t          j        t          t          j        |z            z  t          j        t          j        z  z   z  S r   )r   r   r=   rZ   r<   rD   r   s      r-   r  zasech._eval_rewrite_as_asinh  sY    AcEAItA#I.aoVYFY@Z@Z0Z23$qv+1> ? 	?r/   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   rk   r  s      r-   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r/   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      r-   _eval_rewrite_as_acschzasech._eval_rewrite_as_acsch  sE    AaC!G}}T!ac']]*BqD1U1Q3ZZ<,?@@r/   Nr   )r6   r7   r8   r9   rV   r   r   r  r   rq   r  r[   r  r  r  r  r&  r)   r/   r-   r  r  \  s        # #J5 5 5 5   W \<   [< - - W \-    > > >  ? ? ?E E EA A A A Ar/   r  c                   |    e Zd ZdZddZeed                         Zed             Z	ddZ
d Zd Zd	 Zd
 Zd ZdS )r%  a  
    ``acsch(x)`` is the inverse hyperbolic cosecant of ``x``.

    The inverse hyperbolic cosecant function.

    Examples
    ========

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

    See Also
    ========

    asinh

    References
    ==========

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

    rO   c                     |dk    r.| j         d         }d|dz  t          dd|dz  z  z             z  z  S t          | |          r  r  r  s      r-   rV   zacsch.fdiff  sQ    q= 	5	!Aq!tDQq!tV,,,--$T8444r/   c                   0   t           j        t           j         dz  t           j        t          d          t          d          z   z  t           j         dz  t           j        dt          d          z   z  t           j         dz  t           j        dz  t          dt          d          z
            z  t           j         dz  t           j        dz  t           j         dz  t           j        t          ddt          d          z  z             z  t           j         dz  t           j        t          d          z  t           j         dz  t           j        t          d          dz
  z  d	t           j        z  dz  t           j        dz  t          d
          z  t           j         d
z  t           j        dz  t          dt          d          z             z  d	t           j        z  dz  t           j        t          ddt          d          z  z
            z  dt           j        z  dz  t           j        t          d          t          d          z
  z  dt           j        z  dz  t          d          t           j         t	          dt          d          z   dz            z  iS )Nr_   r  r  rO   r  r  r  r  r  rs   )r   r=   r<   r   r   r)   r/   r-   _acsch_tablezacsch._acsch_table  s    !$a477!23adURZT!WW-urz!DT!WW$5$55uqy!AD519Q477] 3 33adUQYQ'!$a+RWr\!DGG+adUQY!DT!WW$5$55r!$w{Q477] 3 33RWq[a477!23RWr\!q&sAd1ggIq='9'99 	r/   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-|                                 }||v r||         t          j        z  S |t          j        u rt          j        S |j        rt          j        S |j        rt          j        S |                                r | |            S d S r  )r`   r   ra   rb   rC   rc   rd   rf   r?   r   r   r.  rh  r,  r=   is_infiniterg   )rm   rE   r  s      r-   rq   z
acsch.eval2  sU   = 	*ae| *u
" 	*v** *v *(( *1tAww;'''% *Qa[))))= 	6((**Ii 6 ~ao55!## 	6M? 	6M; 	%$$'')) 	CII:	 	r/   c                     t           S rX   r   rS   s     r-   r[   zacsch.inverseT  r  r/   c                 X    t          d|z  t          d|dz  z  dz             z             S r  r  r   s      r-   r  zacsch._eval_rewrite_as_logZ  s-    1S54#q&1---...r/   c                 &    t          d|z            S r   rY   r   s      r-   r  zacsch._eval_rewrite_as_asinh]  r!  r/   c                    t           j        t          dt           j        |z  z
            t          t           j        |z  dz
            z  t          t           j        |z            z  t           j        t           j        z  z
  z  S r   )r   r=   r   rj   r<   rD   r   s      r-   r  zacsch._eval_rewrite_as_acosh`  sl    Q)<%< = =d1?SVCVYZCZ>[>[ [ %aoc&9 : :!;=>T!&[!I J 	Jr/   c                     |dz  }|dz   }t          |           |z  t          j        t          j        z  t          |dz             |z  t	          t          |                    z  z
  z  S r   )r   r   r<   rD   rk   )rT   rE   r   arg2arg2p1s        r-   r  zacsch._eval_rewrite_as_atanhd  sh    AvTE{{3QV $faiZ 0 0 7d6ll8K8K K!L M 	Mr/   c                 &    | j         d         j        S r{   )rR   r.  r~   s    r-   r   zacsch._eval_is_zeroj  s    y|''r/   Nr   )r6   r7   r8   r9   rV   r   r   r,  r   rq   r[   r  r  r  r  r   r)   r/   r-   r%  r%    s        # #J5 5 5 5   W \"   [B   / / /  J J JM M M( ( ( ( (r/   r%  N)A
sympy.corer   r   r   r   r   r   sympy.core.addr	   sympy.core.functionr
   r   sympy.core.logicr   r   r   (sympy.functions.combinatorial.factorialsr   r   r   %sympy.functions.combinatorial.numbersr   r   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   r   r   #sympy.functions.elementary.integersr   (sympy.functions.elementary.miscellaneousr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   sympy.polys.specialpolysr&   r4   r2   rL   rN   rQ   r   r   r  r   r  r  rZ   rj   rk   rl   r  r%  r)   r/   r-   <module>rB     s   ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;       < < < < < < < < ; ; ; ; ; ; ; ; ; ;G G G G G G G G G G F F F F F F F F F F 4 4 4 4 4 4 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
 
 
 
 
 
 
 
  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	 	 	 	 	 	 	 	z$ z$ z$ z$ z$% z$ z$ z$zd d d d d% d d dNn n n n n% n n nb\ \ \ \ \% \ \ \~SA SA SA SA SA% SA SA SAly( y( y( y( y(% y( y( y( y( y(r/   