
    Ed                    N   d dl mZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZ d d
lm Z  d dl!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d ZB G d de          ZCd ZDd>dZE G d deC          ZF G d d eC          ZG G d! d"eC          ZH G d# d$eC          ZI G d% d&eC          ZJ G d' d(eJ          ZK G d) d*eJ          ZL G d+ d,e          ZM G d- d.e          ZN G d/ d0eN          ZO G d1 d2eN          ZP G d3 d4eN          ZQ G d5 d6eN          ZR G d7 d8eN          ZS G d9 d:eN          ZT G d; d<eN          ZUd=S )?    )Tuple)Add)sympifycacheit)Expr)FunctionArgumentIndexError	PoleError
expand_mul)	fuzzy_notfuzzy_or	FuzzyBool	fuzzy_and)Mod)igcdexRationalpiIntegerFloat)NeEq)S)SymbolDummy)	factorialRisingFactorial)	bernoullieuler)argimre)logexp)floor)sqrtMinMax)	Piecewise)And)	factorint)symmetric_poly)numbered_symbolsc                 n    t          | t                    rdS |                     t          j                  S )z; Helper to extract symbolic coefficient for imaginary unit N)
isinstancer   as_coefficientr   ImaginaryUnit)r   s    Hlib/python3.11/site-packages/sympy/functions/elementary/trigonometric.py_imaginary_unit_as_coefficientr2      s/    #u 3t!!!/222    c                   J    e Zd ZdZdZej        fZd Zd Z	d	dZ
d	dZd
dZdS )TrigonometricFunctionz(Base class for trigonometric functions. Tc                      | j         | j         }|j         | j         k    r7|j        d         j        r!t          |j        d         j                  rdS d S d S |j        S Nr   F)funcargsis_rationalr   is_zeroselfss     r1   _eval_is_rationalz'TrigonometricFunction._eval_is_rational1   so    DIty!6TY 	!vay$ 16!93D)E)E u    = r3   c                     | j         | j         }|j         | j         k    r\t          | j        d         j                  r| j        d         j        rdS t          | j        d                   }|	|j        rdS d S d S |j        S Nr   FT)r8   r9   r   r;   is_algebraic	_pi_coeffr:   )r=   r>   pi_coeffs      r1   _eval_is_algebraicz(TrigonometricFunction._eval_is_algebraic9   s    DIty!6TY 	"1-.. 49Q<3L u 1..H (< t    >!r3   c                 J     | j         dd|i|\  }}||t          j        z  z   S )Ndeep )as_real_imagr   r0   )r=   rG   hintsre_partim_parts        r1   _eval_expand_complexz*TrigonometricFunction._eval_expand_complexD   s6    ,4,@@$@%@@000r3   c                 ^   | j         d         j        rE|r*d|d<    | j         d         j        |fi |t          j        fS | j         d         t          j        fS |r/ | j         d         j        |fi |                                \  }}n"| j         d                                         \  }}||fS )Nr   Fcomplex)r9   is_extended_realexpandr   ZerorI   )r=   rG   rJ   r!   r    s        r1   _as_real_imagz#TrigonometricFunction._as_real_imagH   s    9Q<( 	. .#(i +	!+D::E::AFCC	!af-- 	1(TYq\(7777DDFFFBYq\..00FBBxr3   Nc                     t          | j        d                   }|t          |j                  d         }|                    |          st
          j        S ||k    r|S ||j        v r|j        r0|                    |          \  }}||k    r|t          |          z  S |j
        rJ|                    |          \  }}|                    |d          \  }}||k    r|t          |          z  S t          d          )Nr   F)as_Addz%Use the periodicity function instead.)r   r9   tuplefree_symbolshasr   rR   is_Mulas_independentabsis_AddNotImplementedError)r=   general_periodsymbolfghas          r1   _periodzTrigonometricFunction._periodU   s   ty|$$ 	.1>**1-FuuV}} 	6M; 	"!!Q^# 
	1x 1''//1; 1)#a&&00x 1''//1''u'==1; 1)#a&&00!"IJJJr3   TN)__name__
__module____qualname____doc__
unbranchedr   ComplexInfinity_singularitiesr?   rE   rM   rS   rd   rH   r3   r1   r5   r5   +   s        22J')N! ! !	" 	" 	"1 1 1 1   K K K K K Kr3   r5   c                    t           j        }g }t          j        |           D ]@}|                    t
                    }|r|j        r||z  }+|                    |           A|t           j        u r| t           j        fS |t           j        z  }||z
  }|j	        sd|z  j	        r |j
        du rt          ||t
          z  gz    |fS | t           j        fS )a  
    Split ARG into two parts, a "rest" and a multiple of $\pi$.
    This assumes ARG to be an Add.
    The multiple of $\pi$ returned in the second position is always a Rational.

    Examples
    ========

    >>> from sympy.functions.elementary.trigonometric import _peeloff_pi
    >>> from sympy import pi
    >>> from sympy.abc import x, y
    >>> _peeloff_pi(x + pi/2)
    (x, 1/2)
    >>> _peeloff_pi(x + 2*pi/3 + pi*y)
    (x + pi*y + pi/6, 1/2)

       F)r   rR   r   	make_argscoeffr   r:   appendHalf
is_integeris_even)r   rD   
rest_termsrc   Km1m2s          r1   _peeloff_pirz   o   s    $ vHJ]3 ! !GGBKK 	! 	!MHHa    16 AF{
QV
B	BB	} 0!B$* 0rzU/B 0Z2b5')+R//;r3      c                    | t           u rt          j        S | st          j        S | j        r'|                     t                     }|r|                                \  }}|j        rt          |          dz  }|dk    rrt          t          t          |d                                                               }d|z  }||z  }t          |          }	|	|k    rt          |	|          }||z  }n!t          t          |                    }||z  }|j        r6|dz  }
|
dk    r|S |
s"|j        t          j        S t!          d          S |
|z  S |S dS | j        rt          j        S dS )a6  
    When arg is a Number times $\pi$ (e.g. $3\pi/2$) then return the Number
    normalized to be in the range $[0, 2]$, else `None`.

    When an even multiple of $\pi$ is encountered, if it is multiplying
    something with known parity then the multiple is returned as 0 otherwise
    as 2.

    Examples
    ========

    >>> from sympy.functions.elementary.trigonometric import _pi_coeff
    >>> from sympy import pi, Dummy
    >>> from sympy.abc import x
    >>> _pi_coeff(3*x*pi)
    3*x
    >>> _pi_coeff(11*pi/7)
    11/7
    >>> _pi_coeff(-11*pi/7)
    3/7
    >>> _pi_coeff(4*pi)
    0
    >>> _pi_coeff(5*pi)
    1
    >>> _pi_coeff(5.0*pi)
    1
    >>> _pi_coeff(5.5*pi)
    3/2
    >>> _pi_coeff(2 + pi)

    >>> _pi_coeff(2*Dummy(integer=True)*pi)
    2
    >>> _pi_coeff(2*Dummy(even=True)*pi)
    0

    r{   r   ro   N)r   r   OnerR   rY   rq   as_coeff_Mulis_Floatr[   introundr"   evalfr   rt   ru   r   r;   )r   cyclescxcxr`   pmcmic2s              r1   rC   rC      s   J by "u  v	 YYr]] 	??$$DAqz FFQJ6 
U3q!99??#4#455666A1A1BBABw !$QNNqS Q((A1B| 	 U7  H  y & v"1::%a4KI5	 	6 
 v r3   c                       e Zd ZdZd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 Zd Zd Zd Zd Zd Zd Zd!dZd Zd"dZd Zd Zd Zd ZdS )#sina  
    The sine function.

    Returns the sine of x (measured in radians).

    Explanation
    ===========

    This function will evaluate automatically in the
    case $x/\pi$ is some rational number [4]_.  For example,
    if $x$ is a multiple of $\pi$, $\pi/2$, $\pi/3$, $\pi/4$, and $\pi/6$.

    Examples
    ========

    >>> from sympy import sin, pi
    >>> from sympy.abc import x
    >>> sin(x**2).diff(x)
    2*x*cos(x**2)
    >>> sin(1).diff(x)
    0
    >>> sin(pi)
    0
    >>> sin(pi/2)
    1
    >>> sin(pi/6)
    1/2
    >>> sin(pi/12)
    -sqrt(2)/4 + sqrt(6)/4


    See Also
    ========

    csc, cos, sec, tan, cot
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Sin
    .. [4] http://mathworld.wolfram.com/TrigonometryAngles.html

    Nc                 >    |                      dt          z  |          S Nro   rd   r   r=   r_   s     r1   periodz
sin.period      ||AbD&)))r3   r{   c                 b    |dk    rt          | j        d                   S t          | |          Nr{   r   )cosr9   r	   r=   argindexs     r1   fdiffz	sin.fdiff  s2    q= 	5ty|$$$$T8444r3   c           
      n   ddl m} ddlm} |j        rS|t
          j        u rt
          j        S |j        rt
          j        S |t
          j	        t
          j
        fv r |dd          S |t
          j        u rt
          j        S t          ||          rddlm} |j        |j        }}t#          |dt$          z  z            }|t
          j
        ur||dz  t$          z  z
  }|t
          j	        ur||dz  t$          z  z
  } |||                               |t$          dz  t$          t)          dd          z                      t
          j        urm |||                               |t$          t)          d	d          z  t$          t)          d
d          z                      t
          j        ur |dd          S  |||                               |t$          dz  t$          t)          dd          z                      t
          j        ur4 |t-          t/          |          t/          |                    d          S  |||                               |t$          t)          d	d          z  t$          t)          dd          z                      t
          j        ur4 |dt1          t/          |          t/          |                              S  |t-          t/          |          t/          |                    t1          t/          |          t/          |                              S t          ||          r|                    |           S |                                r | |            S t7          |          }|ddlm}	 t
          j         |	|          z  S t?          |          }
|
|
j         rt
          j        S d|
z  j         r%|
j!        du rt
          j"        |
t
          j#        z
  z  S |
j$        s|
t$          z  }||k    r | |          S d S |
j$        r|
dz  }|dk    r | |dz  t$          z             S d|z  dk    r | d|z
  t$          z            S |
t)          d	d          z   dz  t$          z  }tK          |          }t          |tJ                    s|S |
t$          z  |k    r | |
t$          z            S d S |j&        r]tO          |          \  }}|rI|t$          z  }t/          |          tK          |          z  tK          |          t/          |          z  z   S |j        rt
          j        S t          |tP                    r|j)        d         S t          |tT                    r%|j)        d         }|tW          d|dz  z             z  S t          |tX                    r%|j)        \  }}|tW          |dz  |dz  z             z  S t          |tZ                    r"|j)        d         }tW          d|dz  z
            S t          |t\                    r+|j)        d         }dtW          dd|dz  z  z             |z  z  S t          |t^                    r|j)        d         }d|z  S t          |t`                    r%|j)        d         }tW          dd|dz  z  z
            S d S )Nr   AccumBoundsSetExprr{   	FiniteSetro               )sinhF)1!sympy.calculus.accumulationboundsr   sympy.sets.setexprr   	is_Numberr   NaNr;   rR   InfinityNegativeInfinityrl   r.   sympy.sets.setsr   minmaxr$   r   intersectionr   EmptySetr&   r   r'   
_eval_funccould_extract_minus_signr2   %sympy.functions.elementary.hyperbolicr   r0   rC   rt   ru   NegativeOners   is_Rationalr   r\   rz   asinr9   atanr%   atan2acosacotacscasec)clsr   r   r   r   r   r   di_coeffr   rD   nargr   resultr   ys                   r1   evalzsin.eval  s   AAAAAA......= 	*ae| *u *vQ%788 *"{2q)))!## 	5Lc;'' 	'111111wCc1R4j!!A!,, #AaCFl!*$ #AaCFl{3$$11))BqD"XaQR^^BS2T2TUU:& 9KS))66yyHQPQNNAR8Aq>>)8+ 8+ , ,34:>9 #{2q)))S#&&33IIbdBxPQST~~DU4V4VWW:& 9"{3s3xxS#:#:A>>>S#&&33IIb!Q>OQST\]^`aTbTbQb4c4cdd z* 9"{2s3s88SXX'>'>???"{3s3xxS#:#: #CHHc#hh 7 79 9 9W%% 	'>>#&&&'')) 	CII:055 	1BBBBBB?44==00S>> 	" v(
& > #u, >=8af+<==' {3; %3t99$t # qLq5 ,CQ
OO++Q37 +3Arz??*!HQNN2a7;T!&#.. "!MB;#% ,3x{+++t: 	5s##DAq 5bD1vvc!ff}s1vvc!ff}44; 	6Mc4   	8A;c4   	$AT!ad(^^##c5!! 	'8DAqT!Q$A+&&&&c4   	"AAqD>>!c4   	*Ad1qAv:&&q())c4   	AQ3Jc4   	$AAadF
###	$ 	$r3   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 t           j        | dz  z  || z  z  t          |           z  S Nr   ro   r{   r   rR   r   lenr   r   nr   previous_termsr   s       r1   taylor_termzsin.taylor_term       q5 		?AEQJ 		?6M

A>""Q& ?"2&r!Q$w1q5	**}q!t,QT1)A,,>>r3   r   c                 8   | j         d         }|#|                    t          |          |          }|                    |d                              t          j        t          j                  rt          d| z            t          j	        | ||||          S Nr   zCannot expand %s around 0)r   logxcdir
r9   subsr"   rX   r   r   rl   r
   r   _eval_nseriesr=   r   r   r   r   r   s         r1   r   zsin._eval_nseries      il 	)((3q664((C88Aq>>aeQ%677 	B74@AAA%dADIIIIr3   c                    ddl m} t          j        }t	          |t
          |f          r8|                    |j        d                                       t                    }t          ||z            t          | |z            z
  d|z  z  S Nr   HyperbolicFunctionro   
r   r   r   r0   r.   r5   r8   r9   rewriter#   )r=   r   kwargsr   Is        r1   _eval_rewrite_as_expzsin._eval_rewrite_as_exp  s    LLLLLLOc13EFGG 	5((38A;''//44CCE

S#a[[(1Q3//r3   c                     t          |t                    r1t          j        }|j        d         }||| z  z  dz  |||z  z  dz  z
  S d S Nr   ro   r.   r"   r   r0   r9   r=   r   r   r   r   s        r1   _eval_rewrite_as_Powzsin._eval_rewrite_as_Pow  sU    c3 	)AAQU719qAvqy((	) 	)r3   c                 :    t          |t          dz  z
  d          S Nro   Fevaluater   r   r=   r   r   s      r1   _eval_rewrite_as_coszsin._eval_rewrite_as_cos      3A:....r3   c                 V    t          t          j        |z            }d|z  d|dz  z   z  S Nro   r{   tanr   rs   r=   r   r   tan_halfs       r1   _eval_rewrite_as_tanzsin._eval_rewrite_as_tan  s*    qvcz??z1x{?++r3   c                 `    t          |          t          |          z  t          |          z  S rf   r   r   r   s      r1   _eval_rewrite_as_sincoszsin._eval_rewrite_as_sincos  $    3xxC S))r3   c                    t          t          j        |z            }t          dt	          t          t          |          d          t          t          |t                    d                    fd|z  d|dz  z   z  df          S )Nr   ro   r{   T	cotr   rs   r(   r)   r   r    r   r   r=   r   r   cot_halfs       r1   _eval_rewrite_as_cotzsin._eval_rewrite_as_cot  so    qvcz??!SBsGGQCRLL!1D1DEEFH*a(A+o6=? ? 	?r3   c                 f    |                      t                                         t                    S rf   )r   r   powr   s      r1   _eval_rewrite_as_powzsin._eval_rewrite_as_pow  s"    ||C  ((---r3   c                 f    |                      t                                         t                    S rf   )r   r   r%   r   s      r1   _eval_rewrite_as_sqrtzsin._eval_rewrite_as_sqrt  s"    ||C  ((...r3   c                 &    dt          |          z  S Nr{   cscr   s      r1   _eval_rewrite_as_csczsin._eval_rewrite_as_csc      Szr3   c                 @    dt          |t          dz  z
  d          z  S )Nr{   ro   Fr   secr   r   s      r1   _eval_rewrite_as_seczsin._eval_rewrite_as_sec  s"    S2a4Z%00000r3   c                 &    |t          |          z  S rf   )sincr   s      r1   _eval_rewrite_as_sinczsin._eval_rewrite_as_sinc  s    499}r3   c                 f    |                      | j        d                                                   S Nr   r8   r9   	conjugater=   s    r1   _eval_conjugatezsin._eval_conjugate  &    yy1//11222r3   Tc                     ddl m}m}  | j        dd|i|\  }}t	          |           ||          z  t          |           ||          z  fS Nr   coshr   rG   rH   )r   r  r   rS   r   r   r=   rG   rJ   r  r   r!   r    s          r1   rI   zsin.as_real_imag  sl    DDDDDDDD##77777BBR #b''$$r(("233r3   c           	      x   ddl m}m} | j        d         }d }|j        r|                                \  }}t          |d                                          }t          |d                                          }t          |d                                          }	t          |d                                          }
||
z  ||	z  z   S |j	        r|
                    d          \  }}|j        r|j        r/t          j        |dz
  dz  z   ||t          |                    z  S t          t          j        |dz  dz
  z  t          |          z   ||dz
  t          |                    z  d	          S t!          |          }|!|j        r|                     t&                    S t          |          S )
Nr   )
chebyshevt
chebyshevuFr   Trationalr{   ro   )rG   )#sympy.functions.special.polynomialsr  r  r9   r\   as_two_termsr   _eval_expand_trigr   rY   r~   
is_Integeris_oddr   r   r   rC   r   r   r%   )r=   rJ   r  r  r   r   r   sxsyr   cyr   rD   s                r1   r$  zsin._eval_expand_trig  s   NNNNNNNNil: 	.##%%DAqQ'''99;;BQ'''99;;BQ'''99;;BQ'''99;;Bb52b5= Z 	.##T#22DAq| M 8 M=AE195jjCFF6K6KKK%amacAg&>s1vv&E&0jQA&?&?'@FKM M M M ~~H .' .<<---3xxr3   c                    ddl m} | j        d         }|                    |d                                          }|t
          z  }|j        r2||t
          z  z
                      |          }t          j	        |z  |z  S |t          j
        u r.|                    |dt          |          j        rdnd          }|t          j        t          j        fv r |dd          S |j        r|                     |          n| S )Nr   r   -+dirr   r{   r   r   r9   r   cancelr   rt   as_leading_termr   r   rl   limitr!   is_negativer   r   	is_finiter8   	r=   r   r   r   r   r   x0r   lts	            r1   _eval_as_leading_termzsin._eval_as_leading_term  s    AAAAAAilXXa^^""$$rE< 	)"*--a00BM1$b(("" 	K1aBtHH,@%ISScJJB!*a011 	&;r1%%% "6tyy}}}$6r3   c                 .    | j         d         j        rdS d S Nr   Tr9   rP   r  s    r1   _eval_is_extended_realzsin._eval_is_extended_real   "    9Q<( 	4	 	r3   c                 2    | j         d         }|j        rdS d S r:  r;  r=   r   s     r1   _eval_is_finitezsin._eval_is_finite  s'    il 	4	 	r3   c                 \    t          | j        d                   \  }}|j        r|j        S d S r  rz   r9   r;   rt   r=   restpi_mults      r1   _eval_is_zerozsin._eval_is_zero	  6    #DIaL11g< 	&%%	& 	&r3   c                 R    | j         d         j        s| j         d         j        rdS d S r:  r9   rP   
is_complexr  s    r1   _eval_is_complexzsin._eval_is_complex  s3    9Q<( 	9Q<*	4	 	r3   rf   r{   r   re   r  )rg   rh   ri   rj   r   r   classmethodr   staticmethodr   r   r   r   r   r   r   r   r   r  r  r  r  r  r  rI   r$  r8  r<  r@  rF  rK  rH   r3   r1   r   r      s       - -^* * * *5 5 5 5 r$ r$ [r$h 
? 
? W \
?J J J J0 0 0) ) )/ / /, , ,* * *? ? ?
. . ./ / /  1 1 1  3 3 34 4 4 4
  :7 7 7 7    
& & &
    r3   r   c                       e Zd ZdZd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 Zd Zd Zd Zd Zd Zd dZd Zd!dZd Zd Zd Zd ZdS )"r   a  
    The cosine function.

    Returns the cosine of x (measured in radians).

    Explanation
    ===========

    See :func:`sin` for notes about automatic evaluation.

    Examples
    ========

    >>> from sympy import cos, pi
    >>> from sympy.abc import x
    >>> cos(x**2).diff(x)
    -2*x*sin(x**2)
    >>> cos(1).diff(x)
    0
    >>> cos(pi)
    -1
    >>> cos(pi/2)
    0
    >>> cos(2*pi/3)
    -1/2
    >>> cos(pi/12)
    sqrt(2)/4 + sqrt(6)/4

    See Also
    ========

    sin, csc, sec, tan, cot
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Cos

    Nc                 >    |                      dt          z  |          S r   r   r   s     r1   r   z
cos.period@  r   r3   r{   c                 d    |dk    rt          | j        d                    S t          | |          r   )r   r9   r	   r   s     r1   r   z	cos.fdiffC  s5    q= 	5	!%%%%$T8444r3   c           	      
   ddl m} ddlm} ddlm} |j        rS|t          j        u rt          j        S |j	        rt          j
        S |t          j        t          j        fv r |dd          S |t          j        u rt          j        S t          ||          rt          |t           dz  z             S t          ||          r|                    |           S |j        r|j        du r |dd          S |                                r | |           S t+          |          }|dd	lm}  ||          S t1          |          }||j        rt          j        |z  S d|z  j        r|j        du rt          j        S |j        s|t           z  }||k    r | |          S d S t          j        t?          d
          dz   dz  d}	|j        r|j         }
|j!        d|
z  z  }||
k    r|dz
  t           z  } | |           S d|z  |
k    rd|z
  t           z  } | |           S ddddddddd}|
|v r|t           z  ||
         d         z  |t           z  ||
         d         z  }} | |           | |          }}d ||fv rd S ||z   | t           dz  |z
             | t           dz  |z
            z  z   S |
dk    rd S |
|	v r0|	|j                  } ||j!        |          "                                S d|
dz  k    rm|dz  t           z  } | |          }d |k    rd S d|z  dz   dz  }d|dk     rdndtG          tI          |                    z  z  }|t?          d|z   dz            z  S d S |j%        r]tM          |          \  }}|rI|t           z  }tO          |          tO          |          z  t          |          t          |          z  z
  S |j	        rt          j
        S t          |tP                    r|j)        d         S t          |tT                    r%|j)        d         }dt?          d|dz  z             z  S t          |tV                    r%|j)        \  }}|t?          |dz  |dz  z             z  S t          |tX                    r"|j)        d         }t?          d|dz  z
            S t          |tZ                    r(|j)        d         }dt?          dd|dz  z  z             z  S t          |t\                    r%|j)        d         }t?          dd|dz  z  z
            S t          |t^                    r|j)        d         }d|z  S d S )Nr   r  r   r   r   r{   ro   F)r  r      )r   r   r   rU  rU  r   r      rY  
   rY  r   r   r[        (   <      r_  r`        rb  rc  x   re  )0r"  r  r   r   r   r   r   r   r   r;   r}   r   r   rl   r.   r   r   r   rP   r4  r   r2   r   r  rC   rt   r   ru   rR   r   rs   r%   qr   rQ   r   r[   r\   rz   r   r   r9   r   r   r   r   r   r   )r   r   r  r   r   r   r  rD   r   cst_table_someri  r   table2rc   bnvalanvalbctsnvalr   sign_cosr   r   s                          r1   r   zcos.evalI  s   BBBBBBAAAAAA......= 
	*ae| 	*u *uQ%788 *
 #{2q)))!## 	5Lc;'' 	'sRTz??"W%% 	'>>#&&& 	&CMU$: 	&;r1%%%'')) 	3t99055 	!BBBBBB4== S>> I	" 100(
& " #u, "6M' {3; %3t99$t 6GGaK? N # -9JJ!A#&q5 &$qL",DCII:%Q37 &L",DCII:%  !	 	 ; ER4q	!,ad6!9Q<.?qA#&3q6633q665Eu~- $#t ;RTAXss2a4!8}})DDDr6  4& @(4C%:hj#66==???A: 9$QJ?D3t99Dt| $#t8a*A "QU'9rr3s1vv;;&FGH#D1t8Q,$8$8884: 	5s##DAq 5bD1vvc!ff}s1vvc!ff}44; 	5Lc4   	8A;c4   	$AT!ad(^^##c5!! 	'8DAqT!Q$A+&&&&c4   	$AAF
###c4   	&AT!a1f*%%%%c4   	$AAadF
###c4   	AQ3J	 	r3   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 t           j        | dz  z  || z  z  t          |           z  S )Nr   ro   r{   r   r   r   s       r1   r   zcos.taylor_term  r   r3   r   c                 8   | j         d         }|#|                    t          |          |          }|                    |d                              t          j        t          j                  rt          d| z            t          j	        | ||||          S r   r   r   s         r1   r   zcos._eval_nseries  r   r3   c                    t           j        }ddlm} t	          |t
          |f          r8|                    |j        d                                       t                    }t          ||z            t          | |z            z   dz  S r   
r   r0   r   r   r.   r5   r8   r9   r   r#   )r=   r   r   r   r   s        r1   r   zcos._eval_rewrite_as_exp  s    OLLLLLLc13EFGG 	5((38A;''//44CCE

S#a[[(!++r3   c                     t          |t                    r+t          j        }|j        d         }||z  dz  || z  dz  z   S d S r   r   r   s        r1   r   zcos._eval_rewrite_as_Pow  sM    c3 	$AAa46ArE!G##	$ 	$r3   c                 :    t          |t          dz  z   d          S r   )r   r   r   s      r1   _eval_rewrite_as_sinzcos._eval_rewrite_as_sin   r   r3   c                 V    t          t          j        |z            dz  }d|z
  d|z   z  S r   r   r   s       r1   r   zcos._eval_rewrite_as_tan  s+    qvcz??A%Hq8|,,r3   c                 `    t          |          t          |          z  t          |          z  S rf   r   r   s      r1   r   zcos._eval_rewrite_as_sincos  r   r3   c                    t          t          j        |z            dz  }t          dt	          t          t          |          d          t          t          |dt          z            d                    f|dz
  |dz   z  df          S )Nro   r{   r   Tr   r   s       r1   r   zcos._eval_rewrite_as_cot
  sw    qvcz??A%!SBsGGQCQrTNNA1F1FGGH#a<(Q,7>@ @ 	@r3   c                 ,    |                      |          S rf   )r  r   s      r1   r  zcos._eval_rewrite_as_pow  s    ))#...r3   c                    ddl m} fddfd	}t          |          }|d S |j        r|                     |t
          z            S |j        sd S d }t          j        t          d          dz   dz  t          d	t          d
          z   dz  t          d          t          d
t          d
          z
            t          t          d          dt          d
t          d
          z             z  dt          d
          z
  t          d
t          d
          z
            z  z
  z  dt          d
          z  z   dz             z   z  dz  z              |            dfd}|j
        v r= ||j        |j
                           }|j
        dk     r|                                }|S |j
        dz  sj|dz  }	t          |	t
          z                                t                    }
|	dz   dz  }t          |          dz  rdnd}|t          d|
z   dz            z  S  ||j
                  }|r |||          }d t!          |t#          d                    D             }t          t%          d |D                                                                                     |          }|                    t                    S  ||          }d t!          |t#          d                    D             }t          t%          d |D                                                                                     |          }|S )Nr   rT  c                 Z   t          |           dk    r
d| d         fS t          |           dk    rt          | d         | d                   S  | dd                    }t          | d         |d                   \  }}t          |gfd|dd         D             z   |gz             S )Nr{   r   ro   r   c                     g | ]}|z  S rH   rH   ).0r   vs     r1   
<listcomp>z>cos._eval_rewrite_as_sqrt.<locals>.migcdex.<locals>.<listcomp>"  s    666!666r3   )r   r   rV   )r   ra   urb   r  migcdexs       @r1   r  z*cos._eval_rewrite_as_sqrt.<locals>.migcdex  s     1vv{ !1Q4y 1vv{ +adAbE***!""AQqT1R5))GAq!!6666QqtW6666!<===r3   c                     t           t                    r S t           t                    st          d           j        d j         j        z  k    r j        S d |k    r3fdt           j                                                  D             }nfd|D             }t          |          dk    r gS  |          } fdt          |d d         |          D             } t          |          k    sJ |S )Nzr is not rationalro   c                 &    g | ]\  }}||z  z  S rH   rH   )r  r   r   r   s      r1   r  z@cos._eval_rewrite_as_sqrt.<locals>.ipartfrac.<locals>.<listcomp>.  s%    @@@AQ1W@@@r3   c                     g | ]}|z  S rH   rH   )r  r   r   s     r1   r  z@cos._eval_rewrite_as_sqrt.<locals>.ipartfrac.<locals>.<listcomp>0  s    +++aQT+++r3   r{   c                 V    g | ]%\  }}j         t          ||z  j                  z  &S rH   )r   r   ri  )r  r   jrs      r1   r  z@cos._eval_rewrite_as_sqrt.<locals>.ipartfrac.<locals>.<listcomp>4  s4    GGGtq!AC1ac***GGGr3   r   )
r.   r   r   	TypeErrorri  r*   itemsr   zipsum)r  factorsrc   rb   ansr   r  s   `    @r1   	ipartfracz,cos._eval_rewrite_as_sqrt.<locals>.ipartfrac$  s   !S!! a** 5 3444A13qs7{ s
w ,@@@@13)=)=)?)?@@@++++7+++1vv{ u

AGGGGs1SbS61~~GGGCC=   Jr3   c                  4   d } d } | dd          \  }} | |d          \  }} | |d          \  }} | |dd|z   d|z  z   z            \  }}	 | |dd|z   d|z  z   z            \  }
} | |dd|z   d|z  z   z            \  }} | |dd|z   d|z  z   z            \  }} | |d	||z   |z   d|
z  z   z            \  }} | |d	||z   |z   d|z  z   z            \  }} | |d	||z   |	z   d|z  z   z            \  }} | |d	||z   |
z   d|z  z   z            \  }} | |	d	||	z   |z   d|z  z   z            \  }} | |
d	||
z   |z   d|z  z   z            \  }} | |d	||z   |z   d|z  z   z            \  }} | |d	||z   |z   d|	z  z   z            \  }} ||d	||z   |z   |z   z            }  ||d	||z   |z   |z   z            }! ||d	||z   |z   |z   z            }" ||d	||z   |z   |z   z            }# ||d	||z   |z   |z   z            }$ ||d	||z   |z   |z   z            }% ||  d	|!|"z   z             }& ||# d	|$|%z   z             }'d
 ||& d	|'z            z  }(t          t          d          t          |(dz             z  dz  t          j        z             S )a2   Express cos(pi/257) explicitly as a function of radicals
                Based upon the equations in
                http://math.stackexchange.com/questions/516142/how-does-cos2-pi-257-look-like-in-real-radicals
                See also http://www.susqu.edu/brakke/constructions/257-gon.m.txt
            c                 n    | t          | dz  |z             z   dz  | t          | dz  |z             z
  dz  fS r   r%   rc   rl  s     r1   f1z8cos._eval_rewrite_as_sqrt.<locals>._cospi257.<locals>.f1H  s=    DANN*A-DANN0BA/EEEr3   c                 8    | t          | dz  |z             z
  dz  S r   r  r  s     r1   f2z8cos._eval_rewrite_as_sqrt.<locals>._cospi257.<locals>.f2K  s     DANN*A--r3   r      @   rU  r   ro   r   r   )r%   r   rs   ))r  r  t1t2z1z3z2z4y1y5y6y2y3y7y8y4x1x9x2x10x3x11x4x12x5x13x6x14x15x7x8x16v1v2v3v4v5v6u1u2w1s)                                            r1   	_cospi257z,cos._eval_rewrite_as_sqrt.<locals>._cospi257B  s   F F F. . . RC[[FBRBZZFBRBZZFBRAq2v"}-..FBRAq2v"}-..FBRAq2v"}-..FBRAq2v"}-..FBRBR"qt 3455FBbRb2"!4566GBbRb2"!4566GBbRb2"!4566GBbRb2"!4566GBbRb2"!4566GBbRb2"!4566GCbRb2"!4566GBBBGbL2-.//BBBGbL2-.//BBBGcMC/011BBBHsNS0122BCS3Y_s2344BCS2X]R/011B"bS"b2g,'''B"bS"b2g,'''BBBsBrENN"BQR!V,Q.7888r3   r   r{   rU  rf         ro   irY  "   )r   r   r    c                     g }D ]I}t          | |          \  }}|dk    r.|} |                    |           | dk    rt          |          c S JdS )Nr   r{   F)divmodrr   rV   )r   primesp_iquotient	remainderrj  s        r1   _fermatCoordsz0cos._eval_rewrite_as_sqrt.<locals>._fermatCoordst  sr     F% - -&,Qnn#)> - AMM#&&&Av -$V}},,,5r3   r  r   c                 >    g | ]}|d          |d         t           z  fS r{   r   r   r  r   s     r1   r  z-cos._eval_rewrite_as_sqrt.<locals>.<listcomp>  (    MMMQ!A$!RMMMr3   zc                     g | ]
}|d          S rM  rH   r  s     r1   r  z-cos._eval_rewrite_as_sqrt.<locals>.<listcomp>      ,,,QAaD,,,r3   c                 >    g | ]}|d          |d         t           z  fS r  r  r  s     r1   r  z-cos._eval_rewrite_as_sqrt.<locals>.<listcomp>  r  r3   c                     g | ]
}|d          S rM  rH   r  s     r1   r  z-cos._eval_rewrite_as_sqrt.<locals>.<listcomp>  r  r3   rf   )r"  r  rC   rt   r8   r   r   r   rs   r%   ri  r   rQ   r   r   r   r  r,   r  r$  r   )r=   r   r   r  r  rD   r  r  rvpico2rp  r   rq  FCdecompXpclsrj  r  s                    @@r1   r  zcos._eval_rewrite_as_sqrt  s   BBBBBB	> 	> 	> 	> 	>	 	 	 	 	 	& S>> 	4 	*99Xb[)))# 	4$	9 $	9 $	9N vQ!Qb488mR'$q''4T"XX3F3FT!WWbb488m!4!44DHHb488m$$8% % &()$r((
3578 9 949 +::<+= = > > 

 

	 	 	 	 	 :' 	HJxz(BCCBzC !YY[[IzA~ 	1QJEuRx==((..DAA VVaZ.rrQHD1t8Q,0000]8:&& 		Yx,,FMM#f6Fs6K6K*L*LMMMAs,,!,,,--..@@BBGGJJD<<%%%Yx((FMM#f6Fs6K6K*L*LMMMAs,,!,,,--..@@BBGGJJDKr3   c                 &    dt          |          z  S r  r  r   s      r1   r  zcos._eval_rewrite_as_sec  r	  r3   c                 V    dt          |                              t                    z  S r  )r  r   r  r   s      r1   r  zcos._eval_rewrite_as_csc  !    S!!#&&&&r3   c                 f    |                      | j        d                                                   S r  r  r  s    r1   r  zcos._eval_conjugate  r  r3   Tc                     ddl m}m}  | j        dd|i|\  }}t	          |           ||          z  t          |            ||          z  fS r  )r   r  r   rS   r   r   r  s          r1   rI   zcos.as_real_imag  sn    DDDDDDDD##77777BBR 3r77(4488"344r3   c                    ddl m} | j        d         }d }|j        r|                                \  }}t          |d                                          }t          |d                                          }t          |d                                          }t          |d                                          }	||	z  ||z  z
  S |j        rk|	                    d          \  }
}|
j
        r ||
t          |                    S t          |          }|!|j        r|                     t                    S t          |          S )Nr   rT  Fr   Tr   )r"  r  r9   r\   r#  r   r$  r   rY   r~   r%  rC   r   r   r%   )r=   rJ   r  r   r   r   r'  r(  r   r)  rq   termsrD   s                r1   r$  zcos._eval_expand_trig  sO   BBBBBBil: 	.##%%DAqQ'''99;;BQ'''99;;BQ'''99;;BQ'''99;;Bb52b5= Z 	.++T+::LE5 5!z%U444 ~~H .' .<<---3xxr3   c                 *   ddl m} | j        d         }|                    |d                                          }|t
          dz  z   t
          z  }|j        r=||t
          z  z
  t
          dz  z                       |          }t          j	        |z  |z  S |t          j
        u r.|                    |dt          |          j        rdnd          }|t          j        t          j        fv r |dd          S |j        r|                     |          n| S )	Nr   r   ro   r+  r,  r-  r   r{   r/  r5  s	            r1   r8  zcos._eval_as_leading_term  s   AAAAAAilXXa^^""$$"Q$YN< 	)"*r!t#44Q77BM1$b(("" 	K1aBtHH,@%ISScJJB!*a011 	&;r1%%% "6tyy}}}$6r3   c                 .    | j         d         j        rdS d S r:  r;  r  s    r1   r<  zcos._eval_is_extended_real  r=  r3   c                 2    | j         d         }|j        rdS d S r:  r;  r?  s     r1   r@  zcos._eval_is_finite  s'    il 	4	 	r3   c                 R    | j         d         j        s| j         d         j        rdS d S r:  rI  r  s    r1   rK  zcos._eval_is_complex  s3    9Q<( 	y|&	4	 	r3   c                     t          | j        d                   \  }}|r(t          |t          j        z
  j        |j        g          S |j        S r  )rz   r9   r   r   rs   rt   r;   rC  s      r1   rF  zcos._eval_is_zero  sH    #DIaL11g 	 w/;T\JKKK<r3   rf   rL  rM  re   r  )rg   rh   ri   rj   r   r   rN  r   rO  r   r   r   r   r   rx  r   r   r   r  r  r  r  r  rI   r$  r8  r<  r@  rK  rF  rH   r3   r1   r   r     s       ) )V* * * *5 5 5 5 Q Q [Qf 
? 
? W \
?J J J J, , ,$ $ $/ / /- - -* * *@ @ @
/ / /G G GR  ' ' '3 3 35 5 5 5
  *7 7 7 7      
         r3   r   c                       e Zd ZdZddZd dZd dZed             Ze	e
d                         Zd!d
Zd Zd Zd"dZd Zd Z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 )$r   a  
    The tangent function.

    Returns the tangent of x (measured in radians).

    Explanation
    ===========

    See :class:`sin` for notes about automatic evaluation.

    Examples
    ========

    >>> from sympy import tan, pi
    >>> from sympy.abc import x
    >>> tan(x**2).diff(x)
    2*x*(tan(x**2)**2 + 1)
    >>> tan(1).diff(x)
    0
    >>> tan(pi/8).expand()
    -1 + sqrt(2)

    See Also
    ========

    sin, csc, cos, sec, cot
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Tan

    Nc                 8    |                      t          |          S rf   r   r   s     r1   r   z
tan.period	      ||B'''r3   r{   c                 R    |dk    rt           j        | dz  z   S t          | |          Nr{   ro   )r   r}   r	   r   s     r1   r   z	tan.fdiff  s.    q= 	5547?"$T8444r3   c                     t           S z7
        Returns the inverse of this function.
        r   r   s     r1   inverseztan.inverse  	     r3   c           
         ddl m} |j        rg|t          j        u rt          j        S |j        rt          j        S |t          j        t          j        fv r  |t          j        t          j                  S |t          j	        u rt          j        S t          ||          r|j        |j        }}t          |t          z            }|t          j        ur||t          z  z
  }|t          j        ur||t          z  z
  }ddlm}  |||                               |t          dz  t          t%          dd          z                      r  |t          j        t          j                  S  |t'          |          t'          |                    S |                                r | |            S t+          |          }|ddlm} t          j         ||          z  S t3          |d          }	|	|	j        rt          j        S |	j        s|	t          z  }
|
|k    r | |
          S d S |	j        rX|	j        }|	j        |z  }t=          ddt=          d          z  dz  z
            t=          ddt=          d          z  z
            t=          ddt=          d          z  dz  z             t=          ddt=          d          z  z             d	}|d
v r$d|z  |z  }|dk    rd|z
  }||          S ||         S |	j        dz  s}|	t          z  dz  }
t?          |
          t?          |
t          dz  z
            }}t          |t>                    s2t          |t>                    s|dk    rt          j	        S d|z  ||z  z
  S ddddddddd}||v rZ | |t          z  ||         d         z             | |t          z  ||         d         z            }}d ||fv rd S ||z
  d||z  z   z  S |	t          j         z   dz  t          j         z
  t          z  }
t?          |
          t?          |
t          dz  z
            }}t          |t>                    s,t          |t>                    s|dk    rt          j	        S ||z  S |
|k    r | |
          S |j!        rXtE          |          \  }}|rDt'          |t          z            }|t          j	        u rtG          |           S t'          |          S |j        rt          j        S t          |tH                    r|j%        d         S t          |tL                    r|j%        \  }}||z  S t          |tN                    r%|j%        d         }|t=          d|dz  z
            z  S t          |tP                    r%|j%        d         }t=          d|dz  z
            |z  S t          |tR                    r|j%        d         }d|z  S t          |tT                    r+|j%        d         }dt=          dd|dz  z  z
            |z  z  S t          |tV                    r(|j%        d         }t=          dd|dz  z  z
            |z  S d S )Nr   r   r   ro   r   )tanhr{   r   )r{   ro   r   rU  r   r[  r[  rV  rW  rX  rZ  r\  r]  r^  ra  rd  ),r   r   r   r   r   r;   rR   r   r   rl   r.   r   r   r$   r   r   r   r   r   r   r   r2   r   r  r0   rC   rt   r   ri  r   r%   r   rs   r\   rz   r   r   r9   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r  rD   r   ri  r   table10r   cresultsresultrk  rm  rn  r   r   tanmr   s                           r1   r   ztan.eval  s   AAAAAA= 	Cae| Cu CvQ%788 C"{1#5qzBBB!## 	5Lc;'' 	7wCc"fA!,, !AbDj!*$ !AbDj111111{3$$11))BqD"XaQR^^BS2T2TUU 7"{1#5qzBBB"{3s88SXX666'')) 	CII:055 	1BBBBBB?44==00S!$$ <	%" v' {3; %3t99$t# 2%JJN A$q''	!O,,A$q''	M**A$q''	!O,,A$q''	M**	  < *1QA1u *F '
{*&qz)zA~ ;#B;q=D'*4yy#dRTk2B2BWG%gs33 ;$.w$<$<;"a< 5#$#44 y77?:: !	 	 ; =#&3qtF1IaL'8#9#933qtF1IaL?P;Q;Q5Eu~- $#t!EMAeO<<!AF*a/!&8"< $'t99c$A+.>.>!'3// - *7C 8 8-!| 1 00#GO,3; %3t99$: 	"s##DAq "1R4yy1,, "FF7Nq66M; 	6Mc4   	8A;c5!! 	8DAqQ3Jc4   	$AT!ad(^^##c4   	$AAqD>>!##c4   	AQ3Jc4   	*Ad1qAv:&&q())c4   	&AAadF
##A%%	& 	&r3   c                    | dk     s	| dz  dk    rt           j        S t          |          }| dz
  dz  d| dz   z  }}t          | dz             }t	          | dz             }t           j        |z  |z  |dz
  z  |z  |z  || z  z  S Nr   ro   r{   )r   rR   r   r   r   r   )r   r   r   rc   rl  BFs          r1   r   ztan.taylor_term  s     q5 
	7AEQJ 
	76M

AUQJQUqA!a%  A!a%  A=!#A%q1u-a/1!Q$66r3   r   c                     | j         d                             |d          dz  t          z  }|r7|j        r0|                     t
                                        |||          S t          j        | |||          S )Nr   ro   r   r   )r9   r2  r   r%  r   r   r   r   r=   r   r   r   r   r   s         r1   r   ztan._eval_nseries  s{    IaLq!$$Q&r) 	F 	F<<$$2212EEE%dA>>>>r3   c                     t          |t                    r5t          j        }|j        d         }||| z  ||z  z
  z  || z  ||z  z   z  S d S r  r   r   s        r1   r   ztan._eval_rewrite_as_Pow  s\    c3 	3AAa!eadl#QUQT\22	3 	3r3   c                 f    |                      | j        d                                                   S r  r  r  s    r1   r  ztan._eval_conjugate  r  r3   Tc                 
    | j         dd|i|\  }}|rOddlm}m} t	          d|z             |d|z            z   }t          d|z            |z   |d|z            |z  fS |                     |          t          j        fS NrG   r   r  ro   rH   	rS   r   r  r   r   r   r8   r   rR   r=   rG   rJ   r!   r    r  r   denoms           r1   rI   ztan.as_real_imag  s    ##77777B 	+HHHHHHHH"IIQrT

*E"IIeOTT!B$ZZ%566IIbMM16**r3   c                    | j         d         }d }|j        r
t          |j                   }g }|j         D ]:}t          |d                                          }|                    |           ;t          d          fdt          |          D             }ddg}t          |dz             D ]2}	|d|	dz  z
  xx         t          |	|          d|	d	z  dz  z  z  z  cc<   3|d         |d         z  	                    t          t          ||                              S |j        r|                    d
          \  }
}|
j        r|
dk    r|t          j        }t#          dd
          }d||z  z   |
z                                  }t'          |          t)          |          z  	                    |t          |          fg          S t          |          S )Nr   Fr   Yc                 .    g | ]}t                    S rH   nextr  r   Ygs     r1   r  z)tan._eval_expand_trig.<locals>.<listcomp>      ...q$r((...r3   r{   ro   r   rU  Tr   dummyreal)r9   r\   r   r   r$  rr   r,   ranger+   r   listr  rY   r~   r%  r   r0   r   rQ   r    r!   )r=   rJ   r   r   r   TXtxr  r   r   rq   r  r   r  Pr  s                  @r1   r$  ztan._eval_expand_trig  s   il: 	=CHABX  U+++==??		"!#&&B....E!HH...AAA1q5\\ H H!a!e)q! 4 4bQUQJ5G GGaD1I##DQ$4$4555Z 	=++T+::LE5 =EAI =O7...!A#g%--//1bee))As5zz?*;<<<3xxr3   c                 *   t           j        }ddlm} t	          |t
          |f          r8|                    |j        d                                       t                    }t          | |z            t          ||z            }}|||z
  z  ||z   z  S Nr   r   ru  )r=   r   r   r   r   neg_exppos_exps          r1   r   ztan._eval_rewrite_as_exp  s    OLLLLLLc13EFGG 	5((38A;''//44CtAv;;CE

'G#$g&788r3   c                 R    dt          |          dz  z  t          d|z            z  S r   r   r=   r   r   s      r1   rx  ztan._eval_rewrite_as_sin  s%    Q{3qs88##r3   c                 Z    t          |t          dz  z
  d          t          |          z  S r   r   r!  s      r1   r   ztan._eval_rewrite_as_cos  s(    1r!t8e,,,SVV33r3   c                 @    t          |          t          |          z  S rf   r   r   s      r1   r   ztan._eval_rewrite_as_sincos      3xxC  r3   c                 &    dt          |          z  S r  r   r   s      r1   r   ztan._eval_rewrite_as_cot  r	  r3   c                     t          |                              t                    }t          |                              t                    }||z  S rf   )r   r   r  r   )r=   r   r   sin_in_sec_formcos_in_sec_forms        r1   r  ztan._eval_rewrite_as_sec  ?    c((**3//c((**3//..r3   c                     t          |                              t                    }t          |                              t                    }||z  S rf   )r   r   r  r   )r=   r   r   sin_in_csc_formcos_in_csc_forms        r1   r  ztan._eval_rewrite_as_csc  r*  r3   c                     |                      t                                         t                    }|                    t                    rd S |S rf   r   r   r   rX   r=   r   r   r   s       r1   r  ztan._eval_rewrite_as_pow  =    LL%%c**55:: 	4r3   c                     |                      t                                         t                    }|                    t                    rd S |S rf   r   r   r%   rX   r0  s       r1   r  ztan._eval_rewrite_as_sqrt  =    LL%%d++55:: 	4r3   c                 .   ddl m} ddlm} | j        d         }|                    |d                                          }d|z  t          z  }|j        r1||t          z  dz  z
  	                    |          }	|j
        r|	nd|	z  S |t          j        u r*|                    |d ||          j        rdnd          }|t          j        t          j        fv r  |t          j        t          j                  S |j        r|                     |          n| S )	Nr   r   r!   ro   r   r+  r,  r-  r   r   $sympy.functions.elementary.complexesr!   r9   r   r0  r   rt   r1  ru   r   rl   r2  r3  r   r   r4  r8   
r=   r   r   r   r   r!   r   r6  r   r7  s
             r1   r8  ztan._eval_as_leading_term  s   AAAAAA;;;;;;ilXXa^^""$$bDG< 	."Q,//22B-222-"" 	K1aBBtHH,@%ISScJJB!*a011 	?;q11:>>> "6tyy}}}$6r3   c                 &    | j         d         j        S r  r;  r  s    r1   r<  ztan._eval_is_extended_real  s    y|,,r3   c                 r    | j         d         }|j        r |t          z  t          j        z
  j        du rdS d S d S rA   r9   is_realr   r   rs   rt   r?  s     r1   _eval_is_realztan._eval_is_real   sI    il; 	CFQVO75@ 	4	 	 	 	r3   c                     | j         d         }|j        r |t          z  t          j        z
  j        du rdS |j        rdS d S rA   )r9   r=  r   r   rs   rt   is_imaginaryr?  s     r1   r@  ztan._eval_is_finite%  sO    il; 	CFQVO75@ 	4 	4	 	r3   c                 \    t          | j        d                   \  }}|j        r|j        S d S r  rB  rC  s      r1   rF  ztan._eval_is_zero.  rG  r3   c                 r    | j         d         }|j        r |t          z  t          j        z
  j        du rdS d S d S rA   r<  r?  s     r1   rK  ztan._eval_is_complex3  sI    il; 	CFQVO75@ 	4	 	 	 	r3   rf   rL  rM  re   r  ) rg   rh   ri   rj   r   r   r  rN  r   rO  r   r   r   r   r  rI   r$  r   rx  r   r   r   r  r  r  r  r8  r<  r>  r@  rF  rK  rH   r3   r1   r   r     s       # #J( ( ( (5 5 5 5    F& F& [F&P 7 7 W \7? ? ? ?3 3 33 3 3+ + + +  69 9 9$ $ $4 4 4! ! !  / / /
/ / /
    7 7 7 7- - -  
  & & &
    r3   r   c                       e Zd ZdZd dZd!dZd!dZed             Ze	e
d                         Zd"d
Zd Zd#dZd Zd Z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 Z dS )%r   a  
    The cotangent function.

    Returns the cotangent of x (measured in radians).

    Explanation
    ===========

    See :class:`sin` for notes about automatic evaluation.

    Examples
    ========

    >>> from sympy import cot, pi
    >>> from sympy.abc import x
    >>> cot(x**2).diff(x)
    2*x*(-cot(x**2)**2 - 1)
    >>> cot(1).diff(x)
    0
    >>> cot(pi/12)
    sqrt(3) + 2

    See Also
    ========

    sin, csc, cos, sec, tan
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Cot

    Nc                 8    |                      t          |          S rf   r   r   s     r1   r   z
cot.period`  r  r3   r{   c                 R    |dk    rt           j        | dz  z
  S t          | |          r  )r   r   r	   r   s     r1   r   z	cot.fdiffc  s/    q= 	5=47**$T8444r3   c                     t           S r  r   r   s     r1   r  zcot.inversei  r  r3   c           	      	   ddl m} |j        rg|t          j        u rt          j        S |j        rt          j        S |t          j        t          j        fv r  |t          j        t          j                  S |t          j        u rt          j        S t          ||          rt          |t          dz  z              S |                                r | |            S t          |          }|ddlm} t          j          ||          z  S t#          |d          }||j        rt          j        S |j        s|t          z  }||k    r | |          S d S |j        r|j        dv rt          t          dz  |z
            S |j        dk    ru|j        dz  sk|t          z  dz  }t+          |          t+          |t          dz  z
            }}t          |t*                    s t          |t*                    sd|z  ||z  z   S ddd	d
ddddd}	|j        }
|j        |
z  }|
|	v rZ | |t          z  |	|
         d         z             | |t          z  |	|
         d         z            }}d ||fv rd S d||z  z   ||z
  z  S |t          j        z   dz  t          j        z
  t          z  }t+          |          t+          |t          dz  z
            }}t          |t*                    s,t          |t*                    s|dk    rt          j        S ||z  S ||k    r | |          S |j        rXt3          |          \  }}|rDt5          |t          z            }|t          j        u rt5          |          S t          |           S |j        rt          j        S t          |t6                    r|j        d         S t          |t:                    r|j        d         }d|z  S t          |t<                    r|j        \  }}||z  S t          |t>                    r%|j        d         }tA          d|dz  z
            |z  S t          |tB                    r%|j        d         }|tA          d|dz  z
            z  S t          |tD                    r(|j        d         }tA          dd|dz  z  z
            |z  S t          |tF                    r+|j        d         }dtA          dd|dz  z  z
            |z  z  S d S )Nr   r   ro   )cothr  r{   rV  rW  rX  rZ  r\  r]  r^  ra  rd  )$r   r   r   r   r   r;   rl   r   r   r.   r   r   r   r2   r   rI  r0   rC   rt   r   ri  r   r   rs   r\   rz   r   r   r9   r   r   r   r%   r   r   r   )r   r   r   r   rI  rD   r   r  r  rk  ri  r   rm  rn  r   r   cotmr   s                     r1   r   zcot.evalo  s;   AAAAAA= 	Cae| u{ C((Q%788 C"{1#5qzBBB!## 	5Lc;'' 	$bd
OO##'')) 	CII:055 	2BBBBBBO#DDMM11S!$$ .	%" )((' {3; %3t99$t# $%:( +r!tcz??*:> ;(*q. ;#B;q=D'*4yy#dRTk2B2BWG%gs33 ;$.w$<$<; y77?:: !	 	 JJN; =#&3qtF1IaL'8#9#933qtF1IaL?P;Q;Q5Eu~- $#teOeem<<"QV+q0AF:B> $'t99c$A+.>.>!'3// + *7C 8 8+!| 1 00"7?*3; %3t99$: 	#s##DAq #1R4yy1,, #q66MFF7N; 	%$$c4   	8A;c4   	AQ3Jc5!! 	8DAqQ3Jc4   	$AAqD>>!##c4   	$AT!ad(^^##c4   	&AAadF
##A%%c4   	*Ad1qAv:&&q())	* 	*r3   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             }t          j        | dz   dz  z  d| dz   z  z  |z  |z  || z  z  S Nr   r{   ro   )r   r   rR   r   r   r   )r   r   r   r  r   s        r1   r   zcot.taylor_term  s     6 
	CWQZZ<U 	Ca!eqj 	C6M

A!a%  A!a%  A=AEA:.q1q5z9!;A=adBBr3   r   c                 &   | j         d                             |d          t          z  }|r7|j        r0|                     t
                                        |||          S |                     t                                        |||          S Nr   r  )r9   r2  r   r%  r   r   r   r   r  s         r1   r   zcot._eval_nseries  s    IaLq!$$R' 	F 	F<<$$2212EEE||C  ..qAD.AAAr3   c                 f    |                      | j        d                                                   S r  r  r  s    r1   r  zcot._eval_conjugate  r  r3   Tc                     | j         dd|i|\  }}|rPddlm}m} t	          d|z             |d|z            z
  }t          d|z             |z   |d|z            |z  fS |                     |          t          j        fS r  r  r	  s           r1   rI   zcot.as_real_imag  s    ##77777B 	+HHHHHHHH"IIQrT

*E2YYJu$dd1R4jj&677IIbMM16**r3   c                 *   ddl m} t          j        }t	          |t
          |f          r8|                    |j        d                                       t                    }t          | |z            t          ||z            }}|||z   z  ||z
  z  S r  r   )r=   r   r   r   r   r  r  s          r1   r   zcot._eval_rewrite_as_exp  s    LLLLLLOc13EFGG 	5((38A;''//44CtAv;;CE

'G#$g&788r3   c                     t          |t                    r6t          j        }|j        d         }| || z  ||z  z   z  || z  ||z  z
  z  S d S r  r   r   s        r1   r   zcot._eval_rewrite_as_Pow	  s^    c3 	4AA2q1"uq!t|$a!eadl33	4 	4r3   c                 R    t          d|z            dt          |          dz  z  z  S r   r   r!  s      r1   rx  zcot._eval_rewrite_as_sin  s%    1Q3xxCFFAI''r3   c                 Z    t          |          t          |t          dz  z
  d          z  S r   r   r!  s      r1   r   zcot._eval_rewrite_as_cos  s(    1vvc!bd(U33333r3   c                 @    t          |          t          |          z  S rf   r   r   r   s      r1   r   zcot._eval_rewrite_as_sincos  r$  r3   c                 &    dt          |          z  S r  r   r   s      r1   r   zcot._eval_rewrite_as_tan  r	  r3   c                     t          |                              t                    }t          |                              t                    }||z  S rf   )r   r   r  r   )r=   r   r   r)  r(  s        r1   r  zcot._eval_rewrite_as_sec  r*  r3   c                     t          |                              t                    }t          |                              t                    }||z  S rf   )r   r   r  r   )r=   r   r   r-  r,  s        r1   r  zcot._eval_rewrite_as_csc   r*  r3   c                     |                      t                                         t                    }|                    t                    rd S |S rf   r/  r0  s       r1   r  zcot._eval_rewrite_as_pow%  r1  r3   c                     |                      t                                         t                    }|                    t                    rd S |S rf   r3  r0  s       r1   r  zcot._eval_rewrite_as_sqrt+  r4  r3   c                 0   ddl m} ddlm} | j        d         }|                    |d                                          }d|z  t          z  }|j        r2||t          z  dz  z
  	                    |          }	|j
        rd|	z  n|	 S |t          j        u r*|                    |d ||          j        rdnd          }|t          j        t          j        fv r  |t          j        t          j                  S |j        r|                     |          n| S )	Nr   r   r6  ro   r{   r+  r,  r-  r7  r9  s
             r1   r8  zcot._eval_as_leading_term1  s    AAAAAA;;;;;;ilXXa^^""$$bDG< 	."Q,//22B9-1R442#-"" 	K1aBBtHH,@%ISScJJB!*a011 	?;q11:>>> "6tyy}}}$6r3   c                 &    | j         d         j        S r  r;  r  s    r1   r<  zcot._eval_is_extended_real@      y|,,r3   c                    | j         d         }d }|j        rt          |j                   }g }|j         D ]:}t          |d                                          }|                    |           ;t          d          fdt          |          D             }ddg}t          |dd          D ]5}	|||	z
  dz  xx         t          |	|          d||	z
  dz  dz  z  z  z  cc<   6|d         |d	         z  	                    t          t          ||                              S |j        r|                    d
          \  }
}|
j        r|
d	k    ryt          j        }t#          dd
          }||z   |
z                                  }t'          |          t)          |          z  	                    |t          |          fg          S t          |          S )Nr   Fr   r  c                 .    g | ]}t                    S rH   r  r  s     r1   r  z)cot._eval_expand_trig.<locals>.<listcomp>N  r  r3   r   ro   rU  r{   Tr   r  r  )r9   r\   r   r   r$  rr   r,   r  r+   r   r  r  rY   r~   r%  r   r0   r   rQ   r!   r    )r=   rJ   r   r   r   CXr   r  r   r   rq   r  r   r  r  r  s                  @r1   r$  zcot._eval_expand_trigC  s   il: 	=CHABX  U+++==??		"!#&&B....E!HH...AAA1b"%% P P1q5A+.A"6"6A{Q>N7O"OOaD1I##DQ$4$4555Z 	=++T+::LE5 =EAI =O7...!ee^++--1bee))As5zz?*;<<<3xxr3   c                 f    | j         d         }|j        r|t          z  j        du rdS |j        rdS d S rA   )r9   r=  r   rt   r@  r?  s     r1   r@  zcot._eval_is_finite]  sI    il; 	CF.%7 	4 	4	 	r3   c                 X    | j         d         }|j        r|t          z  j        du rdS d S d S rA   r9   r=  r   rt   r?  s     r1   r>  zcot._eval_is_reald  C    il; 	CF.%7 	4	 	 	 	r3   c                 X    | j         d         }|j        r|t          z  j        du rdS d S d S rA   re  r?  s     r1   rK  zcot._eval_is_complexi  rf  r3   c                 ~    t          | j        d                   \  }}|r|j        r|t          j        z
  j        S d S d S r  )rz   r9   r;   r   rs   rt   )r=   rD  pimults      r1   rF  zcot._eval_is_zeron  sM    "49Q<00f 	0dl 	0QVO//	0 	0 	0 	0r3   c                     | j         d         }|                    ||          }||k    r|t          z  j        rt          j        S t          |          S r  )r9   r   r   rt   r   rl   r   )r=   oldnewr   argnews        r1   
_eval_subszcot._eval_subss  sO    il#s##&= 	%fRi3 	%$$6{{r3   rf   rL  rM  re   r  )!rg   rh   ri   rj   r   r   r  rN  r   rO  r   r   r   r  rI   r   r   rx  r   r   r   r  r  r  r  r8  r<  r$  r@  r>  rK  rF  rn  rH   r3   r1   r   r   :  s       # #J( ( ( (5 5 5 5    n* n* [n*` C C W \CB B B B3 3 3+ + + +9 9 94 4 4( ( (4 4 4! ! !  / / /
/ / /
    7 7 7 7- - -  4    
  
0 0 0
    r3   r   c                       e Zd ZdZdZej        fZdZdZ	e
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 Zd ZddZd Zd ZddZd ZddZdS )ReciprocalTrigonometricFunctionz@Base class for reciprocal functions of trigonometric functions. Nc                 ,   |                                 r'| j        r | |           S | j        r | |            S t          |          }|d|z  j        su|j        rn|j        }|j        d|z  z  }||k    r|dz
  t          z  } | |           S d|z  |k    r2d|z
  t          z  }| j        r | |          S | j        r | |           S t          |d          r%|
                                | k    r|j        d         S | j                            |          }||S t          d || fD                       rd|z                      t                     S t          d || fD                       rd|z                      t"                    S d|z  S )Nro   r{   r  r   c              3   @   K   | ]}t          |t                    V  d S rf   )r.   r   r  r   s     r1   	<genexpr>z7ReciprocalTrigonometricFunction.eval.<locals>.<genexpr>  ,      55As##555555r3   c              3   @   K   | ]}t          |t                    V  d S rf   )r.   r   rs  s     r1   rt  z7ReciprocalTrigonometricFunction.eval.<locals>.<genexpr>  ru  r3   )r   _is_even_is_oddrC   rt   r   ri  r   r   hasattrr  r9   _reciprocal_ofr   anyr   r  r  )r   r   rD   ri  r   r   ts          r1   r   z$ReciprocalTrigonometricFunction.eval  s   '')) 	"| !sC4yy { "SD		z!S>> 	*xZ+	*$	* JJ!A#&q5 &$qL",DCII:%Q37 *L",D{ *"s4yy( * #D		z)3	"" 	s{{}}'; 	8A;##C(( 	H55a!W55555 	aC==%%%55a!W55555 	aC==%%%Q3Jr3   c                 n    |                      | j        d                   } t          ||          |i |S r  )rz  r9   getattr)r=   method_namer9   r   os        r1   _call_reciprocalz0ReciprocalTrigonometricFunction._call_reciprocal  s:    	!--&wq+&&7777r3   c                 6     | j         |g|R i |}|d|z  n|S r  )r  )r=   r  r9   r   r|  s        r1   _calculate_reciprocalz5ReciprocalTrigonometricFunction._calculate_reciprocal  s9     "D!+??????*qss*r3   c                 v    |                      ||          }|||                     |          k    rd|z  S d S d S r  )r  rz  )r=   r  r   r|  s       r1   _rewrite_reciprocalz3ReciprocalTrigonometricFunction._rewrite_reciprocal  sX     !!+s33 	Q$"5"5c":":: 	Q3J	 	 	 	r3   c                     t          | j        d                   }|                     |                              |          S r  )r   r9   rz  r   )r=   r_   r`   s      r1   rd   z'ReciprocalTrigonometricFunction._period  s7    ty|$$""1%%,,V444r3   r{   c                 <    |                      d|           | dz  z  S )Nr   ro   r  r   s     r1   r   z%ReciprocalTrigonometricFunction.fdiff  s$    **7H===dAgEEr3   c                 .    |                      d|          S )Nr   r  r   s      r1   r   z4ReciprocalTrigonometricFunction._eval_rewrite_as_exp      ''(>DDDr3   c                 .    |                      d|          S )Nr   r  r   s      r1   r   z4ReciprocalTrigonometricFunction._eval_rewrite_as_Pow  r  r3   c                 .    |                      d|          S )Nrx  r  r   s      r1   rx  z4ReciprocalTrigonometricFunction._eval_rewrite_as_sin  r  r3   c                 .    |                      d|          S )Nr   r  r   s      r1   r   z4ReciprocalTrigonometricFunction._eval_rewrite_as_cos  r  r3   c                 .    |                      d|          S )Nr   r  r   s      r1   r   z4ReciprocalTrigonometricFunction._eval_rewrite_as_tan  r  r3   c                 .    |                      d|          S )Nr  r  r   s      r1   r  z4ReciprocalTrigonometricFunction._eval_rewrite_as_pow  r  r3   c                 .    |                      d|          S )Nr  r  r   s      r1   r  z5ReciprocalTrigonometricFunction._eval_rewrite_as_sqrt  s    ''(?EEEr3   c                 f    |                      | j        d                                                   S r  r  r  s    r1   r  z/ReciprocalTrigonometricFunction._eval_conjugate  r  r3   Tc                 `     d|                      | j        d                   z  j        |fi |S r   )rz  r9   rI   )r=   rG   rJ   s      r1   rI   z,ReciprocalTrigonometricFunction.as_real_imag  sF    A$%%dil333A$ K KDIK K 	Kr3   c                      | j         di |S )Nr$  )r$  r  )r=   rJ   s     r1   r$  z1ReciprocalTrigonometricFunction._eval_expand_trig  s    )t)GGGGGr3   c                 f    |                      | j        d                                                   S r  )rz  r9   r<  r  s    r1   r<  z6ReciprocalTrigonometricFunction._eval_is_extended_real  s(    ""49Q<00GGIIIr3   r   c                 n    d|                      | j        d                   z                      |          S r   )rz  r9   r8  )r=   r   r   r   s       r1   r8  z5ReciprocalTrigonometricFunction._eval_as_leading_term  s/    $%%dil333JJ1MMMr3   c                 R    d|                      | j        d                   z  j        S r   )rz  r9   r4  r  s    r1   r@  z/ReciprocalTrigonometricFunction._eval_is_finite  s$    $%%dil333>>r3   c                 r    d|                      | j        d                   z                      |||          S r   )rz  r9   r   r=   r   r   r   r   s        r1   r   z-ReciprocalTrigonometricFunction._eval_nseries  s3    $%%dil333BB1aNNNr3   rL  re   r  rM  )rg   rh   ri   rj   rz  r   rl   rm   rw  rx  rN  r   r  r  r  rd   r   r   r   rx  r   r   r  r  r  rI   r$  r<  r8  r@  r   rH   r3   r1   rp  rp  {  s       JJN')N HG" " ["H8 8 8
+ + +  5 5 5F F F FE E EE E EE E EE E EE E EE E EF F F3 3 3K K K KH H HJ J JN N N N? ? ?O O O O O Or3   rp  c                       e Zd ZdZeZdZddZd Zd Z	d Z
d Zd	 Zd
 ZddZd Zeed                         ZddZdS )r  a  
    The secant function.

    Returns the secant of x (measured in radians).

    Explanation
    ===========

    See :class:`sin` for notes about automatic evaluation.

    Examples
    ========

    >>> from sympy import sec
    >>> from sympy.abc import x
    >>> sec(x**2).diff(x)
    2*x*tan(x**2)*sec(x**2)
    >>> sec(1).diff(x)
    0

    See Also
    ========

    sin, csc, cos, tan, cot
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Sec

    TNc                 ,    |                      |          S rf   rd   r   s     r1   r   z
sec.period      ||F###r3   c                 B    t          |dz            dz  }|dz   |dz
  z  S r   r&  )r=   r   r   cot_half_sqs       r1   r   zsec._eval_rewrite_as_cot  s(    #a%jj!ma+/22r3   c                 &    dt          |          z  S r  r   r   s      r1   r   zsec._eval_rewrite_as_cos!      #c((
r3   c                 `    t          |          t          |          t          |          z  z  S rf   r   r   s      r1   r   zsec._eval_rewrite_as_sincos$  $    3xxS#c((*++r3   c                 V    dt          |                              t                    z  S r  )r   r   r   r   s      r1   rx  zsec._eval_rewrite_as_sin'  !    #c((""3'''(r3   c                 V    dt          |                              t                    z  S r  )r   r   r   r   s      r1   r   zsec._eval_rewrite_as_tan*  r  r3   c                 :    t          t          dz  |z
  d          S r   )r  r   r   s      r1   r  zsec._eval_rewrite_as_csc-      2a4#:....r3   r{   c                     |dk    r5t          | j        d                   t          | j        d                   z  S t          | |          r   )r   r9   r  r	   r   s     r1   r   z	sec.fdiff0  sE    q= 	5ty|$$S1%6%666$T8444r3   c                 r    | j         d         }|j        r |t          z  t          j        z
  j        du rdS d S d S rA   )r9   rJ  r   r   rs   rt   r?  s     r1   rK  zsec._eval_is_complex6  sI    il> 	s2v:eC 	4	 	 	 	r3   c                     | dk     s	| dz  dk    rt           j        S t          |          }| dz  }t           j        |z  t	          d|z            z  t          d|z            z  |d|z  z  z  S r  )r   rR   r   r   r   r   r   r   r   ks       r1   r   zsec.taylor_term<  st    
 q5 	GAEQJ 	G6M

A1A=!#E!A#JJ.y1~~=a!A#hFFr3   r   c                 V   ddl m} ddlm} | j        d         }|                    |d                                          }|t          dz  z   t          z  }|j        r=||t          z  z
  t          dz  z   	                    |          }	t          j        |z  |	z  S |t          j        u r*|                    |d ||          j        rdnd          }|t          j        t          j        fv r  |t          j        t          j                  S |j        r|                     |          n| S )Nr   r   r6  ro   r+  r,  r-  r   r   r8  r!   r9   r   r0  r   rt   r1  r   r   rl   r2  r3  r   r   r4  r8   r9  s
             r1   r8  zsec._eval_as_leading_termH  s$   AAAAAA;;;;;;ilXXa^^""$$"Q$YN< 	)"*r!t#44Q77BM1$b(("" 	K1aBBtHH,@%ISScJJB!*a011 	?;q11:>>> "6tyy}}}$6r3   rf   rL  r  )rg   rh   ri   rj   r   rz  rw  r   r   r   r   rx  r   r  r   rK  rO  r   r   r8  rH   r3   r1   r  r    s        ! !F NH$ $ $ $3 3 3  , , ,) ) )) ) )/ / /5 5 5 5   G G W \G7 7 7 7 7 7r3   r  c                       e Zd ZdZeZdZddZd Zd Z	d Z
d Zd	 Zd
 ZddZd Zeed                         ZddZdS )r  a  
    The cosecant function.

    Returns the cosecant of x (measured in radians).

    Explanation
    ===========

    See :func:`sin` for notes about automatic evaluation.

    Examples
    ========

    >>> from sympy import csc
    >>> from sympy.abc import x
    >>> csc(x**2).diff(x)
    -2*x*cot(x**2)*csc(x**2)
    >>> csc(1).diff(x)
    0

    See Also
    ========

    sin, cos, sec, tan, cot
    asin, acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.14
    .. [3] http://functions.wolfram.com/ElementaryFunctions/Csc

    TNc                 ,    |                      |          S rf   r  r   s     r1   r   z
csc.period  r  r3   c                 &    dt          |          z  S r  r   r   s      r1   rx  zcsc._eval_rewrite_as_sin  r  r3   c                 `    t          |          t          |          t          |          z  z  S rf   rV  r   s      r1   r   zcsc._eval_rewrite_as_sincos  r  r3   c                 B    t          |dz            }d|dz  z   d|z  z  S r   r&  r   s       r1   r   zcsc._eval_rewrite_as_cot  s(    s1u::HaK!H*--r3   c                 V    dt          |                              t                    z  S r  )r   r   r   r   s      r1   r   zcsc._eval_rewrite_as_cos  r  r3   c                 :    t          t          dz  |z
  d          S r   r  r   s      r1   r  zcsc._eval_rewrite_as_sec  r  r3   c                 V    dt          |                              t                    z  S r  )r   r   r   r   s      r1   r   zcsc._eval_rewrite_as_tan  r  r3   r{   c                     |dk    r6t          | j        d                    t          | j        d                   z  S t          | |          r   )r   r9   r  r	   r   s     r1   r   z	csc.fdiff  sH    q= 	5	!%%%c$)A,&7&777$T8444r3   c                 X    | j         d         }|j        r|t          z  j        du rdS d S d S rA   re  r?  s     r1   rK  zcsc._eval_is_complex  rf  r3   c                 B   | dk    rdt          |          z  S | dk     s	| dz  dk    rt          j        S t          |          }| dz  dz   }t          j        |dz
  z  dz  dd|z  dz
  z  dz
  z  t	          d|z            z  |d|z  dz
  z  z  t          d|z            z  S rL  )r   r   rR   r   r   r   r  s       r1   r   zcsc.taylor_term  s     6 	@WQZZ<U 	@a!eqj 	@6M

A1qAMAE*1,a!A#'lQ.>?acNN##$qsQw<009!A#? @r3   r   c                 *   ddl m} ddlm} | j        d         }|                    |d                                          }|t          z  }|j        r2||t          z  z
  	                    |          }	t          j        |z  |	z  S |t          j        u r*|                    |d ||          j        rdnd          }|t          j        t          j        fv r  |t          j        t          j                  S |j        r|                     |          n| S )Nr   r   r6  r+  r,  r-  r  r9  s
             r1   r8  zcsc._eval_as_leading_term  s   AAAAAA;;;;;;ilXXa^^""$$rE< 	)"*--a00BM1$b(("" 	K1aBBtHH,@%ISScJJB!*a011 	?;q11:>>> "6tyy}}}$6r3   rf   rL  r  )rg   rh   ri   rj   r   rz  rx  r   rx  r   r   r   r  r   r   rK  rO  r   r   r8  rH   r3   r1   r  r  X  s        ! !F NG$ $ $ $  , , ,. . .' ' '/ / /) ) )5 5 5 5  
 	@ 	@ W \	@7 7 7 7 7 7r3   r  c                   d    e Zd ZdZej        fZddZed             Z	ddZ
d Zd Zd	 Zd
 ZeZdS )r  a  
    Represents an unnormalized sinc function:

    .. math::

        \operatorname{sinc}(x) =
        \begin{cases}
          \frac{\sin x}{x} & \qquad x \neq 0 \\
          1 & \qquad x = 0
        \end{cases}

    Examples
    ========

    >>> from sympy import sinc, oo, jn
    >>> from sympy.abc import x
    >>> sinc(x)
    sinc(x)

    * Automated Evaluation

    >>> sinc(0)
    1
    >>> sinc(oo)
    0

    * Differentiation

    >>> sinc(x).diff()
    cos(x)/x - sin(x)/x**2

    * Series Expansion

    >>> sinc(x).series()
    1 - x**2/6 + x**4/120 + O(x**6)

    * As zero'th order spherical Bessel Function

    >>> sinc(x).rewrite(jn)
    jn(0, x)

    See also
    ========

    sin

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Sinc_function

    r{   c                     | j         d         }|dk    r(t          |          |z  t          |          |dz  z  z
  S t          | |          rL  )r9   r   r   r	   )r=   r   r   s      r1   r   z
sinc.fdiff  sN    IaLq= 		5 q66!8c!ffQTk))$T8444r3   c                    |j         rt          j        S |j        r@|t          j        t          j        fv rt          j        S |t          j        u rt          j        S |t          j        u rt          j        S |	                                r | |           S t          |          }|R|j        r"t          |j                   rt          j        S d S d|z  j        r!t          j        |t          j        z
  z  |z  S d S d S r   )r;   r   r}   r   r   r   rR   r   rl   r   rC   rt   r   r   rs   )r   r   rD   s      r1   r   z	sinc.eval  s   ; 	5L= 	qz1#566 v u!## 	5L'')) 	3t99S>> 	>" >S[)) "6M" "H*( >}x!&'89#==	> 	>> >r3   r   c                 j    | j         d         }t          |          |z                      |||          S r  )r9   r   r   r  s        r1   r   zsinc._eval_nseries  s/    IaLAq''1d333r3   c                 &    ddl m}  |d|          S )Nr   )jn)sympy.functions.special.besselr  )r=   r   r   r  s       r1   _eval_rewrite_as_jnzsinc._eval_rewrite_as_jn  s$    555555r!Szzr3   c                     t          t          |          |z  t          |t          j                  ft          j        t          j        f          S rf   )r(   r   r   r   rR   r}   truer   s      r1   rx  zsinc._eval_rewrite_as_sin!  s3    #c((3,3815!&/JJJr3   c                     | j         d         j        rdS t          | j         d                   \  }}|j        rt	          |j        |j        g          S |j        r	|j        rdS d S d S )Nr   TF)r9   is_infiniterz   r;   r   rt   
is_nonzeror   rC  s      r1   rF  zsinc._eval_is_zero$  s    9Q<# 	4#DIaL11g< 	Gg0'2DEFFF> 	g0 	5	 	 	 	r3   c                 R    | j         d         j        s| j         d         j        rdS d S r:  )r9   rP   r@  r  s    r1   r>  zsinc._eval_is_real-  s2    9Q<( 	DIaL,E 	4	 	r3   NrL  rM  )rg   rh   ri   rj   r   rl   rm   r   rN  r   r   r  rx  rF  r>  r@  rH   r3   r1   r  r    s        3 3h ')N5 5 5 5 > > [>.4 4 4 4  K K K     $OOOr3   r  c                       e Zd ZdZej        ej        ej        ej        fZ	e
ed                         Ze
ed                         Ze
ed                         ZdS )InverseTrigonometricFunctionz/Base class for inverse trigonometric functions.c                  |   i t          d          dz  t          dz  t          d          dz  t          dz  dt          d          z  t          dz  t          dt          d          z
  dz            t          dz  t          d          t          dt          d          z
            z  dz  t          dz  t          dt          d          z   dz            t          t          dd          z  t          d          t          dt          d          z             z  dz  t          t          dd          z  t          j        t          dz  t          dt          d          z
            dz  t          dz  t          t          j        t          d          dz  z
            t          dz  t          dt          d          z             dz  t          t          dd          z  t          t          j        t          d          dz  z             t          t          dd          z  t          d          dz
  dz  t          dz  dt          d          z
  dz  t           dz  t          d          dz   dz  t          t          dd          z  t          d          dz  t          d          dz  z
  t          d	z  t          d           dz  t          d          dz  z   t           d	z  t          d          dz
  t          d          z  t          d	z  dt          d          z
  t          d          z  t           d	z  t          d          dz  t          d          dz  z   t          t          dd	          z  dt          d          z   t          d          z  t          t          dd	          z  iS )
Nr   ro   rU  r{   r   r   rY  r[  re  )r%   r   r   r   rs   rH   r3   r1   _asin_tablez(InverseTrigonometricFunction._asin_table=  s3   

GGAIr!t
GGAIr!t
 d1ggIr!t
 !d1gg+q!!2a4	

 GGDT!WW%%%a'A
 !d1gg+q!!2hq!nn#4
 GGDT!WW%%%a'HQNN):
 FBqD
 T!WWaA
 $q''!)#$$bd
 T!WWaHQNN!2
 $q''!)#$$b!Q&7
 !WWq[!ORU
 a[!ObSV
 !WWq[!ORB/
  GGAIQ	!2b5!
" !WWHQJa"RCF#
$ !WWq[$q''!2b5a[$q''!B3r6GGAIQ	!2hq"oo#5a[$q''!2hq"oo#5+
 
 	
r3   c                     t          d          dz  t          dz  dt          d          z  t          dz  t          d          t          dz  t          d          dz
  t          dz  dt          d          z
  t           dz  dt          d          z   t          t          dd          z  t          ddt          d          z  z
            t          dz  t          ddt          d          z  z             t          t          dd          z  t          ddt          d          z  dz  z
            t          dz  t          ddt          d          z  dz  z             t          t          dd          z  dt          d          z
  t          dz  d	t          d          z   t           dz  dt          d          z   t          t          dd          z  iS )
Nr   rY  r{   ro   r   r   r[  re  r   r%   r   r   rH   r3   r1   _atan_tablez(InverseTrigonometricFunction._atan_table[  sa    GGAIr!td1ggIr!tGGRTGGaKAQK"QQKHQNN*QtAwwYAQtAwwYHQNN!2QtAwwYq[!!2b5QtAwwYq[!!2hq"oo#5QKBaL2#b&QKHQOO+
 	
r3   c                     i dt          d          z  dz  t          dz  t          d          t          dz  t          ddt          d          z  dz  z             t          dz  dt          t          dd          t          d          dz  z
            z  t          dz  t          ddt          d          z  dz  z
            t          t          dd          z  dt          t          dd          t          d          dz  z             z  t          t          dd          z  dt          dz  t          ddt          d          z  z             t          dz  dt          dt          d          z
            z  t          dz  t          ddt          d          z  z
            t          t          dd          z  dt          dt          d          z             z  t          t          dd          z  dt          d          z   t          dz  t          d          dz
  t          t          dd          z  t          d          dz
   t          t          d	d          z  t          d          t          d          z   t          d
z  t          d          t          d          z
  t          t          dd
          z  t          d          t          d          z
   t          t          dd
          z  S )Nro   r   rU  r   r{   r   rY  r[  re  r  rH   r3   r1   _acsc_tablez(InverseTrigonometricFunction._acsc_tablep  s   

d1ggIaKA
GGRT
 QtAwwYq[!!2a4
 d8Aq>>DGGAI-...1	

 QtAwwYq[!!2hq!nn#4
 d8Aq>>DGGAI-...8Aq>>0A
 r!t
 QtAwwYA
 d1tAww;A
 QtAwwYHQNN!2
 d1tAww;HQNN!2
 QKB
 GGaKHQOO+
 1ggkNBxB///
 GGd1ggr"u
  GGd1ggr(1b//1!
" 1ggQ "Xb"%5%5"5#
 	
r3   N)rg   rh   ri   rj   r   r}   r   rR   rl   rm   rO  r   r  r  r  rH   r3   r1   r  r  9  s        99eQ]AFA4EFN
 
 W \
8 
 
 W \
& 
 
 W \
 
 
r3   r  c                       e Zd ZdZddZd Zd Zd Zed             Z	e
ed                         ZddZddZd Zd Zd ZeZd Zd Zd Zd ZddZd	S )r   ab  
    The inverse sine function.

    Returns the arcsine of x in radians.

    Explanation
    ===========

    ``asin(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, 0, 1, -1\}$ and for some instances when the
    result is a rational multiple of $\pi$ (see the ``eval`` class method).

    A purely imaginary argument will lead to an asinh expression.

    Examples
    ========

    >>> from sympy import asin, oo
    >>> asin(1)
    pi/2
    >>> asin(-1)
    -pi/2
    >>> asin(-oo)
    oo*I
    >>> asin(oo)
    -oo*I

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    acsc, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.23
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcSin

    r{   c                 t    |dk    r#dt          d| j        d         dz  z
            z  S t          | |          Nr{   r   ro   r%   r9   r	   r   s     r1   r   z
asin.fdiff  s@    q= 	5T!dilAo-....$T8444r3   c                 z     | j         | j         }|j         | j         k    r|j        d         j        rdS d S |j        S r7   r8   r9   r:   r<   s     r1   r?   zasin._eval_is_rational  M    DIty!6TY 	!vay$ u  = r3   c                 N    |                                  o| j        d         j        S r  )r<  r9   is_positiver  s    r1   _eval_is_positivezasin._eval_is_positive  "    **,,I11IIr3   c                 N    |                                  o| j        d         j        S r  )r<  r9   r3  r  s    r1   _eval_is_negativezasin._eval_is_negative  r  r3   c                 <   |j         r|t          j        u rt          j        S |t          j        u rt          j        t          j        z  S |t          j        u rt          j        t          j        z  S |j        rt          j        S |t          j        u r
t          dz  S |t          j
        u rt           dz  S |t          j        u rt          j        S |                                r | |            S |j        r |                                 }||v r||         S t          |          }|ddlm} t          j         ||          z  S |j        rt          j        S t%          |t&                    rj|j        d         }|j        rV|dt          z  z  }|t          k    r
t          |z
  }|t          dz  k    r
t          |z
  }|t           dz  k     rt           |z
  }|S t%          |t,                    r.|j        d         }|j        rt          dz  t/          |          z
  S d S d S )Nro   r   )asinh)r   r   r   r   r   r0   r;   rR   r}   r   r   rl   r   	is_numberr  r2   r   r  r.   r   r9   is_comparabler   r   )r   r   
asin_tabler   r  angs         r1   r   z	asin.eval  s5   = 	ae| u
" 	)!/99** z!/11 v !t% s1u!## 	%$$'')) 	CII:= 	'**Jj  '!#&055 	2CCCCCC?55>>11; 	6Mc3 	(1+C  qt8 #s(C A: #s(C"Q; $#)C
c3 	((1+C  (!td3ii''	( 	(( (r3   c                 J   | 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  || z  z  | z  S r   )r   rR   r   r   r   rs   r   r   r   r   r   r  Rr   s          r1   r   zasin.taylor_term 	  s     q5 	"AEQJ 	"6M

A>""a' "AE ""2&!a%!|QAY/144UqL#AFA..aLLs1a4xz!r3   Nr   c                    | j         d         }|                    |d                                          }|j        r|                    |          S |t
          j         t
          j        t
          j        fv rB|                     t                    
                    |||                                          S |dk    r|                    ||          }t          |          dk     r5|j        r.|t
          j        k     rt            |                     |          z
  S t          |          dk    r4|j        r-|t
          j        k    rt           |                     |          z
  S |                     |          S Nr   r   r   )r9   r   r0  r;   r1  r   r}   rl   r   r"   r8  rQ   r.  r    r=  r   r   r8   r=   r   r   r   r   r6  s         r1   r8  zasin._eval_as_leading_term	  sE   ilXXa^^""$$: 	*&&q)))15&!%!233 	]<<$$::14d:SSZZ\\\19 	$771d##Dd88a< 	&BJ 	&2+= 	&32&&XX\ 	&bj 	&R!%Z 	&		"%%yy}}r3   c                    ddl m} | j        d                             |d          }|t          j        u rt          dd          }t          t          j        |dz  z
                                t                    
                    |dd|z            }t          j        | j        d         z
  }	|	                    |          }
|	|
z
  |
z  }|                    |d          s4|dk    r |d          n"t          dz   |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S |t          j        u rt          dd          }t          t          j        |dz  z                                 t                    
                    |dd|z            }t          j        | j        d         z   }	|	                    |          }
|	|
z
  |
z  }|                    |d          s5|dk    r |d          n#t           dz   |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S t)          j        | |||          }|t          j        u r|S |dk    r!| j        d                             ||          }t/          |          dk     r"|j        r|t          j        k     rt           |z
  S t/          |          dk    r!|j        r|t          j        k    r
t          |z
  S |S 	Nr   Or|  Tpositivero   r{   r  )sympy.series.orderr  r9   r   r   r}   r   r   r   r"   nseriesr1  is_meromorphicr   r%   r   removeOrQ   powsimpr   r   rl   r.  r    r=  r=   r   r   r   r   r  arg0r|  serarg1r`   ra   res1ress                 r1   r   zasin._eval_nseries 	  s   ((((((y|  A&&15= 
	NcD)))Aquq!t|$$,,S1199!Q!DDC549Q<'D$$Q''AAA##Aq)) = Av<qqttt2a4!!DGG**+<<	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM1=  
	NcD)))Aq}q!t+,,44S99AA!Q!LLC549Q<'D$$Q''AAA##Aq)) > Av=qqtttB3q511T!WW::+==	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$ 	J19 	-9Q<##At,,Dd88a< 	DL 	TAM-A 	39XX\ 	dl 	tae| 	8O
r3   c                 6    t           dz  t          |          z
  S r   r   r   r!  s      r1   _eval_rewrite_as_acoszasin._eval_rewrite_as_acosF	      !td1gg~r3   c           
      X    dt          |dt          d|dz  z
            z   z            z  S r   )r   r%   r!  s      r1   _eval_rewrite_as_atanzasin._eval_rewrite_as_atanI	  s-    aT!ad(^^+,----r3   c           	          t           j         t          t           j        |z  t          d|dz  z
            z             z  S r  r   r0   r"   r%   r!  s      r1   _eval_rewrite_as_logzasin._eval_rewrite_as_logL	  s4    AOA$5QAX$F G GGGr3   c           	      X    dt          dt          d|dz  z
            z   |z            z  S r   )r   r%   r   s      r1   _eval_rewrite_as_acotzasin._eval_rewrite_as_acotP	  s/    q4CF
+++S01111r3   c                 <    t           dz  t          d|z            z
  S r   r   r   r   s      r1   _eval_rewrite_as_aseczasin._eval_rewrite_as_asecS	      !td1S5kk!!r3   c                 &    t          d|z            S r  )r   r   s      r1   _eval_rewrite_as_acsczasin._eval_rewrite_as_acscV	      AcE{{r3   c                 X    | j         d         }|j        odt          |          z
  j        S Nr   r{   r9   rP   r[   is_nonnegativer=   r   s     r1   r<  zasin._eval_is_extended_realY	  (    IaL!Aq3q66z&AAr3   c                     t           S r  r   r   s     r1   r  zasin.inverse]	  	     
r3   rL  r  rM  )rg   rh   ri   rj   r   r?   r  r  rN  r   rO  r   r   r8  r   r  r  r	  _eval_rewrite_as_tractabler  r  r  r<  r  rH   r3   r1   r   r     sY       ( (T5 5 5 5! ! !J J JJ J J 4( 4( [4(l " " W \"    $ $ $ $L  . . .H H H!52 2 2" " "  B B B     r3   r   c                       e Zd ZdZddZd Zed             Zee	d                         Z
dd	Zd
 Zd ZddZd ZeZd Zd ZddZd Zd Zd Zd ZdS )r   a  
    The inverse cosine function.

    Returns the arc cosine of x (measured in radians).

    Examples
    ========

    ``acos(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, 0, 1, -1\}$ and for some instances when
    the result is a rational multiple of $\pi$ (see the eval class method).

    ``acos(zoo)`` evaluates to ``zoo``
    (see note in :class:`sympy.functions.elementary.trigonometric.asec`)

    A purely imaginary argument will be rewritten to asinh.

    Examples
    ========

    >>> from sympy import acos, oo
    >>> acos(1)
    0
    >>> acos(0)
    pi/2
    >>> acos(oo)
    oo*I

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acsc, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.23
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcCos

    r{   c                 t    |dk    r#dt          d| j        d         dz  z
            z  S t          | |          Nr{   r   r   ro   r  r   s     r1   r   z
acos.fdiff	  s@    q= 	5d1ty|Q.////$T8444r3   c                 z     | j         | j         }|j         | j         k    r|j        d         j        rdS d S |j        S r7   r  r<   s     r1   r?   zacos._eval_is_rational	  r  r3   c                    |j         r|t          j        u rt          j        S |t          j        u rt          j        t          j        z  S |t          j        u rt          j        t          j        z  S |j        r
t          dz  S |t          j        u rt          j	        S |t          j
        u rt          S |t          j        u rt          j        S |j        rD|                                 }||v rt          dz  ||         z
  S | |v rt          dz  ||          z   S t          |          }|t          dz  t          |          z
  S t!          |t"                    r;|j        d         }|j        r'|dt          z  z  }|t          k    rdt          z  |z
  }|S t!          |t(                    r.|j        d         }|j        rt          dz  t          |          z
  S d S d S Nro   r   )r   r   r   r   r0   r   r;   r   r}   rR   r   rl   r  r  r2   r   r.   r   r9   r  r   )r   r   r  r   r  s        r1   r   z	acos.eval	  s   = 	ae| u
" 	z!/11** )!/99 !t v% 	!## 	%$$= 	/**Jj  /!tjo--# /!tj#...055 	$a4$s))##c3 	(1+C  qt8 %B$*C
c3 	((1+C  (!td3ii''	( 	(( (r3   c                 l   | 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
  z  z  |dz  z  S | dz
  dz  }t          t          j        |          }t          |          }| |z  || z  z  | z  S r   )r   r   rR   r   r   r   rs   r   r  s          r1   r   zacos.taylor_term	  s     6 	#a4KU 	#a!eqj 	#6M

A>""a' #AE #"2&!a%!|QAY/144UqL#AFA..aLLr!tAqDy{"r3   Nr   c                    | j         d         }|                    |d                                          }|dk    r?t          d          t          t          j        |z
                      |                    z  S |t          j         t          j        fv r0|                     t                    
                    |||          S |dk    r|                    ||          }t          |          dk     r7|j        r0|t          j        k     r dt          z  |                     |          z
  S t          |          dk    r-|j        r&|t          j        k    r|                     |           S |                     |          S Nr   r{   ro   r  )r9   r   r0  r%   r   r}   r1  rl   r   r"   r8  r.  r    r=  r   r   r8   r  s         r1   r8  zacos._eval_as_leading_term	  sP   ilXXa^^""$$7 	B774 = =a @ @AAAA15&!+,, 	T<<$$::14d:SSS19 	$771d##Dd88a< 	"BJ 	"2+= 	"R4$))B--''XX\ 	"bj 	"R!%Z 	"IIbMM>!yy}}r3   c                 X    | j         d         }|j        odt          |          z
  j        S r  r  r  s     r1   r<  zacos._eval_is_extended_real	  r  r3   c                 *    |                                  S rf   )r<  r  s    r1   _eval_is_nonnegativezacos._eval_is_nonnegative	  s    **,,,r3   c                 n   ddl m} | j        d                             |d          }|t          j        u rt          dd          }t          t          j        |dz  z
                                t                    
                    |dd|z            }t          j        | j        d         z
  }	|	                    |          }
|	|
z
  |
z  }|                    |d          s)|dk    r |d          n |t          |                    S t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S |t          j        u rt          dd          }t          t          j        |dz  z                                 t                    
                    |dd|z            }t          j        | j        d         z   }	|	                    |          }
|	|
z
  |
z  }|                    |d          s1|dk    r |d          nt&           |t          |                    z   S t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S t)          j        | |||          }|t          j        u r|S |dk    r!| j        d                             ||          }t/          |          dk     r$|j        r|t          j        k     rdt&          z  |z
  S t/          |          dk    r|j        r|t          j        k    r| S |S r  )r  r  r9   r   r   r}   r   r   r   r"   r  r1  r  r%   r   r  rQ   r  r   r   r   rl   r.  r    r=  r  s                 r1   r   zacos._eval_nseries	  s   ((((((y|  A&&15= 
	NcD)))Aquq!t|$$,,S1199!Q!DDC549Q<'D$$Q''AAA##Aq)) 6 Av5qqttt11T!WW::5	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM1=  
	NcD)))Aq}q!t+,,44S99AA!Q!LLC549Q<'D$$Q''AAA##Aq)) ; Av:qqttt2$q''

?:	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$ 	J19 	-9Q<##At,,Dd88a< 	DL 	TAM-A 	R4#:XX\ 	dl 	tae| 	4K
r3   c           
          t           dz  t          j        t          t          j        |z  t	          d|dz  z
            z             z  z   S r   r   r   r0   r"   r%   r!  s      r1   r	  zacos._eval_rewrite_as_log
  sA    !tao!DQTNN2334 4 	4r3   c                 6    t           dz  t          |          z
  S r   r   r   r!  s      r1   _eval_rewrite_as_asinzacos._eval_rewrite_as_asin
  r  r3   c           	          t          t          d|dz  z
            |z            t          dz  d|t          d|dz  z            z  z
  z  z   S r  )r   r%   r   r!  s      r1   r  zacos._eval_rewrite_as_atan!
  sH    DQTNN1$%%AAd1QT6llN0B(CCCr3   c                     t           S r  r  r   s     r1   r  zacos.inverse$
  r  r3   c           
      n    t           dz  dt          dt          d|dz  z
            z   |z            z  z
  S r   )r   r   r%   r   s      r1   r  zacos._eval_rewrite_as_acot*
  s8    !taa$q36z"2"22C788888r3   c                 &    t          d|z            S r  )r   r   s      r1   r  zacos._eval_rewrite_as_asec-
  r  r3   c                 <    t           dz  t          d|z            z
  S r   r   r   r   s      r1   r  zacos._eval_rewrite_as_acsc0
  r  r3   c                     | j         d         }|                     | j         d                                                   }|j        du r|S |j        r|dz   j        r|dz
  j        r|S d S d S d S Nr   Fr{   )r9   r8   r  rP   r  is_nonpositive)r=   r  r  s      r1   r  zacos._eval_conjugate3
  s    IaLIIdil,,..//& 	H 	QU$: 	A?U 	H	 	 	 	 	 	r3   rL  r  rM  )rg   rh   ri   rj   r   r?   rN  r   rO  r   r   r8  r<  r'  r   r	  r  r-  r  r  r  r  r  r  rH   r3   r1   r   r   d	  sU       ) )V5 5 5 5! ! ! )( )( [)(V # # W \#     B B B- - -$ $ $ $L4 4 4 "6  D D D   9 9 9  " " "    r3   r   c                        e Zd ZU dZee         ed<   ej        ej         fZ	ddZ
d Zd Zd Zd Zd	 Zed
             Zeed                         ZddZddZd ZeZ fdZddZd Zd Zd Zd Zd Z xZ S )r   a  
    The inverse tangent function.

    Returns the arc tangent of x (measured in radians).

    Explanation
    ===========

    ``atan(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, 0, 1, -1\}$ and for some instances when the
    result is a rational multiple of $\pi$ (see the eval class method).

    Examples
    ========

    >>> from sympy import atan, oo
    >>> atan(0)
    0
    >>> atan(1)
    pi/4
    >>> atan(oo)
    pi/2

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acsc, acos, asec, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.23
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcTan

    r9   r{   c                 Z    |dk    rdd| j         d         dz  z   z  S t          | |          r  r9   r	   r   s     r1   r   z
atan.fdiffg
  s8    q= 	5a$)A,/)**$T8444r3   c                 z     | j         | j         }|j         | j         k    r|j        d         j        rdS d S |j        S r7   r  r<   s     r1   r?   zatan._eval_is_rationalm
  r  r3   c                 &    | j         d         j        S r  )r9   is_extended_positiver  s    r1   r  zatan._eval_is_positiveu
  s    y|00r3   c                 &    | j         d         j        S r  )r9   is_extended_nonnegativer  s    r1   r'  zatan._eval_is_nonnegativex
  s    y|33r3   c                 &    | j         d         j        S r  )r9   r;   r  s    r1   rF  zatan._eval_is_zero{
  s    y|##r3   c                 &    | j         d         j        S r  r;  r  s    r1   r>  zatan._eval_is_real~
  r_  r3   c                     |j         r|t          j        u rt          j        S |t          j        u r
t          dz  S |t          j        u rt           dz  S |j        rt          j        S |t          j        u r
t          dz  S |t          j	        u rt           dz  S |t          j
        u r#ddlm}  |t           dz  t          dz            S |                                r | |            S |j        r |                                 }||v r||         S t!          |          }|ddlm} t          j         ||          z  S |j        rt          j        S t)          |t*                    r8|j        d         }|j        r$|t          z  }|t          dz  k    r
|t          z  }|S t)          |t0                    rH|j        d         }|j        r6t          dz  t3          |          z
  }|t          dz  k    r
|t          z  }|S d S d S )Nro   rU  r   r   )atanh)r   r   r   r   r   r   r;   rR   r}   r   rl   r   r   r   r  r  r2   r   rB  r0   r.   r   r9   r  r   r   )r   r   r   
atan_tabler   rB  r  s          r1   r   z	atan.eval
  s4   = 	ae| u
" 	!t** s1u v !t% s1u!## 	,EEEEEE;s1ubd+++'')) 	CII:= 	'**Jj  '!#&055 	2CCCCCC?55>>11; 	6Mc3 	(1+C  r	A: 2IC
c3 	(1+C  dT#YY&A: 2IC
	 	 r3   c                     | dk     s	| dz  dk    rt           j        S t          |          }t           j        | dz
  dz  z  || z  z  | z  S r  )r   rR   r   r   r   r   r   s      r1   r   zatan.taylor_term
  sT     q5 	6AEQJ 	66M

A=AEA:.q!t3A55r3   Nr   c                 Z   | j         d         }|                    |d                                          }|j        r|                    |          S |t
          j         t
          j        t
          j        fv rB|                     t                    
                    |||                                          S |dk    r|                    ||          }t          |          dk     rNt          |          j        r:t          |          t
          j        k    r|                     |          t"          z
  S t          |          dk    rNt          |          j        r:t          |          t
          j        k     r|                     |          t"          z   S |                     |          S r  )r9   r   r0  r;   r1  r   r0   rl   r   r"   r8  rQ   r.  r!   r    r}   r8   r   r   r  s         r1   r8  zatan._eval_as_leading_term
  s\   ilXXa^^""$$: 	*&&q)))1?"AOQ5FGG 	]<<$$::14d:SSZZ\\\19 	$771d##Dd88a< 	&BrFFN 	&r"vv~ 	&99R==2%%XX\ 	&bffn 	&B!-1G 	&99R==2%%yy}}r3   c                 X   | j         d                             |d          }t          j        | |||          }|dk    r!| j         d                             ||          }|t
          j        u rt          |          dk    r
|t          z
  S |S t          |          dk     r;t          |          j	        r't          |          t
          j        k    r
|t          z
  S t          |          dk    r;t          |          j	        r't          |          t
          j        k     r
|t          z   S |S rN  )r9   r   r   r   r.  r   rl   r!   r   r;   r    r}   r   r=   r   r   r   r   r  r   s          r1   r   zatan._eval_nseries
  s   y|  A&&$T1===19 	-9Q<##At,,D1$$ 	$xx!|  RxJd88a< 	BtHH, 	DAE1A 	8OXX\ 	bhh. 	2d88am3K 	8O
r3   c                     t           j        dz  t          t           j        t           j        |z  z
            t          t           j        t           j        |z  z             z
  z  S r   )r   r0   r"   r}   r!  s      r1   r	  zatan._eval_rewrite_as_log
  sL    q #aeaoa.?&?"@"@!%!/!++,,#- . 	.r3   c                    |d         t           j        u r=t          dz  t          d| j        d         z            z
                      |||          S |d         t           j        u r>t           dz  t          d| j        d         z            z
                      |||          S t                                          ||||          S r  )	r   r   r   r   r9   r   r   super_eval_aseriesr=   r   args0r   r   	__class__s        r1   rL  zatan._eval_aseries
  s    8qz! 	<qD4$)A,///>>q!TJJJ1X++ 	<CED49Q<000??1dKKK77((E1d;;;r3   c                     t           S r  rX  r   s     r1   r  zatan.inverse
  r  r3   c           
          t          |dz            |z  t          dz  t          dt          d|dz  z             z            z
  z  S r   r%   r   r   r   s      r1   r-  zatan._eval_rewrite_as_asin
  sB    CF||CAQtAQJ/?/?-?(@(@!@AAr3   c           	      x    t          |dz            |z  t          dt          d|dz  z             z            z  S r   r%   r   r   s      r1   r  zatan._eval_rewrite_as_acos
  s9    CF||CQtAQJ'7'7%7 8 888r3   c                 &    t          d|z            S r  rG  r   s      r1   r  zatan._eval_rewrite_as_acot
  r  r3   c                 r    t          |dz            |z  t          t          d|dz  z                       z  S r   r%   r   r   s      r1   r  zatan._eval_rewrite_as_asec
  s4    CF||CT!c1f*%5%5 6 666r3   c           	          t          |dz            |z  t          dz  t          t          d|dz  z                       z
  z  S r   r%   r   r   r   s      r1   r  zatan._eval_rewrite_as_acsc
  s=    CF||CAT!c1f*-=-=(>(>!>??r3   rL  r  rM  )!rg   rh   ri   rj   tTupler   __annotations__r   r0   rm   r   r?   r  r'  rF  r>  rN  r   rO  r   r   r8  r   r	  r  rL  r  r-  r  r  r  r  __classcell__rO  s   @r1   r   r   <
  s        $ $L ,o'78N5 5 5 5! ! !1 1 14 4 4$ $ $- - - 2 2 [2h 6 6 W \6       . . . "6< < < < <   B B B9 9 9  7 7 7@ @ @ @ @ @ @r3   r   c                        e Zd ZdZej        ej         fZddZd Zd Z	d Z
d Zed             Zeed	                         ZddZddZ fdZd ZeZddZd Zd Zd Zd Zd Z xZS )r   a  
    The inverse cotangent function.

    Returns the arc cotangent of x (measured in radians).

    Explanation
    ===========

    ``acot(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, \tilde{\infty}, 0, 1, -1\}$
    and for some instances when the result is a rational multiple of $\pi$
    (see the eval class method).

    A purely imaginary argument will lead to an ``acoth`` expression.

    ``acot(x)`` has a branch cut along $(-i, i)$, hence it is discontinuous
    at 0. Its range for real $x$ is $(-\frac{\pi}{2}, \frac{\pi}{2}]$.

    Examples
    ========

    >>> from sympy import acot, sqrt
    >>> acot(0)
    pi/2
    >>> acot(1)
    pi/4
    >>> acot(sqrt(3) - 2)
    -5*pi/12

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acsc, acos, asec, atan, atan2

    References
    ==========

    .. [1] http://dlmf.nist.gov/4.23
    .. [2] http://functions.wolfram.com/ElementaryFunctions/ArcCot

    r{   c                 Z    |dk    rdd| j         d         dz  z   z  S t          | |          r  r9  r   s     r1   r   z
acot.fdiff.  s8    q= 	5q49Q<?*++$T8444r3   c                 z     | j         | j         }|j         | j         k    r|j        d         j        rdS d S |j        S r7   r  r<   s     r1   r?   zacot._eval_is_rational4  r  r3   c                 &    | j         d         j        S r  )r9   r  r  s    r1   r  zacot._eval_is_positive<  s    y|**r3   c                 &    | j         d         j        S r  )r9   r3  r  s    r1   r  zacot._eval_is_negative?  s    y|''r3   c                 &    | j         d         j        S r  r;  r  s    r1   r<  zacot._eval_is_extended_realB  r_  r3   c                 0   |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          dz  S |t          j        u r
t          dz  S |t          j	        u rt           dz  S |t          j
        u rt          j        S |                                r | |            S |j        rE|                                 }||v r-t          dz  ||         z
  }|t          dz  k    r
|t          z  }|S t          |          }|ddlm} t          j          ||          z  S |j        rt          t          j        z  S t'          |t(                    r8|j        d         }|j        r$|t          z  }|t          dz  k    r
|t          z  }|S t'          |t.                    rH|j        d         }|j        r6t          dz  t1          |          z
  }|t          dz  k    r
|t          z  }|S d S d S )Nro   rU  r   )acoth)r   r   r   r   rR   r   r;   r   r}   r   rl   r   r  r  r2   r   re  r0   rs   r.   r   r9   r  r   r   )r   r   rC  r  r   re  s         r1   r   z	acot.evalE  s7   = 	ae| u
" 	v** v 1u !t% s1u!## 	6M'')) 	CII:= 	**Jj  dZ_,A: 2IC
055 	3CCCCCCO#EE'NN22; 	af9c3 	(1+C  r	A: 2IC
c3 	(1+C  dT#YY&A: 2IC
	 	 r3   c                     | dk    r
t           dz  S | dk     s	| dz  dk    rt          j        S t          |          }t          j        | dz   dz  z  || z  z  | z  S r  )r   r   rR   r   r   rE  s      r1   r   zacot.taylor_term{  si     6 	6a4KU 	6a!eqj 	66M

A=AEA:.q!t3A55r3   Nr   c                    | j         d         }|                    |d                                          }|t          j        u rd|z                      |          S |dk    r|                    ||          }|t          j         t          j        t          j        fv rB| 	                    t                                        |||                                          S t          |          dk    rkt          |          j        rWt          |          t          j        k    r:t          |          t          j        k     r|                     |          t$          z   S t          |          dk     rkt          |          j        rWt          |          t          j        k     r:t          |          t          j        k    r|                     |          t$          z
  S |                     |          S )Nr   r{   r  )r9   r   r0  r   rl   r1  r.  r0   rR   r   r"   r8  rQ   r!   r;   r    r}   r8   r   r   r  s         r1   r8  zacot._eval_as_leading_term  s   ilXXa^^""$$"" 	.cE**1---19 	$771d##D1?"AOQV<< 	]<<$$::14d:SSZZ\\\d88a< 	&BrFFN 	&r"vv 	&2b66AE> 	&99R==2%%d88a< 	&BrFFN 	&r"vv 	&2b66AMCY 	&99R==2%%yy}}r3   c                    | j         d                             |d          }t          j        | |||          }|t          j        u r|S |dk    r!| j         d                             ||          }|j        rt          |          dk     r
|t          z
  S |S t          |          dk    rXt          |          j        rDt          |          t          j        k    r't          |          t          j        k     r
|t          z   S t          |          dk     rXt          |          j        rDt          |          t          j        k     r't          |          t          j        k    r
|t          z
  S |S rN  )r9   r   r   r   r   rl   r.  r;   r!   r   r    rR   r}   r   rH  s          r1   r   zacot._eval_nseries  sK   y|  A&&$T1===1$$ 	J19 	-9Q<##At,,D< 	$xx!|  RxJd88a< 	BtHH, 	DAF1B 	r$xxRSRWGW 	8Od88a< 	BtHH, 	DAF1B 	r$xxRSR_G_ 	8O
r3   c                    |d         t           j        u r=t          dz  t          d| j        d         z            z
                      |||          S |d         t           j        u rKt          t          dd          z  t          d| j        d         z            z
                      |||          S t          t          |           
                    ||||          S )Nr   ro   r{   r   )r   r   r   r   r9   r   r   r   rK  r   rL  rM  s        r1   rL  zacot._eval_aseries  s    8qz! 	FqD4$)A,///>>q!TJJJ1X++ 	Fx1~~%Qty|^(<(<<KKAqRVWWWt$$221eQEEEr3   c                     t           j        dz  t          dt           j        |z  z
            t          dt           j        |z  z             z
  z  S r   )r   r0   r"   r!  s      r1   r	  zacot._eval_rewrite_as_log  sH    q #a!/!*;&;"<"<!aoa''((#) * 	*r3   c                     t           S r  r&  r   s     r1   r  zacot.inverse  r  r3   c           	          |t          d|dz  z            z  t          dz  t          t          |dz             t          |dz   dz
            z            z
  z  S r  rR  r   s      r1   r-  zacot._eval_rewrite_as_asin  sZ    D36NN"AT36']]4a!+<+<<===? 	@r3   c                     |t          d|dz  z            z  t          t          |dz             t          |dz   dz
            z            z  S r  rT  r   s      r1   r  zacot._eval_rewrite_as_acos  sK    4#q&>>!$tS!VG}}T36'A+5F5F'F"G"GGGr3   c                 &    t          d|z            S r  r  r   s      r1   r  zacot._eval_rewrite_as_atan  r  r3   c                     |t          d|dz  z            z  t          t          d|dz  z   |dz  z                      z  S r  rW  r   s      r1   r  zacot._eval_rewrite_as_asec  sA    4#q&>>!$tQaZa,?'@'@"A"AAAr3   c           	          |t          d|dz  z            z  t          dz  t          t          d|dz  z   |dz  z                      z
  z  S r  rY  r   s      r1   r  zacot._eval_rewrite_as_acsc  sJ    4#q&>>!2a4$tQaZa4G/H/H*I*I#IJJr3   rL  r  rM  )rg   rh   ri   rj   r   r0   rm   r   r?   r  r  r<  rN  r   rO  r   r   r8  r   rL  r	  r  r  r-  r  r  r  r  r\  r]  s   @r1   r   r     s       ) )T o'78N5 5 5 5! ! !+ + +( ( (- - - 3 3 [3j 6 6 W \6       "F F F F F* * * "6   @ @ @H H H  B B BK K K K K K Kr3   r   c                   v    e Zd ZdZed             ZddZddZddZdd	Z	d
 Z
d ZeZd Zd Zd Zd Zd ZdS )r   a  
    The inverse secant function.

    Returns the arc secant of x (measured in radians).

    Explanation
    ===========

    ``asec(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, 0, 1, -1\}$ and for some instances when the
    result is a rational multiple of $\pi$ (see the eval class method).

    ``asec(x)`` has branch cut in the interval $[-1, 1]$. For complex arguments,
    it can be defined [4]_ as

    .. math::
        \operatorname{sec^{-1}}(z) = -i\frac{\log\left(\sqrt{1 - z^2} + 1\right)}{z}

    At ``x = 0``, for positive branch cut, the limit evaluates to ``zoo``. For
    negative branch cut, the limit

    .. math::
        \lim_{z \to 0}-i\frac{\log\left(-\sqrt{1 - z^2} + 1\right)}{z}

    simplifies to :math:`-i\log\left(z/2 + O\left(z^3\right)\right)` which
    ultimately evaluates to ``zoo``.

    As ``acos(x) = asec(1/x)``, a similar argument can be given for
    ``acos(x)``.

    Examples
    ========

    >>> from sympy import asec, oo
    >>> asec(1)
    0
    >>> asec(-1)
    pi
    >>> asec(0)
    zoo
    >>> asec(-oo)
    pi/2

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acsc, acos, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.23
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcSec
    .. [4] http://reference.wolfram.com/language/ref/ArcSec.html

    c                    |j         rt          j        S |j        rI|t          j        u rt          j        S |t          j        u rt          j        S |t          j        u rt          S |t          j	        t          j
        t          j        fv r
t          dz  S |j        rD|                                 }||v rt          dz  ||         z
  S | |v rt          dz  ||          z   S |j        rt          j        dz  S t          |t                     r;|j        d         }|j        r'|dt          z  z  }|t          k    rdt          z  |z
  }|S t          |t&                    r.|j        d         }|j        rt          dz  t)          |          z
  S d S d S r!  )r;   r   rl   r   r   r}   rR   r   r   r   r   r  r  r  Pir.   r  r9   r  r  r   r   r   
acsc_tabler  s       r1   r   z	asec.eval  s   ; 	%$$= 	ae| u v% 	1:q113DEE 	a4K= 	/**Jj  /!tjo--# /!tj#...? 	46Mc3 	(1+C  qt8 %B$*C
c3 	((1+C  (!td3ii''	( 	(( (r3   r{   c                     |dk    r7d| j         d         dz  t          dd| j         d         dz  z  z
            z  z  S t          | |          r  r9   r%   r	   r   s     r1   r   z
asec.fdiff-  sT    q= 	5dilAod1q1q/@+@&A&AABB$T8444r3   c                     t           S r  r  r   s     r1   r  zasec.inverse3  r  r3   Nr   c                 B   | j         d         }|                    |d                                          }|dk    r?t          d          t          |t          j        z
                      |                    z  S |t          j         t          j        fv r0|                     t                    
                    |||          S |dk    r|                    ||          }t          |          dk     r=|j        r6|t          j        k    r&|t          j        k     r|                     |           S t          |          dk    rG|j        r@|t          j        k     r0|t          j        k    r dt           z  |                     |          z
  S |                     |          S r$  )r9   r   r0  r%   r   r}   r1  rR   r   r"   r8  r.  r    r=  r8   r   r   r  s         r1   r8  zasec._eval_as_leading_term9  si   ilXXa^^""$$7 	B774qu = =a @ @AAAA15&!&!! 	T<<$$::14d:SSS19 	$771d##Dd88a< 	(BJ 	(2; 	(2: 	(IIbMM>!XX\ 	(bj 	(R!&[ 	(R!-=O 	(R4$))B--''yy}}r3   c                    ddl m} | j        d                             |d          }|t          j        u r[t          dd          }t          t          j        |dz  z                                 t                    
                    |dd|z            }t          j        | j        d         z   }	|	                    |          }
|	|
z
  |
z  }t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S |t          j        u r[t          dd          }t          t          j        |dz  z
                                t                    
                    |dd|z            }t          j        | j        d         z
  }	|	                    |          }
|	|
z
  |
z  }t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S t%          j        | |||          }|t          j        u r|S |dk    r!| j        d                             ||          }t+          |          dk     r*|j        r#|t          j        k    r|t          j        k     r| S t+          |          dk    r4|j        r-|t          j        k     r|t          j        k    rdt0          z  |z
  S |S Nr   r  r|  Tr  ro   r  )r  r  r9   r   r   r}   r   r   r   r"   r  r   r1  r%   r   r  rQ   r  r   rl   r.  r    r=  rR   r   r  s                 r1   r   zasec._eval_nseriesI  sM   ((((((y|  A&&15= 	NcD)))Aquq!t|$$,,S1199!Q!DDC=49Q</D$$Q''AAA	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM1=  	NcD)))Aq}q!t+,,44S99AA!Q!LLC=49Q</D$$Q''AAA	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$ 	J19 	-9Q<##At,,Dd88a< 	DL 	TAF] 	tae| 	4KXX\ 	dl 	taf} 	AU 	R4#:
r3   c                 v    | j         d         }|j        du rdS t          |dz
  j        | dz
  j        f          S r5  )r9   rP   r   r  r  s     r1   r<  zasec._eval_is_extended_realk  sE    IaL& 	5!a%/1"q&1HIJJJr3   c                     t           dz  t          j        t          t          j        |z  t	          dd|dz  z  z
            z             z  z   S r   r*  r   s      r1   r	  zasec._eval_rewrite_as_logq  sA    !taoc!/#*=Q3PQ6\@R@R*R&S&SSSSr3   c                 <    t           dz  t          d|z            z
  S r   r,  r   s      r1   r-  zasec._eval_rewrite_as_asinu  r  r3   c                 &    t          d|z            S r  )r   r   s      r1   r  zasec._eval_rewrite_as_acosx  r  r3   c                     t          |dz            |z  }t          dz  d|z
  z  |t          t          |dz  dz
                      z  z   S r   r%   r   r   r=   r   r   sx2xs       r1   r  zasec._eval_rewrite_as_atan{  sG    AqDzz!|!tQXd41q>>&:&:!:::r3   c           	          t          |dz            |z  }t          dz  d|z
  z  |t          dt          |dz  dz
            z            z  z   S r   r%   r   r   r  s       r1   r  zasec._eval_rewrite_as_acot  sL    AqDzz!|!tQXd1T!Q$(^^+;&<&<!<<<r3   c                 6    t           dz  t          |          z
  S r   r3  r   s      r1   r  zasec._eval_rewrite_as_acsc      !td3iir3   rL  r  rM  )rg   rh   ri   rj   rN  r   r   r  r8  r   r<  r	  r  r-  r  r  r  r  rH   r3   r1   r   r     s       9 9v #( #( [#(J5 5 5 5              DK K KT T T!5" " "  ; ; ;= = =         r3   r   c                   p    e Zd ZdZed             ZddZddZddZdd	Z	d
 Z
e
Zd Zd Zd Zd Zd ZdS )r   aT  
    The inverse cosecant function.

    Returns the arc cosecant of x (measured in radians).

    Explanation
    ===========

    ``acsc(x)`` will evaluate automatically in the cases
    $x \in \{\infty, -\infty, 0, 1, -1\}$` and for some instances when the
    result is a rational multiple of $\pi$ (see the ``eval`` class method).

    Examples
    ========

    >>> from sympy import acsc, oo
    >>> acsc(1)
    pi/2
    >>> acsc(-1)
    -pi/2
    >>> acsc(oo)
    0
    >>> acsc(-oo) == acsc(oo)
    True
    >>> acsc(0)
    zoo

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acos, asec, atan, acot, atan2

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] http://dlmf.nist.gov/4.23
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcCsc

    c                 p   |j         rt          j        S |j        rK|t          j        u rt          j        S |t          j        u r
t          dz  S |t          j        u rt           dz  S |t          j        t          j	        t          j        fv rt          j
        S |                                r | |            S |j        rt          j
        S |j        r |                                 }||v r||         S t          |t                     rj|j        d         }|j        rV|dt          z  z  }|t          k    r
t          |z
  }|t          dz  k    r
t          |z
  }|t           dz  k     rt           |z
  }|S t          |t&                    r.|j        d         }|j        rt          dz  t)          |          z
  S d S d S r!  )r;   r   rl   r   r   r}   r   r   r   r   rR   r   r  r  r  r.   r  r9   r  r  r   rt  s       r1   r   z	acsc.eval  s   ; 	%$$= 	ae| u !t% s1u1:q113DEE 	6M'')) 	CII:? 	6M= 	'**Jj  '!#&c3 	(1+C  qt8 #s(C A: #s(C"Q; $#)C
c3 	((1+C  (!td3ii''	( 	(( (r3   r{   c                     |dk    r7d| j         d         dz  t          dd| j         d         dz  z  z
            z  z  S t          | |          r  rw  r   s     r1   r   z
acsc.fdiff  sT    q= 	5ty|QtA$)A,/0A,A'B'BBCC$T8444r3   c                     t           S r  r  r   s     r1   r  zacsc.inverse  r  r3   Nr   c                 H   | j         d         }|                    |d                                          }|t          j         t          j        t          j        fv rB|                     t                                        |||          	                                S |t          j
        u rd|z                      |          S |dk    r|                    ||          }t          |          dk     rD|j        r=|t          j        k    r-|t          j        k     rt          |                     |          z
  S t          |          dk    rE|j        r>|t          j        k     r.|t          j        k    rt           |                     |          z
  S |                     |          S )Nr   r  r{   )r9   r   r0  r   r}   rR   r   r"   r8  rQ   rl   r1  r.  r    r=  r   r8   r   r  s         r1   r8  zacsc._eval_as_leading_term  sh   ilXXa^^""$$15&!%(( 	]<<$$::14d:SSZZ\\\"" 	.cE**1---19 	$771d##Dd88a< 	'BJ 	'2; 	'2: 	'		"%%XX\ 	'bj 	'R!&[ 	'R!-=O 	'32&&yy}}r3   c                    ddl m} | j        d                             |d          }|t          j        u r[t          dd          }t          t          j        |dz  z                                 t                    
                    |dd|z            }t          j        | j        d         z   }	|	                    |          }
|	|
z
  |
z  }t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S |t          j        u r[t          dd          }t          t          j        |dz  z
                                t                    
                    |dd|z            }t          j        | j        d         z
  }	|	                    |          }
|	|
z
  |
z  }t          t          j        |z                                 |||          }|                                t          |
          z                                  }|                                                    ||                                                                           |||z  |          z   S t%          j        | |||          }|t          j        u r|S |dk    r!| j        d                             ||          }t+          |          dk     r1|j        r*|t          j        k    r|t          j        k     r
t0          |z
  S t+          |          dk    r2|j        r+|t          j        k     r|t          j        k    rt0           |z
  S |S r{  )r  r  r9   r   r   r}   r   r   r   r"   r  r   r1  r%   r   r  rQ   r  r   rl   r.  r    r=  rR   r   r  s                 r1   r   zacsc._eval_nseries  sM   ((((((y|  A&&15= 	NcD)))Aquq!t|$$,,S1199!Q!DDC=49Q</D$$Q''AAA	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM1=  	NcD)))Aq}q!t+,,44S99AA!Q!LLC=49Q</D$$Q''AAA	??00ad0CCD<<>>$q'')1133C;;==%%a--4466>>@@11QT1::MM$T1===1$$ 	J19 	-9Q<##At,,Dd88a< 	DL 	TAF] 	tae| 	8OXX\ 	dl 	taf} 	AU 	39
r3   c           
          t           j         t          t           j        |z  t          dd|dz  z  z
            z             z  S r  r  r   s      r1   r	  zacsc._eval_rewrite_as_log  s:    AOC$7$q1S!V8|:L:L$L M MMMr3   c                 &    t          d|z            S r  )r   r   s      r1   r-  zacsc._eval_rewrite_as_asin!  r  r3   c                 <    t           dz  t          d|z            z
  S r   r  r   s      r1   r  zacsc._eval_rewrite_as_acos$  r  r3   c                     t          |dz            |z  t          dz  t          t          |dz  dz
                      z
  z  S r   r  r!  s      r1   r  zacsc._eval_rewrite_as_atan'  s:    AqDzz!|RTDadQh$8$8899r3   c           	          t          |dz            |z  t          dz  t          dt          |dz  dz
            z            z
  z  S r   r  r   s      r1   r  zacsc._eval_rewrite_as_acot*  sB    CF||CAQtCFQJ/?/?-?(@(@!@AAr3   c                 6    t           dz  t          |          z
  S r   r  r   s      r1   r  zacsc._eval_rewrite_as_asec-  r  r3   rL  r  rM  )rg   rh   ri   rj   rN  r   r   r  r8  r   r	  r  r-  r  r  r  r  rH   r3   r1   r   r     s        ( (T *( *( [*(X5 5 5 5              DN N N!5  " " ": : :B B B         r3   r   c                   \     e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Z fd	Z xZS )
r   a
  
    The function ``atan2(y, x)`` computes `\operatorname{atan}(y/x)` taking
    two arguments `y` and `x`.  Signs of both `y` and `x` are considered to
    determine the appropriate quadrant of `\operatorname{atan}(y/x)`.
    The range is `(-\pi, \pi]`. The complete definition reads as follows:

    .. math::

        \operatorname{atan2}(y, x) =
        \begin{cases}
          \arctan\left(\frac y x\right) & \qquad x > 0 \\
          \arctan\left(\frac y x\right) + \pi& \qquad y \ge 0, x < 0 \\
          \arctan\left(\frac y x\right) - \pi& \qquad y < 0, x < 0 \\
          +\frac{\pi}{2} & \qquad y > 0, x = 0 \\
          -\frac{\pi}{2} & \qquad y < 0, x = 0 \\
          \text{undefined} & \qquad y = 0, x = 0
        \end{cases}

    Attention: Note the role reversal of both arguments. The `y`-coordinate
    is the first argument and the `x`-coordinate the second.

    If either `x` or `y` is complex:

    .. math::

        \operatorname{atan2}(y, x) =
            -i\log\left(\frac{x + iy}{\sqrt{x^2 + y^2}}\right)

    Examples
    ========

    Going counter-clock wise around the origin we find the
    following angles:

    >>> from sympy import atan2
    >>> atan2(0, 1)
    0
    >>> atan2(1, 1)
    pi/4
    >>> atan2(1, 0)
    pi/2
    >>> atan2(1, -1)
    3*pi/4
    >>> atan2(0, -1)
    pi
    >>> atan2(-1, -1)
    -3*pi/4
    >>> atan2(-1, 0)
    -pi/2
    >>> atan2(-1, 1)
    -pi/4

    which are all correct. Compare this to the results of the ordinary
    `\operatorname{atan}` function for the point `(x, y) = (-1, 1)`

    >>> from sympy import atan, S
    >>> atan(S(1)/-1)
    -pi/4
    >>> atan2(1, -1)
    3*pi/4

    where only the `\operatorname{atan2}` function reurns what we expect.
    We can differentiate the function with respect to both arguments:

    >>> from sympy import diff
    >>> from sympy.abc import x, y
    >>> diff(atan2(y, x), x)
    -y/(x**2 + y**2)

    >>> diff(atan2(y, x), y)
    x/(x**2 + y**2)

    We can express the `\operatorname{atan2}` function in terms of
    complex logarithms:

    >>> from sympy import log
    >>> atan2(y, x).rewrite(log)
    -I*log((x + I*y)/sqrt(x**2 + y**2))

    and in terms of `\operatorname(atan)`:

    >>> from sympy import atan
    >>> atan2(y, x).rewrite(atan)
    Piecewise((2*atan(y/(x + sqrt(x**2 + y**2))), Ne(y, 0)), (pi, re(x) < 0), (0, Ne(x, 0)), (nan, True))

    but note that this form is undefined on the negative real axis.

    See Also
    ========

    sin, csc, cos, sec, tan, cot
    asin, acsc, acos, asec, atan, acot

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Inverse_trigonometric_functions
    .. [2] https://en.wikipedia.org/wiki/Atan2
    .. [3] http://functions.wolfram.com/ElementaryFunctions/ArcTan2

    c           	      D   ddl m} |t          j        u r9|j        rt
          S dt
          z   |t          |                    z  t
          z
  S |t          j        u rt          j        S |j	        r3|j	        r,|j
        r%|j
        rt          |          }t          |          }|j        r|j        r|j        rt          ||z            S |j        rC|j        rt          ||z            t
          z
  S |j        rt          ||z            t
          z   S n=|j        r6|j        r
t
          dz  S |j        rt
           dz  S |j        rt          j        S |j        rs|j        r t
          t          j         ||          z
  z  S |j
        rEt)          t
          t          |          dk     fdt+          |d          ft          j        df          S |j
        rM|j
        rHt          j         t/          |t          j        |z  z   t1          |dz  |dz  z             z            z  S d S d S )Nr   )	Heavisidero   T)'sympy.functions.special.delta_functionsr  r   r   r;   r   r!   r   rR   r@  r  r    rP   r  r   r3  r  r   is_extended_nonzeror}   r(   r   r0   r"   r%   )r   r   r   r  s       r1   r   z
atan2.eval  sG   EEEEEE"" 		y 	R42a55))*R//!*_ 	6M^ 	 	1; 	1; 	1A1A 	!!"4 	!} !AaCyy  != *!99r>)% *!99r>)* != !a4K] !3q5LY !5L9 	0$ 11599Q<</00{ 0 "beeai"#R1XX"#%0 0 0 ; 	;1; 	;O#CQ_Q&&QTAqD[(9(99%; %; ; ;	; 	; 	; 	;r3   c           	          t           j         t          |t           j        |z  z   t          |dz  |dz  z             z            z  S r   r  r=   r   r   r   s       r1   r	  zatan2._eval_rewrite_as_log  s?    Q):%:DA1<M<M$M N NNNr3   c                    t          dt          ||t          |dz  |dz  z             z   z            z  t          |d          ft          t          |          dk     fdt          |d          ft          j        df          S )Nro   r   T)r(   r   r%   r   r   r!   r   r   r  s       r1   r  zatan2._eval_rewrite_as_atan  sw    !DAQTAqD[(9(9$9!:;;;R1XXFbeeaiR1XX%( ( 	(r3   c           
      b   |j         r&|j         rt          ||t          j        z  z             S |t          j        |z  z   }|dz  |dz  z   }t          |t	          |          z            t          j        t          t          |          t	          t          |                    z            z  z
  S r   )rP   arg_fr   r0   r%   r"   r[   )r=   r   r   r   r   r   s         r1   _eval_rewrite_as_argzatan2._eval_rewrite_as_arg  s     	0!"4 	0Qq..///!!qD1a4KQtAwwY!/#c!ffT#a&&\\6I2J2J"JJJr3   c                 J    | j         d         j        o| j         d         j        S r  r;  r  s    r1   r<  zatan2._eval_is_extended_real  s    y|,N11NNr3   c                     |                      | j        d                                         | j        d                                                   S r  r  r  s    r1   r  zatan2._eval_conjugate  s:    yy1//1149Q<3I3I3K3KLLLr3   c                     | j         \  }}|dk    r||dz  |dz  z   z  S |dk    r| |dz  |dz  z   z  S t          | |          r  r9  )r=   r   r   r   s       r1   r   zatan2.fdiff  sd    y1q= 	5adQTk?"] 	52q!tad{##$T8444r3   c                 ~    | j         \  }}|j        r(|j        r#t                                          |          S d S d S rf   )r9   rP   rK  _eval_evalf)r=   precr   r   rO  s       r1   r  zatan2._eval_evalf  sO    y1 	-!"4 	-77&&t,,,	- 	- 	- 	-r3   )rg   rh   ri   rj   rN  r   r	  r  r  r<  r  r   r  r\  r]  s   @r1   r   r   1  s        d dL %; %; [%;NO O O( ( (K K KO O OM M M	5 	5 	5- - - - - - - - -r3   r   NrL  )Vtypingr   rZ  sympy.core.addr   sympy.core.basicr   r   sympy.core.exprr   sympy.core.functionr   r	   r
   r   sympy.core.logicr   r   r   r   sympy.core.modr   sympy.core.numbersr   r   r   r   r   sympy.core.relationalr   r   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.combinatorial.numbersr   r   r8  r   r  r    r!   &sympy.functions.elementary.exponentialr"   r#   #sympy.functions.elementary.integersr$   (sympy.functions.elementary.miscellaneousr%   r&   r'   $sympy.functions.elementary.piecewiser(   sympy.logic.boolalgr)   sympy.ntheoryr*   sympy.polys.specialpolysr+   sympy.utilities.iterablesr,   r2   r5   rz   rC   r   r   r   r   rp  r  r  r  r  r   r   r   r   r   r   r   rH   r3   r1   <module>r     s   " " " " " "       - - - - - - - -             S S S S S S S S S S S S F F F F F F F F F F F F       C C C C C C C C C C C C C C ( ( ( ( ( ( ( ( " " " " " " + + + + + + + + O O O O O O O O B B B B B B B B E E E E E E E E E E ; ; ; ; ; ; ; ; 5 5 5 5 5 5 C C C C C C C C C C : : : : : : # # # # # # # # # # # # 3 3 3 3 3 3 6 6 6 6 6 63 3 3AK AK AK AK AKH AK AK AKH" " "JG G G GTs s s s s
 s s sl	L  L  L  L  L 
 L  L  L ^T T T T T
 T T Tn
~ ~ ~ ~ ~
 ~ ~ ~B
uO uO uO uO uO&; uO uO uOpb7 b7 b7 b7 b7
) b7 b7 b7Jb7 b7 b7 b7 b7
) b7 b7 b7Jt$ t$ t$ t$ t$8 t$ t$ t$xN
 N
 N
 N
 N
8 N
 N
 N
bW W W W W' W W WtU U U U U' U U UpB@ B@ B@ B@ B@' B@ B@ B@JGK GK GK GK GK' GK GK GKTy  y  y  y  y ' y  y  y xg  g  g  g  g ' g  g  g Ts- s- s- s- s-( s- s- s- s- s-r3   