ó
¡¼™\c           @  sú  d  d l  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 d  d l m Z m Z d  d l m Z d „  Z d	 e
 f d
 „  ƒ  YZ d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e
 f d „  ƒ  YZ d e f d „  ƒ  YZ  d e f d „  ƒ  YZ! d  e f d! „  ƒ  YZ" d" e f d# „  ƒ  YZ# d$ e f d% „  ƒ  YZ$ d& e f d' „  ƒ  YZ% d( S()   iÿÿÿÿ(   t   print_functiont   division(   t   St   sympifyt   cacheit(   t   Add(   t   Functiont   ArgumentIndexErrort   _coeff_isneg(   t	   factorialt   RisingFactorial(   t   expt   log(   t   sqrtc         C  s,   t  |  ƒ }  |  j d „  |  j t ƒ Dƒ ƒ S(   Nc         S  s"   i  |  ] } | j  t ƒ | “ q S(    (   t   rewriteR   (   t   .0t   h(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pys
   <dictcomp>   s   	(   R   t   xreplacet   atomst   HyperbolicFunction(   t   expr(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _rewrite_hyperbolics_as_exp   s    R   c           B  s   e  Z d  Z e Z RS(   se   
    Base class for hyperbolic functions.

    See Also
    ========

    sinh, cosh, tanh, coth
    (   t   __name__t
   __module__t   __doc__t   Truet
   unbranched(    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR      s   c         C  sÌ   xˆ t  j |  ƒ D]j } | t j t j k r9 t j } Pq | j r | j ƒ  \ } } | t j t j k rz | j rz Pqz q q W|  t j	 f S| t j
 t j t j } | t j t j | } |  | | f S(   sÕ  
    Split ARG into two parts, a "rest" and a multiple of I*pi/2.
    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, I*pi/2)
    >>> peel(x + I*2*pi/3 + I*pi*y)
    (x + I*pi*y + I*pi/6, I*pi/2)
    (   R   t	   make_argsR   t   Pit   ImaginaryUnitt   Onet   is_Mult   as_two_termst   is_Rationalt   Zerot   Half(   t   argt   at   Kt   pt   m1t   m2(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _peeloff_ipi#   s    		t   sinhc           B  sÑ   e  Z d  Z d d „ Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z	 d „  Z
 e d „ Z e d „ Z e d	 „ Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s¦   
    The hyperbolic sine function, `\frac{e^x - e^{-x}}{2}`.

    * sinh(x) -> Returns the hyperbolic sine of x

    See Also
    ========

    cosh, tanh, asinh
    i   c         C  s0   | d k r t  |  j d ƒ St |  | ƒ ‚ d S(   s@   
        Returns the first derivative of this function.
        i   i    N(   t   cosht   argsR   (   t   selft   argindex(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   fdiffP   s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   t   asinh(   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   inverseY   s    c         C  s  d d l  m } t | ƒ } | j r• | t j k r; t j S| t j k rQ t j S| t j k rg t j S| t j k r} t j S| j	 rþ|  | ƒ Sni| t j
 k r« t j S| j t j ƒ } | d  k	 rÚ t j | | ƒ St | ƒ rò |  | ƒ S| j r>t | ƒ \ } } | r>t | ƒ t | ƒ t | ƒ t | ƒ Sn  | j t k rX| j d S| j t k r| j d } t | d ƒ t | d ƒ S| j t k rÂ| j d } | t d | d ƒ S| j t k rþ| j d } d t | d ƒ t | d ƒ Sd  S(   Niÿÿÿÿ(   t   sini    i   i   (   t   sympyR3   R   t	   is_NumberR   t   NaNt   Infinityt   NegativeInfinityR"   t   is_negativet   ComplexInfinityt   as_coefficientR   t   NoneR   t   is_AddR*   R+   R,   t   funcR1   R-   t   acoshR   t   atanht   acoth(   t   clsR$   R3   t   i_coefft   xt   m(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   eval_   sF    			+c         G  sy   |  d k  s |  d d k r# t  j St | ƒ } t | ƒ d k rc | d } | | d |  |  d S| |  t |  ƒ Sd S(   sG   
        Returns the next term in the Taylor series expansion.
        i    i   iþÿÿÿi   N(   R   R"   R   t   lenR	   (   t   nRD   t   previous_termsR'   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   taylor_term   s    
c         C  s   |  j  |  j d j ƒ  ƒ S(   Ni    (   R>   R-   t	   conjugate(   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_conjugate¡   s    c         K  sÐ   d d l  m } m } |  j d j r_ | rO t | d <|  j | |  t j f S|  t j f Sn  | r |  j d j | |  j	 ƒ  \ } } n |  j d j	 ƒ  \ } } t
 | ƒ | | ƒ t | ƒ | | ƒ f S(   s@   
        Returns this function as a complex coordinate.
        iÿÿÿÿ(   t   cosR3   i    t   complex(   R4   RM   R3   R-   t   is_realt   Falset   expandR   R"   t   as_real_imagR+   R,   (   R.   t   deept   hintsRM   R3   t   ret   im(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRR   ¤   s    
(c         K  s*   |  j  d | |  \ } } | | t j S(   NRS   (   RR   R   R   (   R.   RS   RT   t   re_partt   im_part(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_expand_complexµ   s    c         K  só   | r" |  j  d j | |  } n |  j  d } d  } | j rS | j ƒ  \ } } nV | j d t ƒ \ } } | t j k	 r© | j	 r© | t j k	 r© | } | d | } n  | d  k	 ré t
 | ƒ t | ƒ t
 | ƒ t | ƒ j d t ƒ St
 | ƒ S(   Ni    t   rationali   t   trig(   R-   RQ   R<   R=   R    t   as_coeff_MulR   R   R   t
   is_IntegerR+   R,   (   R.   RS   RT   R$   RD   t   yt   coefft   terms(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_expand_trig¹   s    	'4c         K  s   t  | ƒ t  | ƒ d S(   Ni   (   R   (   R.   R$   t   kwargs(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_tractableÊ   s    c         K  s   t  | ƒ t  | ƒ d S(   Ni   (   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_expÍ   s    c         K  s$   t  j t | t  j t  j d ƒ S(   Ni   (   R   R   R,   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_coshÐ   s    c         K  s'   t  t j | ƒ } d | d | d S(   Ni   i   (   t   tanhR   R#   (   R.   R$   Rb   t	   tanh_half(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_tanhÓ   s    c         K  s'   t  t j | ƒ } d | | d d S(   Ni   i   (   t   cothR   R#   (   R.   R$   Rb   t	   coth_half(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_coth×   s    c         C  sb   d d l  m } |  j d j | ƒ } | | j k rQ | d | ƒ j | ƒ rQ | S|  j | ƒ Sd  S(   Niÿÿÿÿ(   t   Orderi    i   (   R4   Rl   R-   t   as_leading_termt   free_symbolst   containsR>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_as_leading_termÛ   s
    'c         C  s   |  j  d j r t Sd  S(   Ni    (   R-   RO   R   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_is_realä   s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   t   is_positive(   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_is_positiveè   s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   R9   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_is_negativeì   s    c         C  s   |  j  d } | j r t Sd  S(   Ni    (   R-   t   is_imaginaryR   (   R.   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_is_finiteð   s    	(   R   R   R   R0   R2   t   classmethodRF   t   staticmethodR   RJ   RL   R   RR   RY   Ra   Rc   Rd   Re   Rh   Rk   Rp   Rq   Rs   Rt   Rv   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR+   D   s(   
	1											R,   c           B  s³   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d „  Z	 e
 d „ Z e
 d „ Z e
 d „ Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sª   
    The hyperbolic cosine function, `\frac{e^x + e^{-x}}{2}`.

    * cosh(x) -> Returns the hyperbolic cosine of x

    See Also
    ========

    sinh, tanh, acosh
    i   c         C  s0   | d k r t  |  j d ƒ St |  | ƒ ‚ d  S(   Ni   i    (   R+   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0     s    c         C  sã  d d l  m } t | ƒ } | j r” | t j k r; t j S| t j k rQ t j S| t j k rg t j S| t j k r} t j	 S| j
 rß|  | ƒ SnK| t j k rª t j S| j t j ƒ } | d  k	 rÒ | | ƒ St | ƒ ré |  | ƒ S| j r5t | ƒ \ } } | r5t | ƒ t | ƒ t | ƒ t | ƒ Sn  | j t k r]t d | j d d ƒ S| j t k rw| j d S| j t k r£d t d | j d d ƒ S| j t k rß| j d } | t | d ƒ t | d ƒ Sd  S(   Niÿÿÿÿ(   RM   i   i    i   (   R4   RM   R   R5   R   R6   R7   R8   R"   R   R9   R:   R;   R   R<   R   R=   R*   R,   R+   R>   R1   R   R-   R?   R@   RA   (   RB   R$   RM   RC   RD   RE   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF     sB    		
	+c         G  sy   |  d k  s |  d d k r# t  j St | ƒ } t | ƒ d k rc | d } | | d |  |  d S| |  t |  ƒ Sd  S(   Ni    i   i   iþÿÿÿ(   R   R"   R   RG   R	   (   RH   RD   RI   R'   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   6  s    
c         C  s   |  j  |  j d j ƒ  ƒ S(   Ni    (   R>   R-   RK   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRL   D  s    c         K  sÐ   d d l  m } m } |  j d j r_ | rO t | d <|  j | |  t j f S|  t j f Sn  | r |  j d j | |  j	 ƒ  \ } } n |  j d j	 ƒ  \ } } t
 | ƒ | | ƒ t | ƒ | | ƒ f S(   Niÿÿÿÿ(   RM   R3   i    RN   (   R4   RM   R3   R-   RO   RP   RQ   R   R"   RR   R,   R+   (   R.   RS   RT   RM   R3   RU   RV   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRR   G  s    
(c         K  s*   |  j  d | |  \ } } | | t j S(   NRS   (   RR   R   R   (   R.   RS   RT   RW   RX   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRY   V  s    c         K  só   | r" |  j  d j | |  } n |  j  d } d  } | j rS | j ƒ  \ } } nV | j d t ƒ \ } } | t j k	 r© | j	 r© | t j k	 r© | } | d | } n  | d  k	 ré t
 | ƒ t
 | ƒ t | ƒ t | ƒ j d t ƒ St
 | ƒ S(   Ni    RZ   i   R[   (   R-   RQ   R<   R=   R    R\   R   R   R   R]   R,   R+   (   R.   RS   RT   R$   RD   R^   R_   R`   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRa   Z  s    	'4c         K  s   t  | ƒ t  | ƒ d S(   Ni   (   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRc   k  s    c         K  s   t  | ƒ t  | ƒ d S(   Ni   (   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRd   n  s    c         K  s$   t  j t | t  j t  j d ƒ S(   Ni   (   R   R   R+   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_sinhq  s    c         K  s'   t  t j | ƒ d } d | d | S(   Ni   i   (   Rf   R   R#   (   R.   R$   Rb   Rg   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRh   t  s    c         K  s'   t  t j | ƒ d } | d | d S(   Ni   i   (   Ri   R   R#   (   R.   R$   Rb   Rj   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRk   x  s    c         C  se   d d l  m } |  j d j | ƒ } | | j k rT | d | ƒ j | ƒ rT t j S|  j | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   (	   R4   Rl   R-   Rm   Rn   Ro   R   R   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   |  s
    'c         C  s   |  j  d j r t Sd  S(   Ni    (   R-   RO   R   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRs   …  s    c         C  s   |  j  d } | j r t Sd  S(   Ni    (   R-   Ru   R   (   R.   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRv   ‰  s    	(   R   R   R   R0   Rw   RF   Rx   R   RJ   RL   R   RR   RY   Ra   Rc   Rd   Ry   Rh   Rk   Rp   Rs   Rv   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR,   ö   s"   
.									Rf   c           B  s¹   e  Z d  Z d d „ Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z	 d „  Z
 e d „ Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s¯   
    The hyperbolic tangent function, `\frac{\sinh(x)}{\cosh(x)}`.

    * tanh(x) -> Returns the hyperbolic tangent of x

    See Also
    ========

    sinh, cosh, atanh
    i   c         C  s;   | d k r( t  j t |  j d ƒ d St |  | ƒ ‚ d  S(   Ni   i    i   (   R   R   Rf   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   ›  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   R@   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   ¡  s    c         C  s  d d l  m } t | ƒ } | j r• | t j k r; t j S| t j k rQ t j S| t j k rg t j	 S| t j
 k r} t j
 S| j r|  | ƒ Snx| t j k r« t j S| j t j ƒ } | d  k	 rù t | ƒ rè t j | | ƒ St j | | ƒ St | ƒ r|  | ƒ S| j rgt | ƒ \ } } | rgt | ƒ } | t j k rWt | ƒ St | ƒ Sqgn  | j t k r™| j d } | t d | d ƒ S| j t k rÕ| j d } t | d ƒ t | d ƒ | S| j t k rï| j d S| j t k rd | j d Sd  S(   Niÿÿÿÿ(   t   tani    i   i   (   R4   Rz   R   R5   R   R6   R7   R   R8   t   NegativeOneR"   R9   R:   R;   R   R<   R   R=   R*   Rf   Ri   R>   R1   R-   R   R?   R@   RA   (   RB   R$   Rz   RC   RD   RE   t   tanhm(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   §  sN    			
 c         G  s   d d l  m } |  d k  s, |  d d k r3 t j St | ƒ } d |  d } | |  d ƒ } t |  d ƒ } | | d | | | |  Sd  S(   Niÿÿÿÿ(   t	   bernoullii    i   i   (   R4   R}   R   R"   R   R	   (   RH   RD   RI   R}   R%   t   Bt   F(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   Ü  s    c         C  s   |  j  |  j d j ƒ  ƒ S(   Ni    (   R>   R-   RK   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRL   ì  s    c         K  sö   d d l  m } m } |  j d j r_ | rO t | d <|  j | |  t j f S|  t j f Sn  | r |  j d j | |  j	 ƒ  \ } } n |  j d j	 ƒ  \ } } t
 | ƒ d | | ƒ d } t
 | ƒ t | ƒ | | | ƒ | | ƒ | f S(   Niÿÿÿÿ(   RM   R3   i    RN   i   (   R4   RM   R3   R-   RO   RP   RQ   R   R"   RR   R+   R,   (   R.   RS   RT   RM   R3   RU   RV   t   denom(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRR   ï  s    
(c         K  s*   t  | ƒ t  | ƒ } } | | | | S(   N(   R   (   R.   R$   Rb   t   neg_expt   pos_exp(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRc   þ  s    c         K  s*   t  | ƒ t  | ƒ } } | | | | S(   N(   R   (   R.   R$   Rb   R   R‚   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRd     s    c         K  s-   t  j t | ƒ t t  j t  j d | ƒ S(   Ni   (   R   R   R+   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRy     s    c         K  s-   t  j t t  j t  j d | ƒ t | ƒ S(   Ni   (   R   R   R,   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRe   	  s    c         K  s   d t  | ƒ S(   Ni   (   Ri   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRk     s    c         C  sb   d d l  m } |  j d j | ƒ } | | j k rQ | d | ƒ j | ƒ rQ | S|  j | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   (   R4   Rl   R-   Rm   Rn   Ro   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp     s
    'c         C  s   |  j  d j r t Sd  S(   Ni    (   R-   RO   R   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRq     s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   Rr   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRs     s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   R9   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRt      s    c         C  s   |  j  d } | j r t Sd  S(   Ni    (   R-   RO   R   (   R.   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRv   $  s    	(   R   R   R   R0   R2   Rw   RF   Rx   R   RJ   RL   R   RR   Rc   Rd   Ry   Re   Rk   Rp   Rq   Rs   Rt   Rv   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRf     s$   
5											Ri   c           B  s§   e  Z d  Z d d „ Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z	 d „  Z
 e d „ Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   
    The hyperbolic cotangent function, `\frac{\cosh(x)}{\sinh(x)}`.

    * coth(x) -> Returns the hyperbolic cotangent of x
    i   c         C  s8   | d k r% d t  |  j d ƒ d St |  | ƒ ‚ d  S(   Ni   iÿÿÿÿi    i   (   R+   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   1  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   RA   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   7  s    c         C  s  d d l  m } t | ƒ } | j r• | t j k r; t j S| t j k rQ t j S| t j k rg t j	 S| t j
 k r} t j S| j r|  | ƒ Snx| t j k r« t j S| j t j ƒ } | d  k	 rù t | ƒ rç t j | | ƒ St j | | ƒ St | ƒ r|  | ƒ S| j rgt | ƒ \ } } | rgt | ƒ } | t j k rWt | ƒ St | ƒ Sqgn  | j t k r™| j d } t d | d ƒ | S| j t k rÕ| j d } | t | d ƒ t | d ƒ S| j t k ród | j d S| j t k r| j d Sd  S(   Niÿÿÿÿ(   t   coti    i   i   (   R4   Rƒ   R   R5   R   R6   R7   R   R8   R{   R"   R:   R9   R;   R   R<   R   R=   R*   Ri   Rf   R>   R1   R-   R   R?   R@   RA   (   RB   R$   Rƒ   RC   RD   RE   t   cothm(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   =  sN    			
 c         G  s™   d d l  m } |  d k r* d t | ƒ S|  d k  sF |  d d k rM t j St | ƒ } | |  d ƒ } t |  d ƒ } d |  d | | | |  Sd  S(   Niÿÿÿÿ(   R}   i    i   i   (   R4   R}   R   R   R"   R	   (   RH   RD   RI   R}   R~   R   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   r  s    c         C  s   |  j  |  j d j ƒ  ƒ S(   Ni    (   R>   R-   RK   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRL   ‚  s    c         K  s÷   d d l  m } m } |  j d j r_ | rO t | d <|  j | |  t j f S|  t j f Sn  | r |  j d j | |  j	 ƒ  \ } } n |  j d j	 ƒ  \ } } t
 | ƒ d | | ƒ d } t
 | ƒ t | ƒ | | | ƒ | | ƒ | f S(   Niÿÿÿÿ(   RM   R3   i    RN   i   (   R4   RM   R3   R-   RO   RP   RQ   R   R"   RR   R+   R,   (   R.   RS   RT   RM   R3   RU   RV   R€   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRR   …  s    
(c         K  s*   t  | ƒ t  | ƒ } } | | | | S(   N(   R   (   R.   R$   Rb   R   R‚   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRc   ”  s    c         K  s*   t  | ƒ t  | ƒ } } | | | | S(   N(   R   (   R.   R$   Rb   R   R‚   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRd   ˜  s    c         K  s.   t  j t t  j t  j d | ƒ t | ƒ S(   Ni   (   R   R   R+   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRy   œ  s    c         K  s.   t  j t | ƒ t t  j t  j d | ƒ S(   Ni   (   R   R   R,   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRe   Ÿ  s    c         K  s   d t  | ƒ S(   Ni   (   Rf   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRh   ¢  s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   Rr   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRs   ¥  s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   R9   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRt   ©  s    c         C  sf   d d l  m } |  j d j | ƒ } | | j k rU | d | ƒ j | ƒ rU d | S|  j | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   (   R4   Rl   R-   Rm   Rn   Ro   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   ­  s
    '(   R   R   R   R0   R2   Rw   RF   Rx   R   RJ   RL   R   RR   Rc   Rd   Ry   Re   Rh   Rs   Rt   Rp   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRi   *  s    5								t   ReciprocalHyperbolicFunctionc           B  sª   e  Z d  Z d Z d Z d Z e d „  ƒ Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z e d	 „ Z d
 „  Z e d „ Z d „  Z d „  Z d „  Z RS(   s=   Base class for reciprocal functions of hyperbolic functions. c         C  sŽ   | j  ƒ  r8 |  j r  |  | ƒ S|  j r8 |  | ƒ Sn  |  j j | ƒ } t | d ƒ rv | j ƒ  |  k rv | j d S| d  k	 rŠ d | S| S(   NR2   i    i   (	   t   could_extract_minus_signt   _is_event   _is_oddt   _reciprocal_ofRF   t   hasattrR2   R-   R<   (   RB   R$   t   t(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   ¿  s    		!c         O  s,   |  j  |  j d ƒ } t | | ƒ | | Ž  S(   Ni    (   R‰   R-   t   getattr(   R.   t   method_nameR-   Rb   t   o(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _call_reciprocalÌ  s    c         O  s-   |  j  | | | Ž } | d  k	 r) d | S| S(   Ni   (   R   R<   (   R.   R   R-   Rb   R‹   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _calculate_reciprocalÑ  s    c         C  s?   |  j  | | ƒ } | d  k	 r; | |  j | ƒ k r; d | Sd  S(   Ni   (   R   R<   R‰   (   R.   R   R$   R‹   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _rewrite_reciprocal×  s    !c         K  s   |  j  d | ƒ S(   NRd   (   R‘   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRd   Þ  s    c         K  s   |  j  d | ƒ S(   NRc   (   R‘   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRc   á  s    c         K  s   |  j  d | ƒ S(   NRh   (   R‘   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRh   ä  s    c         K  s   |  j  d | ƒ S(   NRk   (   R‘   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRk   ç  s    c         K  s$   d |  j  |  j d ƒ j | |  S(   Ni   i    (   R‰   R-   RR   (   R.   RS   RT   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRR   ê  s    c         C  s   |  j  |  j d j ƒ  ƒ S(   Ni    (   R>   R-   RK   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRL   í  s    c         K  s*   |  j  d t |  \ } } | t j | S(   NRS   (   RR   R   R   R   (   R.   RS   RT   RW   RX   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRY   ð  s    c         C  s!   d |  j  |  j d ƒ j | ƒ S(   Ni   i    (   R‰   R-   Rp   (   R.   RD   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   ô  s    c         C  s   |  j  |  j d ƒ j S(   Ni    (   R‰   R-   RO   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRq   ÷  s    c         C  s   d |  j  |  j d ƒ j S(   Ni   i    (   R‰   R-   t	   is_finite(   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRv   ú  s    N(   R   R   R   R<   R‰   R‡   Rˆ   Rw   RF   R   R   R‘   Rd   Rc   Rh   Rk   R   RR   RL   RY   Rp   Rq   Rv   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR…   ·  s$   										t   cschc           B  s_   e  Z d  Z e Z e Z d d „ Z e e	 d „  ƒ ƒ Z
 d „  Z d „  Z d „  Z d „  Z RS(   sÀ   
    The hyperbolic cosecant function, `\frac{2}{e^x - e^{-x}}`

    * csch(x) -> Returns the hyperbolic cosecant of x

    See Also
    ========

    sinh, cosh, tanh, sech, asinh, acosh
    i   c         C  sB   | d k r/ t  |  j d ƒ t |  j d ƒ St |  | ƒ ‚ d S(   s?   
        Returns the first derivative of this function
        i   i    N(   Ri   R-   R“   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0     s    #c         G  s   d d l  m } |  d k r* d t | ƒ S|  d k  sF |  d d k rM t j St | ƒ } | |  d ƒ } t |  d ƒ } d d d |  | | | |  Sd S(   sF   
        Returns the next term in the Taylor series expansion
        iÿÿÿÿ(   R}   i    i   i   N(   R4   R}   R   R   R"   R	   (   RH   RD   RI   R}   R~   R   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ     s    c         K  s#   t  j t | t  j t  j d ƒ S(   Ni   (   R   R   R,   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRe   )  s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   Rr   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRs   ,  s    c         C  s"   |  j  d j r |  j  d j Sd  S(   Ni    (   R-   RO   R9   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRt   0  s    c         C  s)   d d  l  j } | j |  j d j ƒ  ƒ S(   Niÿÿÿÿi    (   t   sage.allt   allR“   R-   t   _sage_(   R.   t   sage(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR–   4  s    (   R   R   R   R+   R‰   R   Rˆ   R0   Rx   R   RJ   Re   Rs   Rt   R–   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR“   þ  s   
				t   sechc           B  sV   e  Z d  Z e Z e Z d d „ Z e e	 d „  ƒ ƒ Z
 d „  Z d „  Z d „  Z RS(   sÂ   
    The hyperbolic secant function, `\frac{2}{e^x + e^{-x}}`

    * sech(x) -> Returns the hyperbolic secant of x

    See Also
    ========

    sinh, cosh, tanh, coth, csch, asinh, acosh
    i   c         C  sB   | d k r/ t  |  j d ƒ t |  j d ƒ St |  | ƒ ‚ d  S(   Ni   i    (   Rf   R-   R˜   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   H  s    #c         G  s_   d d l  m } |  d k  s, |  d d k r3 t j St | ƒ } | |  ƒ t |  ƒ | |  Sd  S(   Niÿÿÿÿ(   t   euleri    i   i   (   t%   sympy.functions.combinatorial.numbersR™   R   R"   R   R	   (   RH   RD   RI   R™   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   N  s
    c         K  s#   t  j t | t  j t  j d ƒ S(   Ni   (   R   R   R+   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRy   X  s    c         C  s   |  j  d j r t Sd  S(   Ni    (   R-   RO   R   (   R.   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRs   [  s    c         C  s)   d d  l  j } | j |  j d j ƒ  ƒ S(   Niÿÿÿÿi    (   R”   R•   R˜   R-   R–   (   R.   R—   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR–   _  s    (   R   R   R   R,   R‰   R   R‡   R0   Rx   R   RJ   Ry   Rs   R–   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR˜   9  s   
			t   InverseHyperbolicFunctionc           B  s   e  Z d  Z RS(   s,   Base class for inverse hyperbolic functions.(   R   R   R   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR›   i  s   R1   c           B  s\   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d „  Z	 d „  Z
 d d „ Z RS(   sž   
    The inverse hyperbolic sine function.

    * asinh(x) -> Returns the inverse hyperbolic sine of x

    See Also
    ========

    acosh, atanh, sinh
    i   c         C  s<   | d k r) d t  |  j d d d ƒ St |  | ƒ ‚ d  S(   Ni   i    i   (   R   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   {  s    c         C  s<  d d l  m } t | ƒ } | j rÛ | t j k r; t j S| t j k rQ t j S| t j k rg t j S| t j k r} t j S| t j	 k r  t
 t d ƒ d ƒ S| t j k rÃ t
 t d ƒ d ƒ S| j r8|  | ƒ Sn] | t j k rñ t j S| j t j ƒ } | d  k	 r t j | | ƒ St | ƒ r8|  | ƒ Sd  S(   Niÿÿÿÿ(   t   asini   i   (   R4   Rœ   R   R5   R   R6   R7   R8   R"   R   R   R   R{   R9   R:   R;   R   R<   R   (   RB   R$   Rœ   RC   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF     s0    		c         G  sÈ   |  d k  s |  d d k r# t  j St | ƒ } t | ƒ d k r| |  d k r| | d } | |  d d |  |  d | d S|  d d } t t  j | ƒ } t | ƒ } d | | | | |  |  Sd  S(   Ni    i   iþÿÿÿi   iÿÿÿÿ(   R   R"   R   RG   R
   R#   R	   (   RH   RD   RI   R'   t   kt   RR   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   ¡  s    
%c         C  sb   d d l  m } |  j d j | ƒ } | | j k rQ | d | ƒ j | ƒ rQ | S|  j | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   (   R4   Rl   R-   Rm   Rn   Ro   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   ±  s
    'c         K  s   t  | t | d d ƒ ƒ S(   Ni   i   (   R   R   (   R.   RD   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   _eval_rewrite_as_logº  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   R+   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   ½  s    (   R   R   R   R0   Rw   RF   Rx   R   RJ   Rp   RŸ   R2   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR1   o  s   
 			R?   c           B  s\   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d „  Z	 d „  Z
 d d „ Z RS(   s¢   
    The inverse hyperbolic cosine function.

    * acosh(x) -> Returns the inverse hyperbolic cosine of x

    See Also
    ========

    asinh, atanh, cosh
    i   c         C  s<   | d k r) d t  |  j d d d ƒ St |  | ƒ ‚ d  S(   Ni   i    i   (   R   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   Ð  s    c         C  sß  t  | ƒ } | j r® | t j k r+ t j S| t j k rA t j S| t j k rW t j S| t j k rx t j t j d S| t j	 k rŽ t j S| t j
 k r® t j t j Sn  | j rfi t t j d t d ƒ ƒ t j 6t t j d t d ƒ ƒ t j 6t j d t j 6d t j d t j 6t j d t d ƒ d 6d t j d t d ƒ d 6t j d d t d ƒ 6d t j d d t d ƒ 6t j d t d ƒ d 6d t j d t d ƒ d 6d t j d t d ƒ d t d ƒ 6d	 t j d t d ƒ d t d ƒ 6t j d
 t d t d ƒ ƒ d 6d	 t j d
 t d t d ƒ ƒ d 6d t j d
 t d t d ƒ ƒ d 6d t j d
 t d t d ƒ ƒ d 6t j d d t d ƒ d t d ƒ 6d t j d d t d ƒ d t d ƒ 6t j d t d ƒ d d 6d t j d t d ƒ d d 6} | | k rf| j r[| | t j S| | Sn  | t j k r|t j S| t j t j k r«t j t j t j d S| t j t j k rÛt j t j t j d Sd  S(   Ni   i   i   i   iÿÿÿÿi   i   i   i   i   i   i   i   (   R   R5   R   R6   R7   R8   R"   R   R   R   R{   t	   is_numberR   R   R#   RO   R:   (   RB   R$   t	   cst_table(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   Ö  s\    		!#&'"'&'&+$	c         G  så   |  d k r t  j t  j d S|  d k  s: |  d d k rA t  j St | ƒ } t | ƒ d k r™ |  d k r™ | d } | |  d d |  |  d | d S|  d d } t t  j | ƒ } t | ƒ } | | t  j | |  |  Sd  S(   Ni    i   iþÿÿÿi   (	   R   R   R   R"   R   RG   R
   R#   R	   (   RH   RD   RI   R'   R   Rž   R   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ     s    
$c         C  sp   d d l  m } |  j d j | ƒ } | | j k r_ | d | ƒ j | ƒ r_ t j t j d S|  j	 | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   i   (
   R4   Rl   R-   Rm   Rn   Ro   R   R   R   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp     s
    'c         K  s&   t  | t | d ƒ t | d ƒ ƒ S(   Ni   (   R   R   (   R.   RD   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRŸ   '  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   R,   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   *  s    (   R   R   R   R0   Rw   RF   Rx   R   RJ   Rp   RŸ   R2   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR?   Ä  s   
6			R@   c           B  s\   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d „  Z	 d „  Z
 d d „ Z RS(   s¤   
    The inverse hyperbolic tangent function.

    * atanh(x) -> Returns the inverse hyperbolic tangent of x

    See Also
    ========

    asinh, acosh, tanh
    i   c         C  s6   | d k r# d d |  j  d d St |  | ƒ ‚ d  S(   Ni   i    i   (   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   =  s    c         C  sd  d d l  m } t | ƒ } | j r× | t j k r; t j S| t j k rQ t j S| t j k rg t j S| t j	 k r} t j
 S| t j k rž t j | | ƒ S| t j
 k r¿ t j | | ƒ S| j r`|  | ƒ Sn‰ | t j k rd d l m } t j | t j d t j d ƒ S| j t j ƒ } | d  k	 rHt j | | ƒ St | ƒ r`|  | ƒ Sd  S(   Niÿÿÿÿ(   t   atan(   t   AccumBoundsi   (   R4   R¢   R   R5   R   R6   R"   R   R7   R{   R8   R   R9   R:   t   sympy.calculus.utilR£   R   R;   R<   R   (   RB   R$   R¢   R£   RC   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   C  s2    		#c         G  s?   |  d k  s |  d d k r# t  j St | ƒ } | |  |  Sd  S(   Ni    i   (   R   R"   R   (   RH   RD   RI   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   d  s    c         C  sb   d d l  m } |  j d j | ƒ } | | j k rQ | d | ƒ j | ƒ rQ | S|  j | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   (   R4   Rl   R-   Rm   Rn   Ro   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   m  s
    'c         K  s    t  d | ƒ t  d | ƒ d S(   Ni   i   (   R   (   R.   RD   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRŸ   v  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   Rf   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   y  s    (   R   R   R   R0   Rw   RF   Rx   R   RJ   Rp   RŸ   R2   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR@   1  s   
!			RA   c           B  s\   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d „  Z	 d „  Z
 d d „ Z RS(   su   
    The inverse hyperbolic cotangent function.

    * acoth(x) -> Returns the inverse hyperbolic cotangent of x
    i   c         C  s6   | d k r# d d |  j  d d St |  | ƒ ‚ d  S(   Ni   i    i   (   R-   R   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   ‡  s    c         C  s.  d d l  m } t | ƒ } | j rÌ | t j k r; t j S| t j k rQ t j S| t j k rg t j S| t j k rˆ t j	 t j
 d S| t j k rž t j S| t j k r´ t j S| j r*|  | ƒ Sn^ | t j k râ t j S| j t j
 ƒ } | d  k	 rt j
 | | ƒ St | ƒ r*|  | ƒ Sd  S(   Niÿÿÿÿ(   t   acoti   (   R4   R¥   R   R5   R   R6   R7   R"   R8   R   R   R   R{   R9   R:   R;   R<   R   (   RB   R$   R¥   RC   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF     s0    		c         G  s]   |  d k r t  j t  j d S|  d k  s: |  d d k rA t  j St | ƒ } | |  |  Sd  S(   Ni    i   (   R   R   R   R"   R   (   RH   RD   RI   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRJ   ­  s    c         C  sp   d d l  m } |  j d j | ƒ } | | j k r_ | d | ƒ j | ƒ r_ t j t j d S|  j	 | ƒ Sd  S(   Niÿÿÿÿ(   Rl   i    i   i   (
   R4   Rl   R-   Rm   Rn   Ro   R   R   R   R>   (   R.   RD   Rl   R$   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRp   ¸  s
    'c         K  s(   t  d d | ƒ t  d d | ƒ d S(   Ni   i   (   R   (   R.   RD   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRŸ   Á  s    c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   Ri   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   Ä  s    (   R   R   R   R0   Rw   RF   Rx   R   RJ   Rp   RŸ   R2   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRA   €  s    
			t   asechc           B  sS   e  Z d  Z d d „ Z e d „  ƒ Z e e d „  ƒ ƒ Z d d „ Z	 d „  Z
 RS(   s²  
    The inverse hyperbolic secant function.

    * asech(x) -> Returns the inverse hyperbolic secant of x

    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/

    i   c         C  sF   | d k r3 |  j  d } d | t d | d ƒ St |  | ƒ ‚ d  S(   Ni   i    iÿÿÿÿi   (   R-   R   R   (   R.   R/   t   z(    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   ñ  s    c         C  sA  t  | ƒ } | j r¹ | t j k r+ t j S| t j k rL t j t j d S| t j k rm t j t j d S| t j k rƒ t j S| t j	 k r™ t j S| t j
 k r¹ t j t j Sn  | j rûi t j t j d t d t d ƒ ƒ t j 6t j t j d t d t d ƒ ƒ t j 6t j d t d ƒ t d ƒ 6d t j d t d ƒ t d ƒ 6t j d t d d t d ƒ ƒ 6d t j d t d d t d ƒ ƒ 6t j d	 d t d t d ƒ ƒ 6d
 t j d	 d t d t d ƒ ƒ 6t j d d t d ƒ 6d t j d d t d ƒ 6t j d t d ƒ d 6d t j d d t d ƒ 6t j d t d ƒ 6d t j d t d ƒ 6d t j d t d d t d ƒ ƒ 6d
 t j d t d d t d ƒ ƒ 6t j d t d ƒ 6d t j d t d ƒ 6d t j d	 t d d t d ƒ ƒ 6d t j d	 t d d t d ƒ ƒ 6d t j d d t d ƒ 6d t j d d t d ƒ 6d t j d t d ƒ t d ƒ 6d
 t j d t d ƒ t d ƒ 6} | | k rû| j rð| | t j S| | Sn  | t j k r=d d l m } t j | t j d t j d ƒ Sd  S(   Ni   i   i   i   i   i
   i   i	   i   i   iþÿÿÿi   i   iÿÿÿÿ(   R£   (   R   R5   R   R6   R7   R   R   R8   R"   R   R{   R    R   R   RO   R:   R¤   R£   (   RB   R$   R¡   R£   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   ø  s^    		--""'"&&'&'"&	c         G  sñ   |  d k r t  d | ƒ S|  d k  s6 |  d d k r= t j St | ƒ } t | ƒ d k r™ |  d k r™ | d } | |  d d |  d d | d d S|  d } t t j | ƒ |  } t | ƒ |  d |  d } d | | | |  d Sd  S(   Ni    i   i   iþÿÿÿi   iÿÿÿÿ(   R   R   R"   R   RG   R
   R#   R	   (   RH   RD   RI   R'   R   Rž   R   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   expansion_term/  s    
(
c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   R˜   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   A  s    c         K  s2   t  d | t d | d ƒ t d | d ƒ ƒ S(   Ni   (   R   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRŸ   G  s    (   R   R   R   R0   Rw   RF   Rx   R   R¨   R2   RŸ   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR¦   Ë  s   $7t   acschc           B  s>   e  Z d  Z d d „ Z e d „  ƒ Z d d „ Z d „  Z RS(   s¸  
    The inverse hyperbolic cosecant function.

    * acsch(x) -> Returns the inverse hyperbolic cosecant of x

    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

    References
    ==========

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

    i   c         C  sN   | d k r; |  j  d } d | d t d d | d ƒ St |  | ƒ ‚ d  S(   Ni   i    iÿÿÿÿi   (   R-   R   R   (   R.   R/   R§   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR0   l  s    "c         C  sã  t  | ƒ } | j r· | t j k r+ t j S| t j k rA t j S| t j k rW t j S| t j k rm t j S| t j k r t	 d t
 d ƒ ƒ S| t j k r· t	 d t
 d ƒ ƒ Sn  | j r±i t j d t j 6t j d t j t
 d ƒ t
 d ƒ 6t j d t j d t
 d ƒ 6t j d t j d t
 d t
 d ƒ ƒ 6t j d t j d 6t j d t j t
 d d t
 d ƒ ƒ 6t j d t j t
 d ƒ 6d	 t j d t j t
 d ƒ d 6t j d
 t j d t
 d
 ƒ 6d	 t j d t j d t
 d t
 d ƒ ƒ 6d t j d t j t
 d d t
 d ƒ ƒ 6d t j d t j t
 d ƒ t
 d ƒ 6t j t	 d t
 d ƒ d ƒ t d ƒ 6} | | k r±| | t j Sn  | t j k rÇt j St | ƒ rß|  | ƒ Sd  S(   Ni   i   i   i   i
   i   i   i   iýÿÿÿi   iþÿÿÿiûÿÿÿ(   R   R5   R   R6   R7   R"   R8   R:   R   R   R   R{   R    R   R   R   (   RB   R$   R¡   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRF   s  sF    		& **# --),c         C  s   t  S(   s7   
        Returns the inverse of this function.
        (   R“   (   R.   R/   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR2   Ÿ  s    c         K  s$   t  d | t d | d d ƒ ƒ S(   Ni   i   (   R   R   (   R.   R$   Rb   (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyRŸ   ¥  s    (   R   R   R   R0   Rw   RF   R2   RŸ   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyR©   K  s
   ,N(&   t
   __future__R    R   t
   sympy.coreR   R   R   t   sympy.core.addR   t   sympy.core.functionR   R   R   t(   sympy.functions.combinatorial.factorialsR	   R
   t&   sympy.functions.elementary.exponentialR   R   t(   sympy.functions.elementary.miscellaneousR   R   R   R*   R+   R,   Rf   Ri   R…   R“   R˜   R›   R1   R?   R@   RA   R¦   R©   (    (    (    sD   lib/python2.7/site-packages/sympy/functions/elementary/hyperbolic.pyt   <module>   s.   		!²™›G;0UmOK€