
    \h                      S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJrJr  S S	KJrJr  S S
KJr  S SKJ r J!r!  S SK"J#r#  S SK$J%r%J&r&  S SK'J(r(J)r)  S SK*J+r,J-r-J.r.  S SK/J0r0J1r1  S SK2J3r3  S SK4J5r5J6r6J7r7  S SK8J9r9  S SK:J;r;J<r<J=r=  S SK>J?r?  S SK@JArA  S SKBJCrC  S SKDJErE  S rF " S S\	5      rG\S 5       rHS rIS@SAS jjrJ " S S \G5      rK " S! S"\G5      rL " S# S$\G5      rM " S% S&\G5      rN " S' S(\G5      rO " S) S*\O5      rP " S+ S,\O5      rQ " S- S.\	5      rR " S/ S0\	5      rS " S1 S2\S5      rT " S3 S4\S5      rU " S5 S6\S5      rV " S7 S8\S5      rW " S9 S:\S5      rX " S; S<\S5      rY " S= S>\S5      rZg?)B    )annotations)Add)cacheit)Expr)DefinedFunctionArgumentIndexError	PoleError
expand_mul)	fuzzy_notfuzzy_or	FuzzyBool	fuzzy_and)Mod)RationalpiIntegerFloatequal_valued)NeEq)S)SymbolDummy)sympify)	factorialRisingFactorial)	bernoullieuler)argimre)logexp)floor)sqrtMinMax)	Piecewise)	cos_table	ipartfracfermat_coords)And)	factorint)symmetric_poly)numbered_symbolsc                l    [        U [        5      (       a  gU R                  [        R                  5      $ )z:Helper to extract symbolic coefficient for imaginary unit N)
isinstancer   as_coefficientr   ImaginaryUnit)r   s    `/var/www/auris/envauris/lib/python3.13/site-packages/sympy/functions/elementary/trigonometric.py_imaginary_unit_as_coefficientr5   !   s'    #u!!!//22    c                  `    \ rS rSrSrSr\R                  4rS r	S r
SS jrSS jrSS	 jrS
rg)TrigonometricFunction-   z(Base class for trigonometric functions. Tc                   U R                   " U R                  6 nUR                   U R                   :X  aH  UR                  S   R                  (       a)  [        UR                  S   R                  5      (       a  gg g UR                  $ Nr   F)funcargsis_rationalr   is_zeroselfss     r4   _eval_is_rational'TrigonometricFunction._eval_is_rational3   se    IItyy!66TYYvvay$$166!93D3D)E)E *F$ == r6   c                j   U R                   " U R                  6 nUR                   U R                   :X  au  [        U R                  S   R                  5      (       a  U R                  S   R                  (       a  g[        U R                  S   5      nUb  UR                  (       a  gg g UR                  $ Nr   FT)r<   r=   r   r?   is_algebraic	_pi_coeffr>   )rA   rB   pi_coeffs      r4   _eval_is_algebraic(TrigonometricFunction._eval_is_algebraic;   s    IItyy!66TYY1--..499Q<3L3L 1.H#(<(< )=# >>!r6   c                X    U R                   " SSU0UD6u  p4X4[        R                  -  -   $ )Ndeep )as_real_imagr   r3   )rA   rM   hintsre_partim_parts        r4   _eval_expand_complex*TrigonometricFunction._eval_expand_complexF   s/    ,,@$@%@000r6   c                   U R                   S   R                  (       a[  U(       a5  SUS'   U R                   S   R                  " U40 UD6[        R                  4$ U R                   S   [        R                  4$ U(       a3  U R                   S   R                  " U40 UD6R                  5       u  p4X44$ U R                   S   R                  5       u  p4X44$ )Nr   Fcomplex)r=   is_extended_realexpandr   ZerorO   )rA   rM   rP   r!   r    s        r4   _as_real_imag#TrigonometricFunction._as_real_imagJ   s    99Q<((#(i 		!++D:E:AFFCC		!aff--YYq\((77DDFFB x YYq\..0FBxr6   Nc                   [        U R                  S   5      nUc  [        UR                  5      S   nUR	                  U5      (       d  [
        R                  $ X2:X  a  U$ X#R                  ;   a  UR                  (       a&  UR                  U5      u  pEXR:X  a  U[        U5      -  $ UR                  (       a8  UR                  U5      u  peUR                  USS9u  pEXR:X  a  U[        U5      -  $ [        S5      e)Nr   F)as_Addz%Use the periodicity function instead.)r
   r=   tuplefree_symbolshasr   rY   is_Mulas_independentabsis_AddNotImplementedError)rA   general_periodsymbolfghas          r4   _periodTrigonometricFunction._periodW   s    tyy|$>1>>*1-FuuV}}66M;!!^^#xx''/;)#a&00xx''/''u'=;)#a&00!"IJJr6   rN   TN)__name__
__module____qualname____firstlineno____doc__
unbranchedr   ComplexInfinity_singularitiesrC   rJ   rS   rZ   rl   __static_attributes__rN   r6   r4   r8   r8   -   s2    2J'')N!	"1Kr6   r8   c            	         SSSSSSSSS	.$ )
N)      )r{      )r|      )r}   
   )r}      )r   r~   )      )(   <   )   r   r         r   r   x   rN   rN   r6   r4   _table2r   q   s&     	 	r6   c                   [         R                  n/ n[        R                  " U 5       HG  nUR	                  [
        5      nU(       a  UR                  (       a  X-  nM6  UR                  U5        MI     U[         R                  L a  U [         R                  4$ U[         R                  -  nX-
  nUR                  (       d#  SU-  R                  (       a#  UR                  SL a  [        X%[
        -  /-   6 U4$ U [         R                  4$ )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   rY   r   	make_argscoeffr   r>   appendHalf
is_integeris_even)r   rI   
rest_termsrk   Km1m2s          r4   _peeloff_pir      s    $ vvHJ]]3GGBKMHa    166AFF{
QVV
B	B	}}!B$**rzzU/BZb5')+R//;r6   c                   U [         L a  [        R                  $ U (       d  [        R                  $ U R                  (       Ga"  U R                  [         5      nU(       Ga  UR                  5       u  p4UR                  (       a  [        U5      S-  nUS:w  aa  [        [        [        US5      R                  5       5      5      * nSU-  nX7-  n[        U5      n	[        X5      (       a  [        X5      nX4-  nO[        [        U5      5      nX4-  nUR                  (       a@  US-  n
U
S:X  a  U$ U
(       d(  UR                   b  [        R                  $ [#        S5      $ X-  $ U$  gU R$                  (       a  [        R                  $ g)a  
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   N)r   r   OnerY   ra   r   as_coeff_Mulis_Floatrc   introundr"   evalfr   r   r   r   r   r?   )r   cyclescxcxrh   pmcmic2s              r4   rH   rH      s3   J byuuvv	YYr]??$DAzzFQJ6U3q!9??#4566A1ABBA#A**$QNS Q(AB||U7Hyy, vv"1:%4KI5 :  
vvr6   c                     ^  \ rS rSrSrSS jrSS jr\S 5       r\	\
S 5       5       rSU 4S jjrS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS S jrS rS rS rS rS rS r Sr!U =r"$ )!sin   a3  
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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Sin
.. [4] https://mathworld.wolfram.com/TrigonometryAngles.html

c                4    U R                  S[        -  U5      $ Nr   rl   r   rA   rg   s     r4   period
sin.period#      ||AbD&))r6   c                T    US:X  a  [        U R                  S   5      $ [        X5      eNr   r   )cosr=   r   rA   argindexs     r4   fdiff	sin.fdiff&  s'    q=tyy|$$$T44r6   c           
     $   SSK Jn  SSKJn  UR                  (       aq  U[
        R                  L a  [
        R                  $ UR                  (       a  [
        R                  $ U[
        R                  [
        R                  4;   a	  U" SS5      $ U[
        R                  L a  [
        R                  $ [        X5      (       Ga8  SSKJn  UR                  UR                   pe[#        US[$        -  -  5      nU[
        R                  La  XWS-  [$        -  -
  nU[
        R                  La  XgS-  [$        -  -
  nU" XV5      R'                  U" [$        S-  [$        [)        SS5      -  5      5      [
        R*                  LaZ  U" XV5      R'                  U" [$        [)        S	S5      -  [$        [)        S
S5      -  5      5      [
        R*                  La	  U" SS5      $ U" XV5      R'                  U" [$        S-  [$        [)        SS5      -  5      5      [
        R*                  La%  U" [-        [/        U5      [/        U5      5      S5      $ U" XV5      R'                  U" [$        [)        S	S5      -  [$        [)        SS5      -  5      5      [
        R*                  La%  U" S[1        [/        U5      [/        U5      5      5      $ U" [-        [/        U5      [/        U5      5      [1        [/        U5      [/        U5      5      5      $ [        X5      (       a  UR3                  U 5      $ UR5                  5       (       a
  U " U* 5      * $ [7        U5      nUb  SSKJn	  [
        R<                  U	" U5      -  $ [?        U5      n
U
Gb2  U
R@                  (       a  [
        R                  $ SU
-  R@                  (       a3  U
RB                  SL a$  [
        RD                  U
[
        RF                  -
  -  $ U
RH                  (       d  U
[$        -  nX:w  a  U " U5      $ g U
RH                  (       a  U
S-  nUS:  a  U " US-  [$        -  5      * $ SU-  S:  a  U " SU-
  [$        -  5      $ U
[)        S	S5      -   S-  [$        -  n[K        U5      n[        U[J        5      (       d  U$ U
[$        -  U:w  a  U " U
[$        -  5      $ g URL                  (       aL  [O        U5      u  pU(       a8  U[$        -  n[/        U5      [K        U5      -  [K        U5      [/        U5      -  -   $ UR                  (       a  [
        R                  $ [        U[P        5      (       a  URR                  S   $ [        U[T        5      (       a#  URR                  S   nU[W        SUS-  -   5      -  $ [        U[X        5      (       a%  URR                  u  pU[W        US-  US-  -   5      -  $ [        U[Z        5      (       a   URR                  S   n[W        SUS-  -
  5      $ [        U[\        5      (       a)  URR                  S   nS[W        SSUS-  -  -   5      U-  -  $ [        U[^        5      (       a  URR                  S   nSU-  $ [        U[`        5      (       a#  URR                  S   n[W        SSUS-  -  -
  5      $ g )Nr   AccumBoundsSetExprr   	FiniteSetr   r|   rz      r   )sinhF)1!sympy.calculus.accumulationboundsr   sympy.sets.setexprr   	is_Numberr   NaNr?   rY   InfinityNegativeInfinityrv   r1   sympy.sets.setsr   minmaxr$   r   intersectionr   EmptySetr&   r   r'   
_eval_funccould_extract_minus_signr5   %sympy.functions.elementary.hyperbolicr   r3   rH   r   r   NegativeOner   is_Rationalr   rd   r   asinr=   atanr%   atan2acosacotacscasec)clsr   r   r   r   r   r   di_coeffr   rI   nargr   resultr   ys                   r4   evalsin.eval,  sC   A.==aee|uuvvQ%7%788"2q))!###55Lc''1wwc1R4j!A!,,,aCFl!**$aCFl3$11)BqD"XaQR^BS2TU::&)66yHQPQNAR8Aq>)8+ ,34::>"2q))S&33IbdBxPQST~DU4VW::&"3s3xS#:A>>S&33Ib!Q>OQST\]^`aTbQb4cd zz*"2s3s8SX'>??"3s3xS#: #CHc#h 79 9%%>>#&&''))I:05B??4=00S>""vv(
&& ##u,==8aff+<==''{;t9$ ##qLq5Q
O++Q37Arz?*!HQN2a7;T!&#..!MB;#%x{++::s#DAbD1vc!f}s1vc!f}44;;66Mc4  88A;c4  AT!ad(^##c5!!88DAT!Q$A+&&&c4  AAqD>!c4  Ad1qAv:&q())c4  AQ3Jc4  AAadF
## !r6   c                    U S:  d	  U S-  S:X  a  [         R                  $ [        U5      n[        U5      S:  a  US   nU* US-  -  X S-
  -  -  $ [         R                  U S-  -  X-  -  [        U 5      -  $ Nr   r   r   r   rY   r   lenr   r   nr   previous_termsr   s       r4   taylor_termsin.taylor_term  |     q5AEQJ66M
A>"Q&"2&r!Q$wq5	**}}q!t,QT1)A,>>r6   c                  > U R                   S   nUb  UR                  [        U5      U5      nUR                  US5      R                  [        R
                  [        R                  5      (       a  [        SU -  5      e[        TU ]%  XX4S9$ Nr   zCannot expand %s around 0)r   logxcdir
r=   subsr"   r`   r   r   rv   r	   super_eval_nseriesrA   r   r   r   r   r   	__class__s         r4   r   sin._eval_nseries  w    iil((3q64(C88Aq>aeeQ%6%67774@AAw$Q$$BBr6   c                   SSK Jn  [        R                  n[	        U[
        U45      (       a1  UR                  UR                  S   5      R                  [        5      n[        X-  5      [        U* U-  5      -
  SU-  -  $ Nr   HyperbolicFunctionr   
r   r   r   r3   r1   r8   r<   r=   rewriter#   )rA   r   kwargsr   Is        r4   _eval_rewrite_as_expsin._eval_rewrite_as_exp  sg    LOOc13EFGG((388A;'//4CCE
S#a[(1Q3//r6   c                    [        U[        5      (       a5  [        R                  nUR                  S   nX4U* -  -  S-  X4U-  -  S-  -
  $ g Nr   r   r1   r"   r   r3   r=   rA   r   r   r   r   s        r4   _eval_rewrite_as_Powsin._eval_rewrite_as_Pow  sK    c3AAU719qAvqy((  r6   c                *    [        U[        S-  -
  SS9$ Nr   Fevaluater   r   rA   r   r   s      r4   _eval_rewrite_as_cossin._eval_rewrite_as_cos      3A:..r6   c                V    [        [        R                  U-  5      nSU-  SUS-  -   -  $ Nr   r   tanr   r   rA   r   r   tan_halfs       r4   _eval_rewrite_as_tansin._eval_rewrite_as_tan  s*    qvvcz?z1x{?++r6   c                H    [        U5      [        U5      -  [        U5      -  $ ro   r   r   r  s      r4   _eval_rewrite_as_sincossin._eval_rewrite_as_sincos      3xC S))r6   c                    [        [        R                  U-  5      n[        S[	        [        [        U5      S5      [        [        U[        5      S5      5      4SU-  SUS-  -   -  S45      $ )Nr   r   r   T	cotr   r   r(   r,   r   r    r   r   rA   r   r   cot_halfs       r4   _eval_rewrite_as_cotsin._eval_rewrite_as_cot  s^    qvvcz?!SBsGQCRL!1DEFH*a(A+o6=? 	?r6   c                Z    U R                   " [        40 UD6R                   " [        40 UD6$ ro   )r   r   powr  s      r4   _eval_rewrite_as_powsin._eval_rewrite_as_pow  s&    ||C*6*223A&AAr6   c                Z    U R                   " [        40 UD6R                   " [        40 UD6$ ro   )r   r   r%   r  s      r4   _eval_rewrite_as_sqrtsin._eval_rewrite_as_sqrt  s&    ||C*6*224B6BBr6   c                    S[        U5      -  $ Nr   cscr  s      r4   _eval_rewrite_as_cscsin._eval_rewrite_as_csc      Szr6   c                0    S[        U[        S-  -
  SS9-  $ )Nr   r   Fr
  secr   r  s      r4   _eval_rewrite_as_secsin._eval_rewrite_as_sec  s    S2a4Z%000r6   c                    U[        U5      -  $ ro   )sincr  s      r4   _eval_rewrite_as_sincsin._eval_rewrite_as_sinc  s    49}r6   c                h    SSK Jn  [        [        U-  S-  5      U" [        R
                  U5      -  $ )Nr   besseljr   sympy.functions.special.besselr>  r%   r   r   r   rA   r   r   r>  s       r4   _eval_rewrite_as_besseljsin._eval_rewrite_as_besselj  s'    :BsF1H~gaffc222r6   c                Z    U R                  U R                  S   R                  5       5      $ Nr   r<   r=   	conjugaterA   s    r4   _eval_conjugatesin._eval_conjugate  "    yy1//122r6   c                    SSK JnJn  U R                  " SSU0UD6u  pV[	        U5      U" U5      -  [        U5      U" U5      -  4$ Nr   coshr   rM   rN   )r   rO  r   rZ   r   r   rA   rM   rP   rO  r   r!   r    s          r4   rO   sin.as_real_imag  sD    D##777BR #b'$r("233r6   c           	        SSK JnJn  U R                  S   nS nUR                  (       a{  UR                  5       u  pV[        USS9R                  5       n[        USS9R                  5       n[        USS9R                  5       n	[        USS9R                  5       n
Xz-  X-  -   $ UR                  (       a  UR                  SS9u  pUR                  (       a  UR                  (       a,  [        R                  US-
  S-  -  U" U[        U5      5      -  $ [        [        R                  US-  S-
  -  [        U5      -  U" US-
  [        U5      5      -  SS	9$ [        U5      $ )
Nr   )
chebyshevt
chebyshevuFr
  Trationalr   r   )rM   )#sympy.functions.special.polynomialsrS  rT  r=   rd   as_two_termsr   _eval_expand_trigr   ra   r   
is_Integeris_oddr   r   r
   )rA   rP   rS  rT  r   r   r   sxsyr   cyr   s               r4   rY  sin._eval_expand_trig  s2   Niil::##%DAQ'99;BQ'99;BQ'99;BQ'99;B525= ZZ##T#2DA|| 88==AE195jCF6KKK%ammacAg&>s1v&E&0QA&?'@FKM M3xr6   c                "   SSK Jn  U R                  S   nUR                  US5      R	                  5       nU[
        -  nUR                  (       a0  XW[
        -  -
  R                  U5      n[        R                  U-  U-  $ U[        R                  L a-  UR                  US[        U5      R                  (       a  SOSS9nU[        R                  [        R                  4;   a	  U" SS5      $ UR                   (       a  U R#                  U5      $ U $ )Nr   r   -+dirr   r   r   r   r=   r   cancelr   r   as_leading_termr   r   rv   limitr!   is_negativer   r   	is_finiter<   	rA   r   r   r   r   r   x0r   lts	            r4   _eval_as_leading_termsin._eval_as_leading_term  s    AiilXXa^""$rE<<"*--a0BMM1$b(("""1aBtH,@,@ScJB!**a0011r1%% "tyy}6$6r6   c                B    U R                   S   R                  (       a  gg Nr   Tr=   rW   rH  s    r4   _eval_is_extended_realsin._eval_is_extended_real      99Q<(( )r6   c                F    U R                   S   nUR                  (       a  gg rq  rr  rA   r   s     r4   _eval_is_finitesin._eval_is_finite  s     iil  r6   c                r    [        U R                  S   5      u  pUR                  (       a  UR                  $ g rE  r   r=   r?   r   rA   restpi_mults      r4   _eval_is_zerosin._eval_is_zero  .    #DIIaL1<<%%% r6   c                ~    U R                   S   R                  (       d  U R                   S   R                  (       a  gg rq  r=   rW   
is_complexrH  s    r4   _eval_is_complexsin._eval_is_complex#  s,    99Q<((99Q<** +r6   rN   ro   r   r   rn   )#rp   rq   rr   rs   rt   r   r   classmethodr   staticmethodr   r   r   r   r  r  r  r  r#  r'  r*  r0  r6  r:  rB  rI  rO   rY  rn  rs  rx  r  r  rx   __classcell__r   s   @r4   r   r      s    -^*5 r$ r$h 
?  
?C0)/,*?
BC1334
27
&
 r6   r   c                     ^  \ rS rSrSrSS jrSS jr\S 5       r\	\
S 5       5       rSU 4S jjrS rS	 rS
 rS rS rS rS rSS jrS rS rS rS rS S jrS rS rS rS rS rS rSr U =r!$ )!r   i)  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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Cos

c                4    U R                  S[        -  U5      $ r   r   r   s     r4   r   
cos.periodU  r   r6   c                V    US:X  a  [        U R                  S   5      * $ [        X5      er   )r   r=   r   r   s     r4   r   	cos.fdiffX  s*    q=		!%%%$T44r6   c                
   SSK Jn  SSKJn  SSKJn  UR                  (       aq  U[        R                  L a  [        R                  $ UR                  (       a  [        R                  $ U[        R                  [        R                  4;   a	  U" SS5      $ U[        R                  L a  [        R                  $ [        X5      (       a  [        U[         S-  -   5      $ [        X5      (       a  UR#                  U 5      $ UR$                  (       a  UR&                  SL a	  U" SS5      $ UR)                  5       (       a	  U " U* 5      $ [+        U5      nUb  SS	KJn  U" U5      $ [1        U5      nUGb  UR2                  (       a  [        R4                  U-  $ SU-  R2                  (       a  UR6                  SL a  [        R8                  $ UR:                  (       d  U[         -  nX:w  a  U " U5      $ g UR:                  (       Ga  UR<                  n	UR>                  SU	-  -  n
X:  a  US-
  [         -  nU " U5      * $ SU
-  U	:  a  SU-
  [         -  nU " U5      * $ [A        5       nX;   a^  X   u  pU
[         -  U-  U
[         -  U-  pU " U5      U " U5      pS X4;   a  g X-  U " [         S-  U-
  5      U " [         S-  U-
  5      -  -   $ U	S
:  a  g [        RB                  [E        S5      S-   S-  S.nU	U;   a0  UUR<                     nU" UR>                  U5      RG                  5       $ SU	S-  :X  a\  US-  [         -  nU " U5      nS U:X  a  g SU-  S-   S-  nSUS:  a  SOS[I        [K        U5      5      -  -  nU[E        SU-   S-  5      -  $ g URL                  (       aM  [O        U5      u  nnU(       a8  U[         -  n[Q        U5      [Q        U5      -  [        U5      [        U5      -  -
  $ UR                  (       a  [        R                  $ [        U[R        5      (       a  URT                  S   $ [        U[V        5      (       a#  URT                  S   nS[E        SUS-  -   5      -  $ [        U[X        5      (       a&  URT                  u  nnU[E        US-  US-  -   5      -  $ [        U[Z        5      (       a   URT                  S   n[E        SUS-  -
  5      $ [        U[\        5      (       a&  URT                  S   nS[E        SSUS-  -  -   5      -  $ [        U[^        5      (       a#  URT                  S   n[E        SSUS-  -  -
  5      $ [        U[`        5      (       a  URT                  S   nSU-  $ g )Nr   rS  r   r   r   r   r   F)rO  r   r|   r{   )rz   r|   )1rW  rS  r   r   r   r   r   r   r   r?   r   r   r   rv   r1   r   r   r   rW   rj  r   r5   r   rO  rH   r   r   r   rY   r   qr   r   r   r%   rX   r   rc   rd   r   r   r   r=   r   r   r   r   r   r   )r   r   rS  r   r   r   rO  rI   r   r  r   table2rk   bnvalanvalbcst_table_somectsnvalr   sign_cosr   r   s                          r4   r   cos.eval^  s   BA.==aee|uuuuQ%7%788
 #2q))!###55Lc''sRTz?"%%>>#&&CMMU$:r1%%''))t905B= S>""00(
&& ##u,66M''{;t9$ ###JJJJ!A#&5$qL",DI:%Q37L",DI:% !;!9DAR461R46q#&q63q65~-# ;RTAXs2a4!8})DDDr6 vvQ!q(" &(4C%hjj#6==??A:$QJ?Dt9Dt|#8a*A "QUr3s1v;&FGH#D1t8Q,$888::s#DAqbD1vc!f}s1vc!f}44;;55Lc4  88A;c4  AT!ad(^##c5!!88DAqT!Q$A+&&&c4  AAF
##c4  AT!a1f*%%%c4  AAadF
##c4  AQ3J !r6   c                    U S:  d	  U S-  S:X  a  [         R                  $ [        U5      n[        U5      S:  a  US   nU* US-  -  X S-
  -  -  $ [         R                  U S-  -  X-  -  [        U 5      -  $ )Nr   r   r   r   r   r   s       r4   r   cos.taylor_term  r   r6   c                  > U R                   S   nUb  UR                  [        U5      U5      nUR                  US5      R                  [        R
                  [        R                  5      (       a  [        SU -  5      e[        TU ]%  XX4S9$ r   r   r   s         r4   r   cos._eval_nseries  r   r6   c                   [         R                  nSSKJn  [	        U[
        U45      (       a3  UR                  UR                  S   5      R                  " [        40 UD6n[        X-  5      [        U* U-  5      -   S-  $ r   
r   r3   r   r   r1   r8   r<   r=   r   r#   )rA   r   r   r   r   s        r4   r   cos._eval_rewrite_as_exp   sh    OOLc13EFGG((388A;'//>v>CCE
S#a[(!++r6   c                    [        U[        5      (       a/  [        R                  nUR                  S   nXC-  S-  XC* -  S-  -   $ g r  r  r  s        r4   r  cos._eval_rewrite_as_Pow  sC    c3AA46ArE!G##  r6   c                *    [        U[        S-  -   SS9$ r	  )r   r   r  s      r4   _eval_rewrite_as_sincos._eval_rewrite_as_sin  r  r6   c                V    [        [        R                  U-  5      S-  nSU-
  SU-   -  $ r  r  r  s       r4   r  cos._eval_rewrite_as_tan  s+    qvvcz?A%Hq8|,,r6   c                H    [        U5      [        U5      -  [        U5      -  $ ro   r  r  s      r4   r  cos._eval_rewrite_as_sincos  r  r6   c                    [        [        R                  U-  5      S-  n[        S[	        [        [        U5      S5      [        [        US[        -  5      S5      5      4US-
  US-   -  S45      $ )Nr   r   r   Tr  r!  s       r4   r#  cos._eval_rewrite_as_cot  se    qvvcz?A%!SBsGQCQrTNA1FGH#a<(Q,7>@ 	@r6   c                (    U R                   " U40 UD6$ ro   )r*  r  s      r4   r'  cos._eval_rewrite_as_pow  s    ))#888r6   c                b  ^ SSK Jn  [        U5      mTc  g [        T[        5      (       a  g [        T[
        5      (       d  g [        5       nTR                  U;   aG  U" TR                  UTR                     " 5       5      nTR                  S:  a  UR                  5       nU$ TR                  S-  (       d_  TS-  n[        U[        -  5      R                  " [        40 UD6nUS-   S-  n[        U5      S-  (       a  SOSn	U	[        SU-   S-  5      -  $ [        TR                  5      n
U
(       a  U
nO9[!        TR                  5      R#                  5        VVs/ s H	  u  pX-  PM     nnn[%        U6 nU4S j['        X5       5       n['        U[)        S5      5       Vs/ s H  oS   US   [        -  4PM     nn[        [+        S	 U 5       5      5      R-                  5       R/                  U5      nU
(       a  [1        U
5      S:X  a  U$ UR                  " [        40 UD6$ s  snnf s  snf )
Nr   r  i  r   r   r   c              3  X   >#    U  H  u  pTR                   [        X5      -  v   M!     g 7fro   )r   r   ).0r   r   rI   s      r4   	<genexpr>,cos._eval_rewrite_as_sqrt.<locals>.<genexpr>B  s"     M:L$!(**x~-:Ls   '*zc              3  *   #    U  H	  oS    v   M     g7f)r   NrN   )r  r   s     r4   r  r  D  s     'QtQs   )rW  rS  rH   r1   r   r   r)   r  r   rX   r   r   r   r%   r   r+   r-   itemsr*   zipr/   sumrY  r   r   )rA   r   r   rS  r  rvpico2r  r   r  FCdenomsr  eapartdecompXpclsrI   s                     @r4   r*  cos._eval_rewrite_as_sqrt  s   BS>h(((H--"::'HJJxzz(B(DEBzzCYY[IzzA~qLEurz?**4:6:DaA VaZrQHdAH>2228::&F'0'<'B'B'DE'Dtqad'DFE6"M#e:LM&)&2B32G&HI&HdAaDG_&HI3'Q''(::<AA!DSW\K||D+F++ F Js   H&#H,c                    S[        U5      -  $ r-  r5  r  s      r4   r6  cos._eval_rewrite_as_secJ  r2  r6   c                H    S[        U5      R                  " [        40 UD6-  $ r-  )r5  r   r/  r  s      r4   r0  cos._eval_rewrite_as_cscM  !    S!!#0000r6   c                    SSK Jn  [        [        [        U-  S-  5      U" [
        R                  * U5      -  [        US5      4S5      $ )Nr   r=  r   r   Tr@  r>  r(   r%   r   r   r   r   rA  s       r4   rB  cos._eval_rewrite_as_besseljP  sA    :bfQh 55r#qzB 	r6   c                Z    U R                  U R                  S   R                  5       5      $ rE  rF  rH  s    r4   rI  cos._eval_conjugateW  rK  r6   c                    SSK JnJn  U R                  " SSU0UD6u  pV[	        U5      U" U5      -  [        U5      * U" U5      -  4$ rM  )r   rO  r   rZ   r   r   rP  s          r4   rO   cos.as_real_imagZ  sF    D##777BR 3r7(48"344r6   c                   SSK Jn  U R                  S   nS nUR                  (       a{  UR	                  5       u  pE[        USS9R                  5       n[        USS9R                  5       n[        USS9R                  5       n[        USS9R                  5       n	X-  Xg-  -
  $ UR                  (       a4  UR                  SS9u  pU
R                  (       a  U" U
[        U5      5      $ [        U5      $ )Nr   r  Fr
  TrU  )rW  rS  r=   rd   rX  r   rY  r   ra   r   rZ  )rA   rP   rS  r   r   r   r\  r]  r   r^  r   termss               r4   rY  cos._eval_expand_trig_  s    Biil::##%DAQ'99;BQ'99;BQ'99;BQ'99;B525= ZZ++T+:LE!%U443xr6   c                J   SSK Jn  U R                  S   nUR                  US5      R	                  5       nU[
        S-  -   [
        -  nUR                  (       a:  XW[
        -  -
  [
        S-  -   R                  U5      n[        R                  U-  U-  $ U[        R                  L a-  UR                  US[        U5      R                  (       a  SOSS9nU[        R                  [        R                  4;   a	  U" SS5      $ UR                   (       a  U R#                  U5      $ U $ )	Nr   r   r   ra  rb  rc  r   r   re  rk  s	            r4   rn  cos._eval_as_leading_termp  s    AiilXXa^""$"Q$YN<<"*r!t#44Q7BMM1$b(("""1aBtH,@,@ScJB!**a0011r1%% "tyy}6$6r6   c                B    U R                   S   R                  (       a  gg rq  rr  rH  s    r4   rs  cos._eval_is_extended_real~  ru  r6   c                F    U R                   S   nUR                  (       a  gg rq  rr  rw  s     r4   rx  cos._eval_is_finite  s     iil  r6   c                ~    U R                   S   R                  (       d  U R                   S   R                  (       a  gg rq  r  rH  s    r4   r  cos._eval_is_complex  s,    99Q<((yy|&& 'r6   c                    [        U R                  S   5      u  pUR                  (       a%  U(       a  U[        R                  -
  R
                  $ g g rE  r   r=   r?   r   r   r   r|  s      r4   r  cos._eval_is_zero  s;    #DIIaL1<<Gaff$000 $<r6   rN   ro   r  r  )r   r   rn   )"rp   rq   rr   rs   rt   r   r   r  r   r  r   r   r   r   r  r  r  r  r#  r'  r*  r6  r0  rB  rI  rO   rY  rn  rs  rx  r  r  rx   r  r  s   @r4   r   r   )  s    )V*5 I IV 
?  
?C,$/-*@
9),V135
"7
1 1r6   r   c                     ^  \ rS rSrSrSS jrSS jrSS jr\S 5       r	\
\S 5       5       rS U 4S jjrS	 rS
 rS!S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!Sr"U =r#$ )"r  i  aX  
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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Tan

c                .    U R                  [        U5      $ ro   r   r   s     r4   r   
tan.period      ||B''r6   c                P    US:X  a  [         R                  U S-  -   $ [        X5      eNr   r   )r   r   r   r   s     r4   r   	tan.fdiff  s&    q=5547?"$T44r6   c                    [         $ z'
Returns the inverse of this function.
r   r   s     r4   inversetan.inverse  	     r6   c           
         SSK Jn  UR                  (       a  U[        R                  L a  [        R                  $ UR
                  (       a  [        R                  $ U[        R                  [        R                  4;   a%  U" [        R                  [        R                  5      $ U[        R                  L a  [        R                  $ [        X5      (       a  UR                  UR                  pC[        U[        -  5      nU[        R                  La  X5[        -  -
  nU[        R                  La  XE[        -  -
  nSSKJn  U" X45      R#                  U" [        S-  [        [%        SS5      -  5      5      (       a%  U" [        R                  [        R                  5      $ U" ['        U5      ['        U5      5      $ UR)                  5       (       a
  U " U* 5      * $ [+        U5      nUb  SSKJn  [        R0                  U" U5      -  $ [3        US5      n	U	Gb  U	R4                  (       a  [        R                  $ U	R6                  (       d  U	[        -  n
X:w  a  U " U
5      $ g U	R6                  (       Ga(  U	R8                  nU	R:                  U-  n[=        SS[=        S5      -  S-  -
  5      [=        SS[=        S5      -  -
  5      [=        SS[=        S5      -  S-  -   5      [=        SS[=        S5      -  -   5      S	.nUS
;   a  SU-  U-  nUS:  a
  SU-
  nX   * $ X   $ U	R8                  S-  (       dw  U	[        -  S-  n
[?        U
5      [?        U
[        S-  -
  5      nn[        U[>        5      (       d6  [        U[>        5      (       d!  US:X  a  [        R                  $ SU-  UU-  -
  $ [A        5       nUU;   aC  UU   u  nnU " U[        -  U-  5      U " U[        -  U-  5      nnS UU4;   a  g UU-
  SUU-  -   -  $ U	[        RB                  -   S-  [        RB                  -
  [        -  n
[?        U
5      [?        U
[        S-  -
  5      nn[        U[>        5      (       d0  [        U[>        5      (       d  US:X  a  [        R                  $ UU-  $ X:w  a  U " U
5      $ URD                  (       aQ  [G        U5      u  nnU(       a<  ['        U[        -  5      nU[        R                  L a  [I        U5      * $ ['        U5      $ UR
                  (       a  [        R                  $ [        U[J        5      (       a  URL                  S   $ [        U[N        5      (       a  URL                  u  nnUU-  $ [        U[P        5      (       a#  URL                  S   nU[=        SUS-  -
  5      -  $ [        U[R        5      (       a#  URL                  S   n[=        SUS-  -
  5      U-  $ [        U[T        5      (       a  URL                  S   nSU-  $ [        U[V        5      (       a)  URL                  S   nS[=        SSUS-  -  -
  5      U-  -  $ [        U[X        5      (       a&  URL                  S   n[=        SSUS-  -  -
  5      U-  $ g )Nr   r   r   r   rz   )tanhr   r|   )r   r   rz   r{   r|   r~   r~   )-r   r   r   r   r   r?   rY   r   r   rv   r1   r   r   r$   r   r   r   r   r   r  r   r5   r   r  r3   rH   r   r   r  r   r%   r   r   r   rd   r   r   r   r=   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r  rI   r   r  r   table10r   cresultsresultr  rk   r  r  r  r   r   tanmr   s                             r4   r   tan.eval  sU   A==aee|uuvvQ%7%788"1#5#5qzzBB!###55Lc''wwc"fA!,,,bDj!**$bDj13$11)BqD"XaQR^BS2TUU"1#5#5qzzBB"3s8SX66''))I:05B??4=00S!$""vv''{;t9$###JJJJN A$q'	!O,A$q'	M*A$q'	!O,A$q'	M*	 <1QA1uF '
{*&z)zzA~#B;q=D'*4y#dRTk2BWG%gs33$.w$<$<"a<#$#4#44 y77?:: ;!!9DAq#&qtAv;AbDF5Eu~-#!EMAeO<<!AFF*a/!&&8"< $'t9c$A+.>!'3// *7C 8 8!| 000#GO,;t9$::s#DAq1R4y1,,,F7Nq6M;;66Mc4  88A;c5!!88DAqQ3Jc4  AT!ad(^##c4  AAqD>!##c4  AQ3Jc4  Ad1qAv:&q())c4  AAadF
#A%% !r6   c                    U S:  d	  U S-  S:X  a  [         R                  $ [        U5      nU S-
  S-  SU S-   -  pC[        U S-   5      n[	        U S-   5      n[         R
                  U-  U-  US-
  -  U-  U-  X-  -  $ Nr   r   r   )r   rY   r   r   r   r   )r   r   r   rk   r  BFs          r4   r   tan.taylor_termJ  s     q5AEQJ66M
AUQJQUq!a% A!a% A==!#A%q1u-a/1!$66r6   c                   > U R                   S   R                  US5      S-  [        -  nU(       a4  UR                  (       a#  U R	                  [
        5      R                  XUS9$ [        TU ]  XUS9$ )Nr   r   r   r   )r=   rh  r   rZ  r   r   r   r   )rA   r   r   r   r   r   r   s         r4   r   tan._eval_nseriesY  sd    IIaLq!$Q&r)<<$2212EEw$Q$$77r6   c                    [        U[        5      (       a7  [        R                  nUR                  S   nX4U* -  XC-  -
  -  XC* -  XC-  -   -  $ g rE  r  r  s        r4   r  tan._eval_rewrite_as_Pow_  sN    c3AA!eadl#QUQT\22  r6   c                Z    U R                  U R                  S   R                  5       5      $ rE  rF  rH  s    r4   rI  tan._eval_conjugatee  rK  r6   c                    U R                   " SSU0UD6u  p4U(       aA  SSKJnJn  [	        SU-  5      U" SU-  5      -   n[        SU-  5      U-  U" SU-  5      U-  4$ U R                  U5      [        R                  4$ NrM   r   rN  r   rN   	rZ   r   rO  r   r   r   r<   r   rY   rA   rM   rP   r!   r    rO  r   denoms           r4   rO   tan.as_real_imagh  sw    ##777H"IQrT
*E"IeOT!B$Z%566IIbM166**r6   c                ~   U R                   S   nS nUR                  (       a  [        UR                   5      n/ nUR                    H,  n[        USS9R	                  5       nUR                  U5        M.     [        S5      n[        U5       Vs/ s H  n[        U5      PM     n	nSS/n
[        US-   5       H+  nU
SUS-  -
  ==   [        X5      SUS-  S-  -  -  -  ss'   M-     U
S   U
S   -  R                  [        [        X5      5      5      $ UR                  (       a  UR                  S	S
9u  pUR                  (       aj  US:  ad  [         R"                  n[%        SS	S9nSX-  -   U-  R'                  5       n[)        U5      [+        U5      -  R                  U[        U5      4/5      $ [        U5      $ s  snf )Nr   Fr
  Yr   r   r   r{   TrU  dummyreal)r=   rd   r   r  rY  r   r/   rangenextr.   r   listr  ra   r   rZ  r   r3   r   rX   r    r!   )rA   rP   r   r   r   TXtxYgr   r
  r   r   r  r   r  Ps                   r4   rY  tan._eval_expand_trigq  s   iil::CHHABXXU+==?		"  "#&B$)!H.Hq$r(HA.AA1q5\!a!e)q 4bQUQJ5G GG "aD1I##DQ$455ZZ++T+:LEEAIOO7.!#g%--/1be))As5z?*;<<3x /s   F:c                   [         R                  nSSKJn  [	        U[
        U45      (       a1  UR                  UR                  S   5      R                  [        5      n[        U* U-  5      [        X-  5      peX5U-
  -  XV-   -  $ Nr   r   r  )rA   r   r   r   r   neg_exppos_exps          r4   r   tan._eval_rewrite_as_exp  sp    OOLc13EFGG((388A;'//4CtAv;CE
G#$g&788r6   c                B    S[        U5      S-  -  [        SU-  5      -  $ r   r   rA   r   r   s      r4   r  tan._eval_rewrite_as_sin  s!    Q{3qs8##r6   c                B    [        U[        S-  -
  SS9[        U5      -  $ r	  r  r  s      r4   r  tan._eval_rewrite_as_cos  s     1r!t8e,SV33r6   c                0    [        U5      [        U5      -  $ ro   r  r  s      r4   r  tan._eval_rewrite_as_sincos      3xC  r6   c                    S[        U5      -  $ r-  r   r  s      r4   r#  tan._eval_rewrite_as_cot  r2  r6   c                    [        U5      R                  " [        40 UD6n[        U5      R                  " [        40 UD6nX4-  $ ro   )r   r   r5  r   )rA   r   r   sin_in_sec_formcos_in_sec_forms        r4   r6  tan._eval_rewrite_as_sec  =    c(**39&9c(**39&9..r6   c                    [        U5      R                  " [        40 UD6n[        U5      R                  " [        40 UD6nX4-  $ ro   )r   r   r/  r   )rA   r   r   sin_in_csc_formcos_in_csc_forms        r4   r0  tan._eval_rewrite_as_csc  r+  r6   c                    U R                   " [        40 UD6R                   " [        40 UD6nUR                  [        5      (       a  g U$ ro   r   r   r&  r`   rA   r   r   r   s       r4   r'  tan._eval_rewrite_as_pow  :    LL''//>v>55::r6   c                    U R                   " [        40 UD6R                   " [        40 UD6nUR                  [        5      (       a  g U$ ro   r   r   r%   r`   r2  s       r4   r*  tan._eval_rewrite_as_sqrt  :    LL''//??55::r6   c                n    SSK Jn  U" [        R                  U5      U" [        R                  * U5      -  $ Nr   r=  r@  r>  r   r   rA  s       r4   rB  tan._eval_rewrite_as_besselj  s(    :qvvs#GQVVGS$999r6   c                p   SSK Jn  SSKJn  U R                  S   nUR                  US5      R                  5       nSU-  [        -  nUR                  (       a5  Xh[        -  S-  -
  R                  U5      n	UR                  (       a  U	$ SU	-  $ U[        R                  L a*  UR                  USU" U5      R                  (       a  SOSS9nU[        R                  [        R                   4;   a%  U" [        R                   [        R                  5      $ UR"                  (       a  U R%                  U5      $ U $ )	Nr   r   r!   r   r   ra  rb  rc  r   r   $sympy.functions.elementary.complexesr!   r=   r   rf  r   r   rg  r   r   rv   rh  ri  r   r   rj  r<   
rA   r   r   r   r   r!   r   rl  r   rm  s
             r4   rn  tan._eval_as_leading_term  s    A;iilXXa^""$bDG<<"Q,//2B2-2-"""1aBtH,@,@ScJB!**a0011q111::>> "tyy}6$6r6   c                4    U R                   S   R                  $ rE  rr  rH  s    r4   rs  tan._eval_is_extended_real  s    yy|,,,r6   c                    U R                   S   nUR                  (       a)  U[        -  [        R                  -
  R
                  SL a  gg g rF   r=   is_realr   r   r   r   rw  s     r4   _eval_is_realtan._eval_is_real  s:    iil;;CFQVVO775@ A;r6   c                    U R                   S   nUR                  (       a(  U[        -  [        R                  -
  R
                  SL a  gUR                  (       a  gg rF   )r=   rG  r   r   r   r   is_imaginaryrw  s     r4   rx  tan._eval_is_finite  sC    iil;;CFQVVO775@ r6   c                r    [        U R                  S   5      u  pUR                  (       a  UR                  $ g rE  r{  r|  s      r4   r  tan._eval_is_zero  r  r6   c                    U R                   S   nUR                  (       a)  U[        -  [        R                  -
  R
                  SL a  gg g rF   rF  rw  s     r4   r  tan._eval_is_complex  s:    iil;;CFQVVO775@ A;r6   rN   ro   r  r  rn   )$rp   rq   rr   rs   rt   r   r   r  r  r   r  r   r   r   r  rI  rO   rY  r   r  r  r  r#  r6  r0  r'  r*  rB  rn  rs  rH  rx  r  r  rx   r  r  s   @r4   r  r    s    #J(5 & &B 7  7833+69$4!/
/
:7-
&
 r6   r  c                      \ rS rSrSrS S jrS!S jrS!S jr\S 5       r	\
\S 5       5       rS"S	 jrS
 rS#S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"Sr#g)$r   i  aT  
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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Cot

Nc                .    U R                  [        U5      $ ro   r   r   s     r4   r   
cot.period  r  r6   c                P    US:X  a  [         R                  U S-  -
  $ [        X5      er  )r   r   r   r   s     r4   r   	cot.fdiff  s'    q===47**$T44r6   c                    [         $ r  r   r   s     r4   r  cot.inverse  r  r6   c                l
   SSK Jn  UR                  (       a  U[        R                  L a  [        R                  $ UR
                  (       a  [        R                  $ U[        R                  [        R                  4;   a%  U" [        R                  [        R                  5      $ U[        R                  L a  [        R                  $ [        X5      (       a  [        U[        S-  -   5      * $ UR                  5       (       a
  U " U* 5      * $ [        U5      nUb   SSKJn  [        R                   * U" U5      -  $ [#        US5      nUGb  UR$                  (       a  [        R                  $ UR&                  (       d  U[        -  nXa:w  a  U " U5      $ g UR&                  (       Ga  UR(                  S;   a  [        [        S-  U-
  5      $ UR(                  S:  as  UR(                  S-  (       d_  U[        -  S-  n[+        U5      [+        U[        S-  -
  5      p[        U[*        5      (       d  [        U[*        5      (       d
  SU-  Xx-  -   $ UR(                  n	UR,                  U	-  n
[/        5       nX;   a=  X   u  pU " U
[        -  U-  5      U " U
[        -  U-  5      pS X4;   a  g SX-  -   X-
  -  $ U[        R0                  -   S-  [        R0                  -
  [        -  n[+        U5      [+        U[        S-  -
  5      p[        U[*        5      (       d/  [        U[*        5      (       d  US:X  a  [        R                  $ Xx-  $ Xa:w  a  U " U5      $ UR2                  (       aQ  [5        U5      u  nnU(       a<  [7        U[        -  5      nU[        R                  L a  [7        U5      $ [        U5      * $ UR
                  (       a  [        R                  $ [        U[8        5      (       a  UR:                  S   $ [        U[<        5      (       a  UR:                  S   nSU-  $ [        U[>        5      (       a  UR:                  u  nnUU-  $ [        U[@        5      (       a#  UR:                  S   n[C        SUS-  -
  5      U-  $ [        U[D        5      (       a#  UR:                  S   nU[C        SUS-  -
  5      -  $ [        U[F        5      (       a&  UR:                  S   n[C        SSUS-  -  -
  5      U-  $ [        U[H        5      (       a)  UR:                  S   nS[C        SSUS-  -  -
  5      U-  -  $ g )Nr   r   r   )cothr  r   )%r   r   r   r   r   r?   rv   r   r   r1   r  r   r   r5   r   rZ  r3   rH   r   r   r  r   r   r   r   rd   r   r   r   r=   r   r   r   r%   r   r   r   )r   r   r   r   rZ  rI   r   r  r  r  r   r  rk   r  r  r  r   r   cotmr   s                       r4   r   cot.eval  s4   A==aee|uu{{(((Q%7%788"1#5#5qzzBB!###55Lc''bd
O##''))I:05BOO#DM11S!$""(((''{;t9$###::(r!tcz?*::>(**q.#B;q=D'*4y#dRTk2BW%gs33$.w$<$< y7?::JJJJN ;!9DA#&qtAv;AbDF5~-#Oem<<"QVV+q0AFF:B> $'t9c$A+.>!'3// *7C 8 8!| 000"?*;t9$::s#DAq1R4y1,,,q6MF7N;;$$$c4  88A;c4  AQ3Jc5!!88DAqQ3Jc4  AAqD>!##c4  AT!ad(^##c4  AAadF
#A%%c4  Ad1qAv:&q()) !r6   c                   U S:X  a  S[        U5      -  $ U S:  d	  U S-  S:X  a  [        R                  $ [        U5      n[        U S-   5      n[	        U S-   5      n[        R
                  U S-   S-  -  SU S-   -  -  U-  U-  X-  -  $ Nr   r   r   )r   r   rY   r   r   r   )r   r   r   r  r  s        r4   r   cot.taylor_term  s     6WQZ<Ua!eqj66M
A!a% A!a% A==AEA:.q1q5z9!;A=adBBr6   c                
   U R                   S   R                  US5      [        -  nU(       a4  UR                  (       a#  U R	                  [
        5      R                  XUS9$ U R	                  [        5      R                  XUS9$ )Nr   r  )r=   rh  r   rZ  r   r   r   r  )rA   r   r   r   r   r   s         r4   r   cot._eval_nseries  sh    IIaLq!$R'<<$2212EE||C ..qD.AAr6   c                Z    U R                  U R                  S   R                  5       5      $ rE  rF  rH  s    r4   rI  cot._eval_conjugate  rK  r6   c                   U R                   " SSU0UD6u  p4U(       aB  SSKJnJn  [	        SU-  5      U" SU-  5      -
  n[        SU-  5      * U-  U" SU-  5      U-  4$ U R                  U5      [        R                  4$ r  r  r  s           r4   rO   cot.as_real_imag  sz    ##777H"IQrT
*E2YJu$d1R4j&677IIbM166**r6   c                   SSK Jn  [        R                  n[	        U[
        U45      (       a3  UR                  UR                  S   5      R                  " [        40 UD6n[        U* U-  5      [        X-  5      peXFU-   -  Xe-
  -  $ r  r   )rA   r   r   r   r   r  r  s          r4   r   cot._eval_rewrite_as_exp  su    LOOc13EFGG((388A;'//>v>CtAv;CE
G#$g&788r6   c                    [        U[        5      (       a8  [        R                  nUR                  S   nU* XC* -  XC-  -   -  XC* -  XC-  -
  -  $ g rE  r  r  s        r4   r  cot._eval_rewrite_as_Pow  sP    c3AA2q"uqt|$aeadl33  r6   c                B    [        SU-  5      S[        U5      S-  -  -  $ r   r  r  s      r4   r  cot._eval_rewrite_as_sin  s!    1Q3xCFAI''r6   c                B    [        U5      [        U[        S-  -
  SS9-  $ r	  r  r  s      r4   r  cot._eval_rewrite_as_cos  s     1vc!bd(U333r6   c                0    [        U5      [        U5      -  $ ro   r   r   r  s      r4   r  cot._eval_rewrite_as_sincos  r#  r6   c                    S[        U5      -  $ r-  r  r  s      r4   r  cot._eval_rewrite_as_tan  r2  r6   c                    [        U5      R                  " [        40 UD6n[        U5      R                  " [        40 UD6nX4-  $ ro   )r   r   r5  r   )rA   r   r   r)  r(  s        r4   r6  cot._eval_rewrite_as_sec  r+  r6   c                    [        U5      R                  " [        40 UD6n[        U5      R                  " [        40 UD6nX4-  $ ro   )r   r   r/  r   )rA   r   r   r.  r-  s        r4   r0  cot._eval_rewrite_as_csc  r+  r6   c                    U R                   " [        40 UD6R                   " [        40 UD6nUR                  [        5      (       a  g U$ ro   r1  r2  s       r4   r'  cot._eval_rewrite_as_pow  r4  r6   c                    U R                   " [        40 UD6R                   " [        40 UD6nUR                  [        5      (       a  g U$ ro   r6  r2  s       r4   r*  cot._eval_rewrite_as_sqrt  r8  r6   c                n    SSK Jn  U" [        R                  * U5      U" [        R                  U5      -  $ r:  r;  rA  s       r4   rB  cot._eval_rewrite_as_besselj  s(    :w$WQVVS%999r6   c                r   SSK Jn  SSKJn  U R                  S   nUR                  US5      R                  5       nSU-  [        -  nUR                  (       a6  Xh[        -  S-  -
  R                  U5      n	UR                  (       a  SU	-  $ U	* $ U[        R                  L a*  UR                  USU" U5      R                  (       a  SOSS9nU[        R                  [        R                   4;   a%  U" [        R                   [        R                  5      $ UR"                  (       a  U R%                  U5      $ U $ )	Nr   r   r>  r   r   ra  rb  rc  r?  rA  s
             r4   rn  cot._eval_as_leading_term  s    A;iilXXa^""$bDG<<"Q,//2B991R4-2#-"""1aBtH,@,@ScJB!**a0011q111::>> "tyy}6$6r6   c                4    U R                   S   R                  $ rE  rr  rH  s    r4   rs  cot._eval_is_extended_real      yy|,,,r6   c                x   U R                   S   nS nUR                  (       a  [        UR                   5      n/ nUR                    H,  n[        USS9R	                  5       nUR                  U5        M.     [        S5      n[        U5       Vs/ s H  n[        U5      PM     n	nSS/n
[        USS5       H,  nXU-
  S-  ==   [        X5      SXH-
  S-  S-  -  -  -  ss'   M.     U
S   U
S   -  R                  [        [        X5      5      5      $ UR                  (       a  UR                  S	S
9u  pUR                  (       ag  US:  aa  [         R"                  n[%        SS	S9nX-   U-  R'                  5       n[)        U5      [+        U5      -  R                  U[        U5      4/5      $ [        U5      $ s  snf )Nr   Fr
  r
  r   r   r{   r   TrU  r  r  )r=   rd   r   r   rY  r   r/   r  r  r.   r   r  r  ra   r   rZ  r   r3   r   rX   r!   r    )rA   rP   r   r   r   CXr   r  r   r
  r   r   r  r   r  r  s                   r4   rY  cot._eval_expand_trig  s}   iil::CHHABXXU+==?		"  "#&B$)!H.Hq$r(HA.AA1b"%q5A+."6{Q>N7O"OO &aD1I##DQ$455ZZ++T+:LEEAIOO7.ee^++-1be))As5z?*;<<3x /s   F7c                    U R                   S   nUR                  (       a  U[        -  R                  SL a  gUR                  (       a  gg rF   )r=   rG  r   r   rK  rw  s     r4   rx  cot._eval_is_finite  s;    iil;;CF..%7 r6   c                t    U R                   S   nUR                  (       a  U[        -  R                  SL a  gg g rF   r=   rG  r   r   rw  s     r4   rH  cot._eval_is_real  1    iil;;CF..%7 8;r6   c                t    U R                   S   nUR                  (       a  U[        -  R                  SL a  gg g rF   r  rw  s     r4   r  cot._eval_is_complex  r  r6   c                    [        U R                  S   5      u  pU(       a/  UR                  (       a  U[        R                  -
  R
                  $ g g rE  r  )rA   r}  pimults      r4   r  cot._eval_is_zero  s:    "499Q<0dllQVVO/// #6r6   c                    U R                   S   nUR                  X5      nX4:w  a(  U[        -  R                  (       a  [        R
                  $ [        U5      $ rE  )r=   r   r   r   r   rv   r   )rA   oldnewr   argnews        r4   
_eval_subscot._eval_subs  sD    iil##=fRi33$$$6{r6   rN   ro   r  r  rn   )$rp   rq   rr   rs   rt   r   r   r  r  r   r  r   r   r   rI  rO   r   r  r  r  r  r  r6  r0  r'  r*  rB  rn  rs  rY  rx  rH  r  r  r  rx   rN   r6   r4   r   r     s    #J(5 f* f*P C  CB3+94(4!/
/
:7-4

0
r6   r   c                      \ rS rSr% SrSr\R                  4rSr	S\
S'   SrS\
S'   \S 5       rS rS	 rS
 rS rSS jrS rS rS rS rS rS rS rS rSS jrS rS rS rS rSS jr Sr!g)ReciprocalTrigonometricFunctioni$  z@Base class for reciprocal functions of trigonometric functions. Nr   _is_even_is_oddc                r   UR                  5       (       a5  U R                  (       a	  U " U* 5      $ U R                  (       a
  U " U* 5      * $ [        U5      nUb  SU-  R                  (       d  UR
                  (       a  UR                  nUR                  SU-  -  nXC:  a  US-
  [        -  nU " U5      * $ SU-  U:  a?  SU-
  [        -  nU R                  (       a  U " U5      $ U R                  (       a	  U " U5      * $ [        US5      (       a#  UR                  5       U :X  a  UR                  S   $ U R                  R                  U5      nUc  U$ [        S Xf* 4 5       5      (       a  SU-  R                  [         5      $ [        S Xf* 4 5       5      (       a  SU-  R                  ["        5      $ SU-  $ )Nr   r   r  r   c              3  B   #    U  H  n[        U[        5      v   M     g 7fro   )r1   r   r  r   s     r4   r  7ReciprocalTrigonometricFunction.eval.<locals>.<genexpr>P       5WAs##W   c              3  B   #    U  H  n[        U[        5      v   M     g 7fro   )r1   r   r  s     r4   r  r  R  r  r  )r   r  r  rH   r   r   r  r   r   hasattrr  r=   _reciprocal_ofr   anyr   r5  r/  )r   r   rI   r  r   r   ts          r4   r   $ReciprocalTrigonometricFunction.eval2  sv   ''))||C4y {{SD	z!S> xZ++$$JJJJ!A#&5$qL",DI:%Q37L",D{{"4y( #D	z)3	""s{{}';88A;##C(9H5aW555aC==%%5aW555aC==%%Q3Jr6   c                `    U R                  U R                  S   5      n[        XA5      " U0 UD6$ rE  )r  r=   getattr)rA   method_namer=   r   os        r4   _call_reciprocal0ReciprocalTrigonometricFunction._call_reciprocalW  s/    		!-q&777r6   c                B    U R                   " U/UQ70 UD6nUb  SU-  $ U$ r-  )r  )rA   r  r=   r   r  s        r4   _calculate_reciprocal5ReciprocalTrigonometricFunction._calculate_reciprocal\  s1     !!+???mqs**r6   c                `    U R                  X5      nUb  X0R                  U5      :w  a  SU-  $ g g r-  )r  r  )rA   r  r   r  s       r4   _rewrite_reciprocal3ReciprocalTrigonometricFunction._rewrite_reciprocalb  s9     !!+3=Q"5"5c"::Q3J ;=r6   c                r    [        U R                  S   5      nU R                  U5      R                  U5      $ rE  )r
   r=   r  r   )rA   rg   rh   s      r4   rl   'ReciprocalTrigonometricFunction._periodi  s0    tyy|$""1%,,V44r6   c                4    U R                  SU5      * U S-  -  $ )Nr   r   r  r   s     r4   r   %ReciprocalTrigonometricFunction.fdiffm  s!    **7H==dAgEEr6   c                &    U R                  SU5      $ )Nr   r  r  s      r4   r   4ReciprocalTrigonometricFunction._eval_rewrite_as_expp      ''(>DDr6   c                &    U R                  SU5      $ )Nr  r  r  s      r4   r  4ReciprocalTrigonometricFunction._eval_rewrite_as_Pows  r  r6   c                &    U R                  SU5      $ )Nr  r  r  s      r4   r  4ReciprocalTrigonometricFunction._eval_rewrite_as_sinv  r  r6   c                &    U R                  SU5      $ )Nr  r  r  s      r4   r  4ReciprocalTrigonometricFunction._eval_rewrite_as_cosy  r  r6   c                &    U R                  SU5      $ )Nr  r  r  s      r4   r  4ReciprocalTrigonometricFunction._eval_rewrite_as_tan|  r  r6   c                &    U R                  SU5      $ )Nr'  r  r  s      r4   r'  4ReciprocalTrigonometricFunction._eval_rewrite_as_pow  r  r6   c                &    U R                  SU5      $ )Nr*  r  r  s      r4   r*  5ReciprocalTrigonometricFunction._eval_rewrite_as_sqrt  s    ''(?EEr6   c                Z    U R                  U R                  S   R                  5       5      $ rE  rF  rH  s    r4   rI  /ReciprocalTrigonometricFunction._eval_conjugate  rK  r6   c                f    SU R                  U R                  S   5      -  R                  " U40 UD6$ r   )r  r=   rO   )rA   rM   rP   s      r4   rO   ,ReciprocalTrigonometricFunction.as_real_imag  s:    $%%diil33AA$ KDIK 	Kr6   c                &    U R                   " S0 UD6$ )N)rY  r  )rA   rP   s     r4   rY  1ReciprocalTrigonometricFunction._eval_expand_trig  s    ))GGGr6   c                Z    U R                  U R                  S   5      R                  5       $ rE  )r  r=   rs  rH  s    r4   rs  6ReciprocalTrigonometricFunction._eval_is_extended_real  s$    ""499Q<0GGIIr6   c                `    SU R                  U R                  S   5      -  R                  XUS9$ )Nr   r   r   r   )r  r=   rn  )rA   r   r   r   s       r4   rn  5ReciprocalTrigonometricFunction._eval_as_leading_term  s1    $%%diil33JJ1^bJccr6   c                X    SU R                  U R                  S   5      -  R                  $ r   )r  r=   rj  rH  s    r4   rx  /ReciprocalTrigonometricFunction._eval_is_finite  s&    $%%diil33>>>r6   c                d    SU R                  U R                  S   5      -  R                  XU5      $ r   )r  r=   r   rA   r   r   r   r   s        r4   r   -ReciprocalTrigonometricFunction._eval_nseries  s-    $%%diil33BB1NNr6   rN   r  rn   r  )"rp   rq   rr   rs   rt   r  r   rv   rw   r  __annotations__r  r  r   r  r  r  rl   r   r   r  r  r  r  r'  r*  rI  rO   rY  rs  rn  rx  r   rx   rN   r6   r4   r  r  $  s    JN'')N HiGY" "H8
+5FEEEEEEF3KHJd?Or6   r  c                      \ rS rSrSr\rSrSS jrS r	S r
S rS	 rS
 rS rSS jrS rS r\\S 5       5       rS rSrg)r5  i  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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Sec

TNc                $    U R                  U5      $ ro   rl   r   s     r4   r   
sec.period      ||F##r6   c                :    [        US-  5      S-  nUS-   US-
  -  $ r  r%  )rA   r   r   cot_half_sqs       r4   r#  sec._eval_rewrite_as_cot  s&    #a%j!ma+/22r6   c                    S[        U5      -  $ r-  r   r  s      r4   r  sec._eval_rewrite_as_cos      #c(
r6   c                H    [        U5      [        U5      [        U5      -  -  $ ro   r  r  s      r4   r  sec._eval_rewrite_as_sincos      3xS#c(*++r6   c                H    S[        U5      R                  " [        40 UD6-  $ r-  )r   r   r   r  s      r4   r  sec._eval_rewrite_as_sin  !    #c(""31&112r6   c                H    S[        U5      R                  " [        40 UD6-  $ r-  )r   r   r  r  s      r4   r  sec._eval_rewrite_as_tan  r  r6   c                *    [        [        S-  U-
  SS9$ r	  )r/  r   r  s      r4   r0  sec._eval_rewrite_as_csc      2a4#:..r6   c                    US:X  a1  [        U R                  S   5      [        U R                  S   5      -  $ [        X5      er   )r  r=   r5  r   r   s     r4   r   	sec.fdiff  s9    q=tyy|$S1%666$T44r6   c                    SSK Jn  [        S[        [        U-  5      [        S5      -  U" [
        R                  * U5      -  -  [        US5      4S5      $ )Nr   r=  r   r   r  r  rA  s       r4   rB  sec._eval_rewrite_as_besselj  sK    :DCL$q'*7AFF7C+@@A2c1:N 	r6   c                    U R                   S   nUR                  (       a)  U[        -  [        R                  -
  R
                  SL a  gg g rF   )r=   r  r   r   r   r   rw  s     r4   r  sec._eval_is_complex  s:    iil>>s2v::eC D>r6   c                    U S:  d	  U S-  S:X  a  [         R                  $ [        U5      nU S-  n[         R                  U-  [	        SU-  5      -  [        SU-  5      -  USU-  -  -  $ r  )r   rY   r   r   r   r   r   r   r   ks       r4   r   sec.taylor_term  sf    
 q5AEQJ66M
A1A==!#E!A#J.y1~=a!A#hFFr6   c                   SSK Jn  SSKJn  U R                  S   nUR                  US5      R                  5       nU[        S-  -   [        -  nUR                  (       a:  Xh[        -  -
  [        S-  -   R                  U5      n	[        R                  U-  U	-  $ U[        R                  L a*  UR                  USU" U5      R                  (       a  SOSS9nU[        R                  [        R                   4;   a%  U" [        R                   [        R                  5      $ UR"                  (       a  U R%                  U5      $ U $ )Nr   r   r>  r   ra  rb  rc  r   r   r@  r!   r=   r   rf  r   r   rg  r   r   rv   rh  ri  r   r   rj  r<   rA  s
             r4   rn  sec._eval_as_leading_term  s    A;iilXXa^""$"Q$YN<<"*r!t#44Q7BMM1$b(("""1aBtH,@,@ScJB!**a0011q111::>> "tyy}6$6r6   rN   ro   r  )rp   rq   rr   rs   rt   r   r  r  r   r#  r  r  r  r  r0  r   rB  r  r  r   r   rn  rx   rN   r6   r4   r5  r5    si    !F NH$3,33/5 G  G7r6   r5  c                      \ rS rSrSr\rSrSS jrS r	S r
S rS	 rS
 rS rS rSS jrS r\\S 5       5       rS rSrg)r/  i  a3  
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] https://dlmf.nist.gov/4.14
.. [3] https://functions.wolfram.com/ElementaryFunctions/Csc

TNc                $    U R                  U5      $ ro   r  r   s     r4   r   
csc.period/  r  r6   c                    S[        U5      -  $ r-  r  r  s      r4   r  csc._eval_rewrite_as_sin2  r  r6   c                H    [        U5      [        U5      [        U5      -  -  $ ro   ro  r  s      r4   r  csc._eval_rewrite_as_sincos5  r  r6   c                :    [        US-  5      nSUS-  -   SU-  -  $ r  r%  r!  s       r4   r#  csc._eval_rewrite_as_cot8  s&    s1u:HaK!H*--r6   c                H    S[        U5      R                  " [        40 UD6-  $ r-  )r   r   r   r  s      r4   r  csc._eval_rewrite_as_cos<  r  r6   c                *    [        [        S-  U-
  SS9$ r	  r4  r  s      r4   r6  csc._eval_rewrite_as_sec?  r  r6   c                H    S[        U5      R                  " [        40 UD6-  $ r-  )r   r   r  r  s      r4   r  csc._eval_rewrite_as_tanB  r  r6   c                    SSK Jn  [        S[        -  5      S[        U5      U" [        R
                  U5      -  -  -  $ )Nr   r=  r   r   r?  rA  s       r4   rB  csc._eval_rewrite_as_besseljE  s1    :AbDz1d3i(<<=>>r6   c                    US:X  a2  [        U R                  S   5      * [        U R                  S   5      -  $ [        X5      er   )r   r=   r/  r   r   s     r4   r   	csc.fdiffI  s<    q=		!%%c$))A,&777$T44r6   c                t    U R                   S   nUR                  (       a  U[        -  R                  SL a  gg g rF   r  rw  s     r4   r  csc._eval_is_complexO  r  r6   c                2   U S:X  a  S[        U5      -  $ U S:  d	  U S-  S:X  a  [        R                  $ [        U5      nU S-  S-   n[        R                  US-
  -  S-  SSU-  S-
  -  S-
  -  [	        SU-  5      -  USU-  S-
  -  -  [        SU-  5      -  $ r^  )r   r   rY   r   r   r   r  s       r4   r   csc.taylor_termT  s     6WQZ<Ua!eqj66M
A1qAMMAE*1,a!A#'lQ.>?acN##$qsQw<009!A#? @r6   c                `   SSK Jn  SSKJn  U R                  S   nUR                  US5      R                  5       nU[        -  nUR                  (       a0  Xh[        -  -
  R                  U5      n	[        R                  U-  U	-  $ U[        R                  L a*  UR                  USU" U5      R                  (       a  SOSS9nU[        R                  [        R                   4;   a%  U" [        R                   [        R                  5      $ UR"                  (       a  U R%                  U5      $ U $ )Nr   r   r>  ra  rb  rc  r  rA  s
             r4   rn  csc._eval_as_leading_terma  s    A;iilXXa^""$rE<<"*--a0BMM1$b(("""1aBtH,@,@ScJB!**a0011q111::>> "tyy}6$6r6   rN   ro   r  )rp   rq   rr   rs   rt   r   r  r  r   r  r  r#  r  r6  r  rB  r   r  r  r   r   rn  rx   rN   r6   r4   r/  r/    si    !F NG$,.1/3?5
 	@  	@7r6   r/  c                  r    \ rS rSrSr\R                  4rSS jr\	S 5       r
SS jrS rS rS rS	 r\rS
rg)r9  iq  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

c                    U R                   S   nUS:X  a   [        U5      U-  [        U5      US-  -  -
  $ [        X5      er^  )r=   r   r   r   )rA   r   r   s      r4   r   
sinc.fdiff  sB    IIaLq= q6!8c!fQTk))$T44r6   c                   UR                   (       a  [        R                  $ UR                  (       aW  U[        R                  [        R
                  4;   a  [        R                  $ U[        R                  L a  [        R                  $ U[        R                  L a  [        R                  $ UR                  5       (       a	  U " U* 5      $ [        U5      nUbx  UR                  (       a+  [        UR                   5      (       a  [        R                  $ g SU-  R                  (       a'  [        R                  U[        R                  -
  -  U-  $ g g r   )r?   r   r   r   r   r   rY   r   rv   r   rH   r   r   r   r   )r   r   rI   s      r4   r   	sinc.eval  s    ;;55L==qzz1#5#566vvuu!###55L''))t9S>""S[[))66M *H*((}}x!&&'89#== )	  r6   c                \    U R                   S   n[        U5      U-  R                  XU5      $ rE  )r=   r   r   r  s        r4   r   sinc._eval_nseries  s*    IIaLAq''d33r6   c                     SSK Jn  U" SU5      $ )Nr   )jn)r@  r  )rA   r   r   r  s       r4   _eval_rewrite_as_jnsinc._eval_rewrite_as_jn  s    5!Szr6   c                    [        [        U5      U-  [        U[        R                  5      4[        R
                  [        R                  45      $ ro   )r(   r   r   r   rY   r   truer  s      r4   r  sinc._eval_rewrite_as_sin  s2    #c(3,38155!&&/JJr6   c                "   U R                   S   R                  (       a  g[        U R                   S   5      u  pUR                  (       a!  [	        UR
                  UR                  /5      $ UR                  (       a  UR
                  (       a  gg g )Nr   TF)r=   is_infiniter   r?   r   r   
is_nonzeror   r|  s      r4   r  sinc._eval_is_zero  sf    99Q<###DIIaL1<<g00'2D2DEFF>>g00 1>r6   c                ~    U R                   S   R                  (       d  U R                   S   R                  (       a  gg rq  )r=   rW   rK  rH  s    r4   rH  sinc._eval_is_real  s,    99Q<((DIIaL,E,E -Fr6   rN   Nr  r  )rp   rq   rr   rs   rt   r   rv   rw   r   r  r   r   r  r  r  rH  rx  rx   rN   r6   r4   r9  r9  q  sR    3h '')N5 > >.4K $Or6   r9  c                      \ rS rSr% Sr\R                  \R                  \R                  \R                  4r
S\S'   \\S 5       5       r\\S 5       5       r\\S 5       5       rSrg	)
InverseTrigonometricFunctioni  z/Base class for inverse trigonometric functions.ztuple[Expr, ...]rw   c                    0 [        S5      S-  [        S-  _[        S5      S-  [        S-  _S[        S5      -  [        S-  _[        S[        S5      -
  S-  5      [        S-  _[        S5      [        S[        S5      -
  5      -  S-  [        S-  _[        S[        S5      -   S-  5      [        [        SS5      -  _[        S5      [        S[        S5      -   5      -  S-  [        [        SS5      -  _[        R                  [        S-  _[        S[        S5      -
  5      S-  [        S-  _[        [        R                  [        S5      S-  -
  5      [        S-  _[        S[        S5      -   5      S-  [        [        SS5      -  _[        [        R                  [        S5      S-  -   5      [        [        SS5      -  _[        S5      S-
  S-  [        S-  _S[        S5      -
  S-  [        * S-  _[        S5      S-   S-  [        [        SS5      -  _[        S5      S-  [        S5      S-  -
  [        S	-  _[        S5      * S-  [        S5      S-  -   [        * S	-  _[        S5      S-
  [        S5      -  [        S	-  S[        S5      -
  [        S5      -  [        * S	-  [        S5      S-  [        S5      S-  -   [        [        SS	5      -  S[        S5      -   [        S5      -  [        [        SS	5      -  0E$ )
Nrz   r   r{   r   r|   r   r}   r~   r   )r%   r   r   r   r   rN   r6   r4   _asin_table(InverseTrigonometricFunction._asin_table  s   

GAIr!t
GAIr!t
 d1gIr!t
 !d1g+q!2a4	

 GDT!W%%a'A
 !d1g+q!2hq!n#4
 GDT!W%%a'HQN):
 FFBqD
 T!WaA
 $q'!)#$bd
 T!WaHQN!2
 $q'!)#$b!Q&7
 !Wq[!ORU
 a[!ObSV
 !Wq[!ORB/
  GAIQ	!2b5!
" !WHQJa"RCF#
$ !Wq[$q'!2b5a[$q'!B3r6GAIQ	!2hq"o#5a[$q'!2hq"o#5+
 	
r6   c                    [        S5      S-  [        S-  S[        S5      -  [        S-  [        S5      [        S-  [        S5      S-
  [        S-  S[        S5      -
  [        * S-  S[        S5      -   [        [        SS5      -  [        SS[        S5      -  -
  5      [        S-  [        SS[        S5      -  -   5      [        [        SS5      -  [        SS[        S5      -  S-  -
  5      [        S-  [        SS[        S5      -  S-  -   5      [        [        SS5      -  S[        S5      -
  [        S-  S	[        S5      -   [        * S-  S[        S5      -   [        [        SS5      -  0$ )
Nrz   r}   r   r   r   r|   r~   r   r   r%   r   r   rN   r6   r4   _atan_table(InverseTrigonometricFunction._atan_table  s3    GAIr!td1gIr!tGRTGaKAQK"QQKHQN*QtAwYAQtAwYHQN!2QtAwYq[!2b5QtAwYq[!2hq"o#5QKBaL2#b&QKHQO+
 	
r6   c                    0 S[        S5      -  S-  [        S-  _[        S5      [        S-  _[        SS[        S5      -  S-  -   5      [        S-  _S[        [        SS5      [        S5      S-  -
  5      -  [        S-  _[        SS[        S5      -  S-  -
  5      [        [        SS5      -  _S[        [        SS5      [        S5      S-  -   5      -  [        [        SS5      -  _S[        S-  _[        SS[        S5      -  -   5      [        S-  _S[        S[        S5      -
  5      -  [        S-  _[        SS[        S5      -  -
  5      [        [        SS5      -  _S[        S[        S5      -   5      -  [        [        SS5      -  _S[        S5      -   [        S-  _[        S5      S-
  [        [        SS5      -  _[        S5      S-
  * [        [        S	S5      -  _[        S5      [        S5      -   [        S
-  _[        S5      [        S5      -
  [        [        SS
5      -  _[        S5      [        S5      -
  * [        [        SS
5      -  _$ )Nr   rz   r{   r|   r   r   r}   r~   r   r0  rN   r6   r4   _acsc_table(InverseTrigonometricFunction._acsc_table$  sP   

d1gIaKA
GRT
 QtAwYq[!2a4
 d8Aq>DGAI-..1	

 QtAwYq[!2hq!n#4
 d8Aq>DGAI-..8Aq>0A
 r!t
 QtAwYA
 d1tAw;A
 QtAwYHQN!2
 d1tAw;HQN!2
 QKB
 GaKHQO+
 1gkNBxB//
 Gd1gr"u
  Gd1gr(1b/1!
" 1gQ "Xb"%5"5#
 	
r6   rN   N)rp   rq   rr   rs   rt   r   r   r   rY   rv   rw   r  r  r   r-  r1  r6  rx   rN   r6   r4   r+  r+    s}    9()q}}affaFWFW'XN$X
  
8 
  
& 
  
r6   r+  c                     ^  \ rS rSrSrSS jrS rS rS r\	S 5       r
\\S 5       5       rS	 rSU 4S
 jjrS rS rS r\rS rS rS rS rSS jrSrU =r$ )r   i>  a  
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] https://dlmf.nist.gov/4.23
.. [3] https://functions.wolfram.com/ElementaryFunctions/ArcSin

c                f    US:X  a!  S[        SU R                  S   S-  -
  5      -  $ [        X5      eNr   r   r   r%   r=   r   r   s     r4   r   
asin.fdiffi  s5    q=T!diilAo-...$T44r6   c                    U R                   " U R                  6 nUR                   U R                   :X  a   UR                  S   R                  (       a  gg UR                  $ r;   r<   r=   r>   r@   s     r4   rC   asin._eval_is_rationalo  I    IItyy!66TYYvvay$$ % == r6   c                b    U R                  5       =(       a    U R                  S   R                  $ rE  )rs  r=   is_positiverH  s    r4   _eval_is_positiveasin._eval_is_positivew  $    **,I11I1IIr6   c                b    U R                  5       =(       a    U R                  S   R                  $ rE  )rs  r=   ri  rH  s    r4   _eval_is_negativeasin._eval_is_negativez  rE  r6   c                   UR                   (       a  U[        R                  L a  [        R                  $ U[        R                  L a!  [        R                  [        R
                  -  $ U[        R                  L a!  [        R                  [        R
                  -  $ UR                  (       a  [        R                  $ U[        R                  L a	  [        S-  $ U[        R                  L a
  [        * S-  $ U[        R                  L a  [        R                  $ UR                  5       (       a
  U " U* 5      * $ UR                  (       a  U R                  5       nX;   a  X!   $ [        U5      nUb  SSKJn  [        R
                  U" U5      -  $ UR                  (       a  [        R                  $ [%        U[&        5      (       ao  UR(                  S   nUR*                  (       aO  US[        -  -  nU[        :  a	  [        U-
  nU[        S-  :  a	  [        U-
  nU[        * S-  :  a
  [        * U-
  nU$ [%        U[,        5      (       a6  UR(                  S   nUR*                  (       a  [        S-  [/        U5      -
  $ g g )Nr   r   )asinh)r   r   r   r   r   r3   r?   rY   r   r   r   rv   r   	is_numberr-  r5   r   rJ  r1   r   r=   is_comparabler   r   )r   r   
asin_tabler   rJ  angs         r4   r   	asin.eval}  s   ==aee|uu

"))!//99***zz!//11vv!t%s1u!###$$$''))I:==*J !&05C??5>11;;66Mc3((1+C  qt8s(C A:s(C"Q;#)C
c3((1+C  !td3i'' !  r6   c                ,   U S:  d	  U S-  S:X  a  [         R                  $ [        U5      n[        U5      S:  a#  U S:  a  US   nX0S-
  S-  -  X S-
  -  -  US-  -  $ U S-
  S-  n[	        [         R
                  U5      n[        U5      nXV-  X-  -  U -  $ r   )r   rY   r   r   r   r   r   r   r   r   r   r  Rr  s          r4   r   asin.taylor_term  s     q5AEQJ66M
A>"a'AE"2&a%!|QAY/144UqL#AFFA.aLs14xz!r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ UR                  (       a  UR                  U5      $ U[        R                  * [        R                  [        R                  4;   a1  U R                  [        5      R                  XUS9R                  5       $ SUS-  -
  R                  (       a  UR                  X(       a  UOS5      n[!        U5      R                  (       a+  UR                  (       a  ["        * U R                  U5      -
  $ Ou[!        U5      R$                  (       a*  UR$                  (       a  ["        U R                  U5      -
  $ O1U R                  [        5      R                  XUS9R                  5       $ U R                  U5      $ Nr   r  r   r   )r=   r   rf  r   r   r<   rg  r?   r   rv   r   r"   rn  rX   ri  rd  r    r   rB  rA   r   r   r   r   rl  ndirs          r4   rn  asin._eval_as_leading_term  se   iilXXa^""$;99S00344::&&q)) 155&!%%!2!233<<$::1d:SZZ\\AI""771dd2D$x##>>32.. "D%%>>		"-- " ||C(>>qRV>W^^``yy}r6   c                  > SSK Jn  U R                  S   R                  US5      nU[        R
                  L Gac  [        SSS9n[        [        R
                  US-  -
  5      R                  [        5      R                  USSU-  5      n[        R
                  U R                  S   -
  n	U	R                  U5      n
X-
  U
-  nUR                  US5      (       d)  US:X  a  U" S5      $ [        S-  U" [        U5      5      -   $ [        [        R
                  U-   5      R                  XUS9nUR!                  5       [        U
5      -  R#                  5       nUR!                  5       R                  X}5      R#                  5       R%                  5       U" X-  U5      -   $ U[        R&                  L Gad  [        SSS9n[        [        R&                  US-  -   5      R                  [        5      R                  USSU-  5      n[        R
                  U R                  S   -   n	U	R                  U5      n
X-
  U
-  nUR                  US5      (       d*  US:X  a  U" S5      $ [        * S-  U" [        U5      5      -   $ [        [        R
                  U-   5      R                  XUS9nUR!                  5       [        U
5      -  R#                  5       nUR!                  5       R                  X}5      R#                  5       R%                  5       U" X-  U5      -   $ [(        TU ]=  XUS9nU[        R*                  L a  U$ SUS-  -
  R,                  (       a  U R                  S   R/                  X(       a  UOS5      n[1        U5      R,                  (       a  UR,                  (       a
  [        * U-
  $  U$ [1        U5      R2                  (       a  UR2                  (       a	  [        U-
  $  U$ U R                  [        5      R                  XX4S	9$ U$ 
Nr   Or  Tpositiver   r   r  r  )sympy.series.orderr\  r=   r   r   r   r   r   r   r"   nseriesrg  is_meromorphicr   r%   r   removeOrX   powsimpr   r   rv   ri  rd  r    rB  rA   r   r   r   r   r\  arg0r  serarg1rh   ri   res1resrW  r   s                  r4   r   asin._eval_nseries  sM   (yy|  A&155=cD)Aquuq!t|$,,S199!Q!DC55499Q<'D$$Q'AAA##Aq)) Avqt<2a4!DG*+<<	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MM1== cD)Aq}}q!t+,44S9AA!Q!LC55499Q<'D$$Q'AAA##Aq)) Avqt=B3q51T!W:+==	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MMg#A#61$$$JaK$$99Q<##Att;D$x####39$ $ 
 D%%##8O $ 
 ||C(66q$6RR
r6   c                ,    [         S-  [        U5      -
  $ r   r   r   r  s      r4   _eval_rewrite_as_acosasin._eval_rewrite_as_acos	      !td1g~r6   c           
     H    S[        US[        SUS-  -
  5      -   -  5      -  $ r  )r   r%   r  s      r4   _eval_rewrite_as_atanasin._eval_rewrite_as_atan	  s(    aT!ad(^+,---r6   c           	         [         R                  * [        [         R                  U-  [        SUS-  -
  5      -   5      -  $ r  r   r3   r"   r%   r  s      r4   _eval_rewrite_as_logasin._eval_rewrite_as_log	  s3    AOOA$5QAX$F GGGr6   c           	     H    S[        S[        SUS-  -
  5      -   U-  5      -  $ r  )r   r%   r  s      r4   _eval_rewrite_as_acotasin._eval_rewrite_as_acot	  s)    q4CF
++S0111r6   c                2    [         S-  [        SU-  5      -
  $ r  r   r   r  s      r4   _eval_rewrite_as_asecasin._eval_rewrite_as_asec	      !td1S5k!!r6   c                    [        SU-  5      $ r-  )r   r  s      r4   _eval_rewrite_as_acscasin._eval_rewrite_as_acsc	      AcE{r6   c                v    U R                   S   nUR                  =(       a    S[        U5      -
  R                  $ Nr   r   r=   rW   rc   is_nonnegativerA   r   s     r4   rs  asin._eval_is_extended_real	  .    IIaL!!Aq3q6z&A&AAr6   c                    [         $ r  r  r   s     r4   r  asin.inverse 	  	     
r6   rN   r  r  )rp   rq   rr   rs   rt   r   rC   rC  rG  r  r   r  r   r   rn  r   rm  rq  ru  _eval_rewrite_as_tractablerx  r|  r  rs  r  rx   r  r  s   @r4   r   r   >  s    (T5!JJ 4( 4(l "  "0*X.H "62"B r6   r   c                     ^  \ rS rSrSrSS jrS r\S 5       r\	\
S 5       5       rS rS rS	 rSU 4S
 jjrS r\rS rS rSS jrS rS rS rS rSrU =r$ )r   i'	  aF  
The inverse cosine function.

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

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

``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] https://dlmf.nist.gov/4.23
.. [3] https://functions.wolfram.com/ElementaryFunctions/ArcCos

c                f    US:X  a!  S[        SU R                  S   S-  -
  5      -  $ [        X5      eNr   r   r   r   r;  r   s     r4   r   
acos.fdiffS	  s5    q=d1tyy|Q.///$T44r6   c                    U R                   " U R                  6 nUR                   U R                   :X  a   UR                  S   R                  (       a  gg UR                  $ r;   r>  r@   s     r4   rC   acos._eval_is_rationalY	  r@  r6   c                N   UR                   (       a  U[        R                  L a  [        R                  $ U[        R                  L a!  [        R                  [        R                  -  $ U[        R
                  L a!  [        R
                  [        R                  -  $ UR                  (       a	  [        S-  $ U[        R                  L a  [        R                  $ U[        R                  L a  [        $ U[        R                  L a  [        R                  $ UR                  (       a9  U R                  5       nX;   a  [        S-  X!   -
  $ U* U;   a  [        S-  X!*    -   $ [        U5      nUb  [        S-  [        U5      -
  $ UR                   (       a>  [#        UR$                  5      S:X  a%  UR$                  S   S:X  a  UR$                  S   nSnOUnSn['        U[(        5      (       aT  UR$                  S   nUR*                  (       a4  U(       a	  [        U-
  nUS[        -  -  nU[        :  a  S[        -  U-
  nU$ ['        U[,        5      (       aR  UR$                  S   nUR*                  (       a1  U(       a  [        S-  [        U5      -   $ [        S-  [        U5      -
  $ g g Nr   r   r   r   TF)r   r   r   r   r3   r   r?   r   r   rY   r   rv   rK  r-  r5   r   ra   r   r=   r1   r   rL  r   )r   r   rM  r   r   minusrN  s          r4   r   	acos.evala	  s   ==aee|uu

"zz!//11***))!//99!tvv%	!###$$$==*J !tjo--#!tj...05a4$s)##::#chh-1,!1B88A;DEDEdC  ))A,C  s(Cqt8B$*C
dC  ))A,C  a4$t*,,!td4j(( ! !r6   c                N   U S:X  a	  [         S-  $ U S:  d	  U S-  S:X  a  [        R                  $ [        U5      n[	        U5      S:  a#  U S:  a  US   nX0S-
  S-  -  X S-
  -  -  US-  -  $ U S-
  S-  n[        [        R                  U5      n[        U5      nU* U-  X-  -  U -  $ r   )r   r   rY   r   r   r   r   r   rQ  s          r4   r   acos.taylor_term	  s     6a4KUa!eqj66M
A>"a'AE"2&a%!|QAY/144UqL#AFFA.aLr!tADy{"r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ US:X  a7  [        S5      [        [        R                  U-
  R                  U5      5      -  $ U[        R                  * [        R                  4;   a#  U R                  [        5      R                  XUS9$ SUS-  -
  R                  (       a  UR                  X(       a  UOS5      n[        U5      R                  (       a-  UR                  (       a  S[         -  U R                  U5      -
  $ Oo[        U5      R"                  (       a$  UR"                  (       a  U R                  U5      * $ O1U R                  [        5      R                  XUS9R%                  5       $ U R                  U5      $ Nr   r   r   r  )r=   r   rf  r   r   r<   rg  r%   r   rv   r   r"   rn  ri  rd  r    r   rB  rX   rV  s          r4   rn  acos._eval_as_leading_term	  si   iilXXa^""$;99S00344774 = =a @AAA155&!++,,<<$::1d:SSAI""771dd2D$x##>>R4$))B-// "D%%>> IIbM>) " ||C(>>qRV>W^^``yy}r6   c                v    U R                   S   nUR                  =(       a    S[        U5      -
  R                  $ r  r  r  s     r4   rs  acos._eval_is_extended_real	  r  r6   c                "    U R                  5       $ ro   )rs  rH  s    r4   _eval_is_nonnegativeacos._eval_is_nonnegative	  s    **,,r6   c                  > SSK Jn  U R                  S   R                  US5      nU[        R
                  L GaY  [        SSS9n[        [        R
                  US-  -
  5      R                  [        5      R                  USSU-  5      n[        R
                  U R                  S   -
  n	U	R                  U5      n
X-
  U
-  nUR                  US5      (       d  US:X  a  U" S5      $ U" [        U5      5      $ [        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ U[        R$                  L Ga`  [        SSS9n[        [        R$                  US-  -   5      R                  [        5      R                  USSU-  5      n[        R
                  U R                  S   -   n	U	R                  U5      n
X-
  U
-  nUR                  US5      (       d&  US:X  a  U" S5      $ [&        U" [        U5      5      -   $ [        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ [(        TU ]9  XUS9nU[        R*                  L a  U$ SUS-  -
  R,                  (       a  U R                  S   R/                  X(       a  UOS5      n[1        U5      R,                  (       a   UR,                  (       a  S[&        -  U-
  $  U$ [1        U5      R2                  (       a  UR2                  (       a  U* $  U$ U R                  [        5      R                  XX4S	9$ U$ rZ  )r_  r\  r=   r   r   r   r   r   r   r"   r`  rg  ra  r%   r   rb  rX   rc  r   r   r   rv   ri  rd  r    rB  rd  s                  r4   r   acos._eval_nseries	  s=   (yy|  A&155=cD)Aquuq!t|$,,S199!Q!DC55499Q<'D$$Q'AAA##Aq)) Avqt51T!W:5	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MM1== cD)Aq}}q!t+,44S9AA!Q!LC55499Q<'D$$Q'AAA##Aq)) Avqt:2$q'
?:	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MMg#A#61$$$JaK$$99Q<##Att;D$x####R4#:% $ 
 D%%##4K $ 
 ||C(66q$6RR
r6   c           
         [         S-  [        R                  [        [        R                  U-  [	        SUS-  -
  5      -   5      -  -   $ r  r   r   r3   r"   r%   r  s      r4   ru  acos._eval_rewrite_as_log	  s@    !taoo!DQTN234 4 	4r6   c                ,    [         S-  [        U5      -
  $ r   r   r   r  s      r4   _eval_rewrite_as_asinacos._eval_rewrite_as_asin	  ro  r6   c           	         [        [        SUS-  -
  5      U-  5      [        S-  SU[        SUS-  -  5      -  -
  -  -   $ r  )r   r%   r   r  s      r4   rq  acos._eval_rewrite_as_atan	  sA    DQTN1$%AAd1QT6lN0B(CCCr6   c                    [         $ r  r  r   s     r4   r  acos.inverse 
  r  r6   c           
     \    [         S-  S[        S[        SUS-  -
  5      -   U-  5      -  -
  $ r  )r   r   r%   r  s      r4   rx  acos._eval_rewrite_as_acot
  s2    !taa$q36z"22C78888r6   c                    [        SU-  5      $ r-  )r   r  s      r4   r|  acos._eval_rewrite_as_asec	
  r  r6   c                2    [         S-  [        SU-  5      -
  $ r  r   r   r  s      r4   r  acos._eval_rewrite_as_acsc
  r~  r6   c                   U R                   S   nU R                  U R                   S   R                  5       5      nUR                  SL a  U$ UR                  (       a,  US-   R                  (       a  US-
  R
                  (       a  U$ g g g Nr   Fr   )r=   r<   rG  rW   r  is_nonpositive)rA   r  rs      r4   rI  acos._eval_conjugate
  st    IIaLIIdiil,,./&HQU$:$:A?U?UH @V$:r6   rN   r  r  )rp   rq   rr   rs   rt   r   rC   r  r   r  r   r   rn  rs  r  r   ru  r  r  rq  r  rx  r|  r  rI  rx   r  r  s   @r4   r   r   '	  s    )V5! 4) 4)l #  # .B-*X4 "6D9" r6   r   c                    ^  \ rS rSr% SrS\S'   \R                  \R                  * 4rSS jr	S r
S rS rS	 rS
 r\S 5       r\\S 5       5       rS rSU 4S jjrS r\rU 4S jrSS jrS rS rS rS rS rSrU =r $ )r   i
  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] https://dlmf.nist.gov/4.23
.. [3] https://functions.wolfram.com/ElementaryFunctions/ArcTan

ztuple[Expr]r=   c                T    US:X  a  SSU R                   S   S-  -   -  $ [        X5      er:  r=   r   r   s     r4   r   
atan.fdiffC
  s0    q=a$))A,/)**$T44r6   c                    U R                   " U R                  6 nUR                   U R                   :X  a   UR                  S   R                  (       a  gg UR                  $ r;   r>  r@   s     r4   rC   atan._eval_is_rationalI
  r@  r6   c                4    U R                   S   R                  $ rE  )r=   is_extended_positiverH  s    r4   rC  atan._eval_is_positiveQ
  s    yy|000r6   c                4    U R                   S   R                  $ rE  )r=   is_extended_nonnegativerH  s    r4   r  atan._eval_is_nonnegativeT
  s    yy|333r6   c                4    U R                   S   R                  $ rE  )r=   r?   rH  s    r4   r  atan._eval_is_zeroW
  s    yy|###r6   c                4    U R                   S   R                  $ rE  rr  rH  s    r4   rH  atan._eval_is_realZ
  r  r6   c                   UR                   (       a  U[        R                  L a  [        R                  $ U[        R                  L a	  [        S-  $ U[        R
                  L a
  [        * S-  $ UR                  (       a  [        R                  $ U[        R                  L a	  [        S-  $ U[        R                  L a
  [        * S-  $ U[        R                  L a  SSKJn  U" [        * S-  [        S-  5      $ UR                  5       (       a
  U " U* 5      * $ UR                  (       a  U R                  5       nX;   a  X1   $ [!        U5      nUb  SSKJn  [        R&                  U" U5      -  $ UR                  (       a  [        R                  $ [)        U[*        5      (       aA  UR,                  S   nUR.                  (       a!  U[        -  nU[        S-  :  a	  U[        -  nU$ [)        U[0        5      (       aN  UR,                  S   nUR.                  (       a-  [        S-  [3        U5      -
  nU[        S-  :  a	  U[        -  nU$ g g )Nr   r{   r   r   )atanh)r   r   r   r   r   r   r?   rY   r   r   rv   r   r   r   rK  r1  r5   r   r  r3   r1   r  r=   rL  r   r   )r   r   r   
atan_tabler   r  rN  s          r4   r   	atan.eval]
  s   ==aee|uu

"!t***s1uvv!t%s1u!###Es1ubd++''))I:==*J !&05C??5>11;;66Mc3((1+C  r	A:2IC
c3((1+C  dT#Y&A:2IC
	 !  r6   c                    U S:  d	  U S-  S:X  a  [         R                  $ [        U5      n[         R                  U S-
  S-  -  X-  -  U -  $ r  )r   rY   r   r   r   r   r   s      r4   r   atan.taylor_term
  sJ     q5AEQJ66M
A==AEA:.qt3A55r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ UR                  (       a  UR                  U5      $ U[        R                  * [        R                  [        R                  4;   a1  U R                  [        5      R                  XUS9R                  5       $ SUS-  -   R                  (       a  UR                  X(       a  UOS5      n[!        U5      R                  (       a3  [#        U5      R$                  (       a  U R                  U5      [&        -
  $ O~[!        U5      R$                  (       a3  [#        U5      R                  (       a  U R                  U5      [&        -   $ O1U R                  [        5      R                  XUS9R                  5       $ U R                  U5      $ rU  )r=   r   rf  r   r   r<   rg  r?   r3   rv   r   r"   rn  rX   ri  rd  r!   r    rB  r   rV  s          r4   rn  atan._eval_as_leading_term
  sn   iilXXa^""$;99S00344::&&q))1??"AOOQ5F5FGG<<$::1d:SZZ\\AI""771dd2D$x##b6%%99R=2-- &D%%b6%%99R=2-- & ||C(>>qRV>W^^``yy}r6   c                .  > U R                   S   R                  US5      nU[        R                  [        R                  [        R                  -  4;   a#  U R                  [        5      R                  XX4S9$ [        TU ]  XUS9nU R                   S   R                  X(       a  UOS5      nU[        R                  L a  [        U5      S:  a	  U[        -
  $ U$ SUS-  -   R                  (       a  [        U5      R                  (       a&  [        U5      R                  (       a	  U[        -
  $  U$ [        U5      R                  (       a&  [        U5      R                  (       a	  U[        -   $  U$ U R                  [        5      R                  XX4S9$ U$ Nr   r  r  r   r   )r=   r   r   r3   r   r   r"   r   r   rd  rv   r!   r   ri  r    rB  	rA   r   r   r   r   re  ri  rW  r   s	           r4   r   atan._eval_nseries
  sL   yy|  A& AOOQ]]1??%BCC<<$221d2NNg#A#6yy|44Q71$$$$x!|RxJaK$$$x##d8''8O ( 
 D%%d8''8O ( 
 ||C(66q$6RR
r6   c                    [         R                  S-  [        [         R                  [         R                  U-  -
  5      [        [         R                  [         R                  U-  -   5      -
  -  $ r   )r   r3   r"   r   r  s      r4   ru  atan._eval_rewrite_as_log
  sP    q #aeeaooa.?&?"@!%%!//!++,#- . 	.r6   c                   > US   [         R                  [         R                  4;   a5  [        S-  [	        SU R
                  S   -  5      -
  R                  X1U5      $ [        TU ]!  XX45      $ r  )	r   r   r   r   r   r=   r   r   _eval_aseriesrA   r   args0r   r   r   s        r4   r  atan._eval_aseries
  s]    8

A$6$677qD4$))A,//>>qTJJ7(1;;r6   c                    [         $ r  rr  r   s     r4   r  atan.inverse
  r  r6   c           
     t    [        US-  5      U-  [        S-  [        S[        SUS-  -   5      -  5      -
  -  $ r  r%   r   r   r  s      r4   r  atan._eval_rewrite_as_asin
  s:    CF|CAQtAQJ/?-?(@!@AAr6   c           	     `    [        US-  5      U-  [        S[        SUS-  -   5      -  5      -  $ r  r%   r   r  s      r4   rm  atan._eval_rewrite_as_acos
  s1    CF|CQtAQJ'7%7 888r6   c                    [        SU-  5      $ r-  rW  r  s      r4   rx  atan._eval_rewrite_as_acot
  r  r6   c                Z    [        US-  5      U-  [        [        SUS-  -   5      5      -  $ r  r%   r   r  s      r4   r|  atan._eval_rewrite_as_asec
  s,    CF|CT!c1f*%5 666r6   c           	     n    [        US-  5      U-  [        S-  [        [        SUS-  -   5      5      -
  -  $ r  r%   r   r   r  s      r4   r  atan._eval_rewrite_as_acsc
  s5    CF|CAT!c1f*-=(>!>??r6   rN   r  r  )!rp   rq   rr   rs   rt   r  r   r3   rw   r   rC   rC  r  r  rH  r  r   r  r   r   rn  r   ru  r  r  r  r  rm  rx  r|  r  rx   r  r  s   @r4   r   r   
  s    $L oo'78N5!14$- 2 2h 6  6.2. "6<B97@ @r6   r   c                     ^  \ rS rSrSr\R                  \R                  * 4rSS jrS r	S r
S rS r\S 5       r\\S	 5       5       rS
 rSU 4S jjrU 4S jrS r\rSS jrS rS rS rS rS rSrU =r$ )r   i
  aV  
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] https://dlmf.nist.gov/4.23
.. [2] https://functions.wolfram.com/ElementaryFunctions/ArcCot

c                T    US:X  a  SSU R                   S   S-  -   -  $ [        X5      er  r  r   s     r4   r   
acot.fdiff  s0    q=q499Q<?*++$T44r6   c                    U R                   " U R                  6 nUR                   U R                   :X  a   UR                  S   R                  (       a  gg UR                  $ r;   r>  r@   s     r4   rC   acot._eval_is_rational   r@  r6   c                4    U R                   S   R                  $ rE  )r=   r  rH  s    r4   rC  acot._eval_is_positive(  s    yy|***r6   c                4    U R                   S   R                  $ rE  )r=   ri  rH  s    r4   rG  acot._eval_is_negative+  s    yy|'''r6   c                4    U R                   S   R                  $ rE  rr  rH  s    r4   rs  acot._eval_is_extended_real.  r  r6   c                   UR                   (       a  U[        R                  L a  [        R                  $ U[        R                  L a  [        R                  $ U[        R
                  L a  [        R                  $ UR                  (       a	  [        S-  $ U[        R                  L a	  [        S-  $ U[        R                  L a
  [        * S-  $ U[        R                  L a  [        R                  $ UR                  5       (       a
  U " U* 5      * $ UR                  (       a;  U R                  5       nX;   a&  [        S-  X!   -
  nU[        S-  :  a	  U[        -  nU$ [        U5      nUb   SSKJn  [        R"                  * U" U5      -  $ UR                  (       a  [        [        R$                  -  $ ['        U[(        5      (       aA  UR*                  S   nUR,                  (       a!  U[        -  nU[        S-  :  a	  U[        -  nU$ ['        U[.        5      (       aN  UR*                  S   nUR,                  (       a-  [        S-  [1        U5      -
  nU[        S-  :  a	  U[        -  nU$ g g )Nr   r{   r   )acoth)r   r   r   r   rY   r   r?   r   r   r   rv   r   rK  r1  r5   r   r  r3   r   r1   r   r=   rL  r  r   )r   r   r  rN  r   r  s         r4   r   	acot.eval1  s   ==aee|uu

"vv***vv1u!t%s1u!###66M''))I:==*J dZ_,A:2IC
05COO#E'N22;;aff9c3((1+C  r	A:2IC
c3((1+C  dT#Y&A:2IC
	 !  r6   c                    U S:X  a	  [         S-  $ U S:  d	  U S-  S:X  a  [        R                  $ [        U5      n[        R                  U S-   S-  -  X-  -  U -  $ r  )r   r   rY   r   r   r  s      r4   r   acot.taylor_termg  sZ     6a4KUa!eqj66M
A==AEA:.qt3A55r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ U[        R                  L a  SU-  R                  U5      $ U[        R                  * [        R                  [        R                  4;   a1  U R                  [        5      R                  XUS9R                  5       $ UR                  (       a  SUS-  -   R                  (       a  UR!                  X(       a  UOS5      n[#        U5      R                  (       a3  [%        U5      R                  (       a  U R                  U5      [&        -   $ O~[#        U5      R(                  (       a3  [%        U5      R(                  (       a  U R                  U5      [&        -
  $ O1U R                  [        5      R                  XUS9R                  5       $ U R                  U5      $ )Nr   r   r  r   )r=   r   rf  r   r   r<   rg  rv   r3   rY   r   r"   rn  rX   rK  rB  rd  r!   r    r   ri  rV  s          r4   rn  acot._eval_as_leading_termr  s}   iilXXa^""$;99S00344"""cE**1--1??"AOOQVV<<<<$::1d:SZZ\\??BE	66771dd2D$x##b6%%99R=2-- &D%%b6%%99R=2-- & ||C(>>qRV>W^^``yy}r6   c                v  > U R                   S   R                  US5      nU[        R                  [        R                  [        R                  -  4;   a#  U R                  [        5      R                  XX4S9$ [        TU ]  XUS9nU[        R                  L a  U$ U R                   S   R                  X(       a  UOS5      nUR                  (       a  [        U5      S:  a	  U[        -
  $ U$ UR                  (       a  SUS-  -   R                  (       a  [        U5      R                  (       a&  [!        U5      R                  (       a	  U[        -   $  U$ [        U5      R"                  (       a&  [!        U5      R"                  (       a	  U[        -
  $  U$ U R                  [        5      R                  XX4S9$ U$ r  )r=   r   r   r3   r   r   r"   r   r   rv   rd  r?   r!   r   rK  rB  r    ri  r  s	           r4   r   acot._eval_nseries  s`   yy|  A& AOOQ]]1??%BCC<<$221d2NNg#A#61$$$Jyy|44Q7<<$x!|RxJ!dAg+!:!:$x##d8''8O ( 
 D%%d8''8O ( 
 ||C(66q$6RR
r6   c                   > US   [         R                  [         R                  4;   a+  [        SU R                  S   -  5      R                  X1U5      $ [        TU ]  XX45      $ r  )r   r   r   r   r=   r   r   r  r  s        r4   r  acot._eval_aseries  sT    8

A$6$677$))A,'55aDAA7(1;;r6   c                    [         R                  S-  [        S[         R                  U-  -
  5      [        S[         R                  U-  -   5      -
  -  $ r  )r   r3   r"   r  s      r4   ru  acot._eval_rewrite_as_log  sH    q #a!//!*;&;"<!aooa''(#) * 	*r6   c                    [         $ r  r%  r   s     r4   r  acot.inverse  r  r6   c           	         U[        SUS-  -  5      -  [        S-  [        [        US-  * 5      [        US-  * S-
  5      -  5      -
  -  $ r  r  r  s      r4   r  acot._eval_rewrite_as_asin  sP    D36N"AT36']4a!+<<==? 	@r6   c                    U[        SUS-  -  5      -  [        [        US-  * 5      [        US-  * S-
  5      -  5      -  $ r  r  r  s      r4   rm  acot._eval_rewrite_as_acos  sA    4#q&>!$tS!VG}T36'A+5F'F"GGGr6   c                    [        SU-  5      $ r-  r  r  s      r4   rq  acot._eval_rewrite_as_atan  r  r6   c                l    U[        SUS-  -  5      -  [        [        SUS-  -   US-  -  5      5      -  $ r  r  r  s      r4   r|  acot._eval_rewrite_as_asec  s9    4#q&>!$tQaZa,?'@"AAAr6   c           	         U[        SUS-  -  5      -  [        S-  [        [        SUS-  -   US-  -  5      5      -
  -  $ r  r  r  s      r4   r  acot._eval_rewrite_as_acsc  sB    4#q&>!2a4$tQaZa4G/H*I#IJJr6   rN   r  r  )rp   rq   rr   rs   rt   r   r3   rw   r   rC   rC  rG  rs  r  r   r  r   r   rn  r   r  ru  r  r  r  rm  rq  r|  r  rx   r  r  s   @r4   r   r   
  s    )T oo'78N5!+(- 3 3j 6  6.6<* "6@HBK Kr6   r   c                     ^  \ rS rSrSr\S 5       rSS jrSS jr\	\
S 5       5       rS rSU 4S jjrS	 rS
 r\rS rS rS rS rS rSrU =r$ )r   i  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] https://dlmf.nist.gov/4.23
.. [3] https://functions.wolfram.com/ElementaryFunctions/ArcSec
.. [4] https://reference.wolfram.com/language/ref/ArcSec.html

c                   UR                   (       a  [        R                  $ UR                  (       a_  U[        R                  L a  [        R                  $ U[        R
                  L a  [        R                  $ U[        R                  L a  [        $ U[        R                  [        R                  [        R                  4;   a	  [        S-  $ UR                  (       a9  U R                  5       nX;   a  [        S-  X!   -
  $ U* U;   a  [        S-  X!*    -   $ UR                  (       a	  [        S-  $ UR                  (       a>  [        UR                   5      S:X  a%  UR                   S   S:X  a  UR                   S   nSnOUnSn[#        U[$        5      (       aT  UR                   S   nUR&                  (       a4  U(       a	  [        U-
  nUS[        -  -  nU[        :  a  S[        -  U-
  nU$ [#        U[(        5      (       aR  UR                   S   nUR&                  (       a1  U(       a  [        S-  [+        U5      -     [        S-  [+        U5      -
  $ g g r  )r?   r   rv   r   r   r   rY   r   r   r   r   rK  r6  r%  ra   r   r=   r1   r5  rL  r/  r   )r   r   
acsc_tabler   r  rN  s         r4   r   	asec.eval  s   ;;$$$==aee|uuvv%	1::q1113D3DEEa4K==*J !tjo--#!tj...??a4K::#chh-1,!1B88A;DEDEdC  ))A,C  s(Cqt8B$*C
dC  ))A,C  qD4:%!td4j(( ! !r6   c                    US:X  a7  SU R                   S   S-  [        SSU R                   S   S-  -  -
  5      -  -  $ [        X5      er:  r=   r%   r   r   s     r4   r   
asec.fdiff4  sK    q=diilAod1q1q/@+@&AABB$T44r6   c                    [         $ r  r  r   s     r4   r  asec.inverse:  r  r6   c                   U S:X  a  [         R                  [        SU-  5      -  $ U S:  d	  U S-  S:X  a  [         R                  $ [	        U5      n[        U5      S:  a*  U S:  a$  US   nX0S-
  U S-
  -  -  US-  -  SU S-  S-  -  -  $ U S-  n[        [         R                  U5      U -  n[        U5      U -  S-  U -  S-  n[         R                  * U-  U-  X-  -  S-  $ Nr   r   r   r   r{   )	r   r3   r"   rY   r   r   r   r   r   rQ  s          r4   r   asec.taylor_term@  s     6??3q1u:--Ua!eqj66M
A>"Q&1q5"2&UQqSM*QT111qy=AAF#AFFA.!3aL1$)A-2'!+a/!$6::r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ US:X  a7  [        S5      [        U[        R                  -
  R                  U5      5      -  $ U[        R                  * [        R                  4;   a#  U R                  [        5      R                  XUS9$ UR                  (       a  SUS-  -
  R                  (       a  UR                  X(       a  UOS5      n[!        U5      R"                  (       a$  UR                  (       a  U R                  U5      * $ Ox[!        U5      R                  (       a-  UR"                  (       a  S[$        -  U R                  U5      -
  $ O1U R                  [        5      R                  XUS9R'                  5       $ U R                  U5      $ r  )r=   r   rf  r   r   r<   rg  r%   r   rY   r   r"   rn  rG  rB  rd  r    ri  r   rX   rV  s          r4   rn  asec._eval_as_leading_termR  sm   iilXXa^""$;99S00344774quu = =a @AAA155&!&&!!<<$::1d:SS::1r1u911771dd2D$x##>> IIbM>) "D%%>>R4$))B-// " ||C(>>qRV>W^^``yy}r6   c                .  > SSK Jn  U R                  S   R                  US5      nU[        R
                  L Ga#  [        SSS9n[        [        R
                  US-  -   5      R                  [        5      R                  USSU-  5      n[        R                  U R                  S   -   n	U	R                  U5      n
X-
  U
-  n[        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ U[        R                  L Ga#  [        SSS9n[        [        R                  US-  -
  5      R                  [        5      R                  USSU-  5      n[        R                  U R                  S   -
  n	U	R                  U5      n
X-
  U
-  n[        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ [$        TU ]9  XUS9nU[        R&                  L a  U$ UR(                  (       a  SUS-  -
  R*                  (       a  U R                  S   R-                  X(       a  UOS5      n[/        U5      R0                  (       a  UR*                  (       a  U* $  U$ [/        U5      R*                  (       a   UR0                  (       a  S[2        -  U-
  $  U$ U R                  [        5      R                  XX4S	9$ U$ 
Nr   r[  r  Tr]  r   r  r   r  )r_  r\  r=   r   r   r   r   r   r   r"   r`  r   rg  r%   r   rb  rX   rc  r   rv   rG  rB  rd  r    ri  r   rd  s                  r4   r   asec._eval_nseriesi  s   (yy|  A&155=cD)Aquuq!t|$,,S199!Q!DC==499Q</D$$Q'AAA	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MM1== cD)Aq}}q!t+,44S9AA!Q!LC==499Q</D$$Q'AAA	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MMg#A#61$$$J<<Qq[5599Q<##Att;D$x####4K $ 
 D%%##R4#:% $ 
 ||C(66q$6RR
r6   c                    U R                   S   nUR                  SL a  g[        US-
  R                  U* S-
  R                  45      $ r  )r=   rW   r   r  r  s     r4   rs  asec._eval_is_extended_real  sF    IIaL&!a%//1"q&1H1HIJJr6   c                    [         S-  [        R                  [        [        R                  U-  [	        SSUS-  -  -
  5      -   5      -  -   $ r  r  r  s      r4   ru  asec._eval_rewrite_as_log  s?    !taooc!//#*=Q3PQ6\@R*R&SSSSr6   c                2    [         S-  [        SU-  5      -
  $ r  r  r  s      r4   r  asec._eval_rewrite_as_asin  r~  r6   c                    [        SU-  5      $ r-  )r   r  s      r4   rm  asec._eval_rewrite_as_acos  r  r6   c                ~    [        US-  5      U-  n[        S-  SU-
  -  U[        [        US-  S-
  5      5      -  -   $ r  r%   r   r   rA   r   r   sx2xs       r4   rq  asec._eval_rewrite_as_atan  s@    AqDz!|!tQXd41q>&:!:::r6   c           	         [        US-  5      U-  n[        S-  SU-
  -  U[        S[        US-  S-
  5      -  5      -  -   $ r  r%   r   r   r.  s       r4   rx  asec._eval_rewrite_as_acot  sE    AqDz!|!tQXd1T!Q$(^+;&<!<<<r6   c                ,    [         S-  [        U5      -
  $ r   r  r  s      r4   r  asec._eval_rewrite_as_acsc      !td3ir6   rN   r  r  )rp   rq   rr   rs   rt   r  r   r   r  r  r   r   rn  r   rs  ru  r  r  rm  rq  rx  r  rx   r  r  s   @r4   r   r     s    9v .) .)`5 ;  ; .&PKT "6";=   r6   r   c                     ^  \ rS rSrSr\S 5       rSS jrSS jr\	\
S 5       5       rS rSU 4S jjrS	 r\rS
 rS rS rS rS rSrU =r$ )r   i  a  
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] https://dlmf.nist.gov/4.23
.. [3] https://functions.wolfram.com/ElementaryFunctions/ArcCsc

c                   UR                   (       a  [        R                  $ UR                  (       a\  U[        R                  L a  [        R                  $ U[        R
                  L a	  [        S-  $ U[        R                  L a
  [        * S-  $ U[        R                  [        R                  [        R                  4;   a  [        R                  $ UR                  5       (       a
  U " U* 5      * $ UR                  (       a  [        R                  $ UR                  (       a  U R                  5       nX;   a  X!   $ [        U[         5      (       ao  UR"                  S   nUR$                  (       aO  US[        -  -  nU[        :  a	  [        U-
  nU[        S-  :  a	  [        U-
  nU[        * S-  :  a
  [        * U-
  nU$ [        U[&        5      (       a6  UR"                  S   nUR$                  (       a  [        S-  [)        U5      -
  $ g g )Nr   r   )r?   r   rv   r   r   r   r   r   r   r   rY   r   r%  rK  r6  r1   r/  r=   rL  r5  r   )r   r   r  rN  s       r4   r   	acsc.eval  s   ;;$$$==aee|uu!t%s1u1::q1113D3DEE66M''))I:??66M==*J !&c3((1+C  qt8s(C A:s(C"Q;#)C
c3((1+C  !td3i'' !  r6   c                    US:X  a7  SU R                   S   S-  [        SSU R                   S   S-  -  -
  5      -  -  $ [        X5      er  r  r   s     r4   r   
acsc.fdiff  sK    q=tyy|QtA$))A,/0A,A'BBCC$T44r6   c                    [         $ r  r.  r   s     r4   r  acsc.inverse  r  r6   c                   U S:X  aC  [         S-  [        R                  [        S5      -  -
  [        R                  [        U5      -  -   $ U S:  d	  U S-  S:X  a  [        R                  $ [        U5      n[        U5      S:  a*  U S:  a$  US   nX0S-
  U S-
  -  -  US-  -  SU S-  S-  -  -  $ U S-  n[        [        R                  U5      U -  n[        U5      U -  S-  U -  S-  n[        R                  U-  U-  X-  -  S-  $ r  )
r   r   r3   r"   rY   r   r   r   r   r   rQ  s          r4   r   acsc.taylor_term  s    6a4!//#a&001??3q63IIIUa!eqj66M
A>"Q&1q5"2&UQqSM*QT111qy=AAF#AFFA.!3aL1$)A-2*Q.599r6   c                   U R                   S   nUR                  US5      R                  5       nU[        R                  L a   U R                  UR                  U5      5      $ U[        R                  * [        R                  [        R                  4;   a1  U R                  [        5      R                  XUS9R                  5       $ U[        R                  L a  SU-  R                  U5      $ UR                  (       a  SUS-  -
  R                  (       a  UR!                  X(       a  UOS5      n[#        U5      R$                  (       a*  UR                  (       a  [&        U R                  U5      -
  $ Ov[#        U5      R                  (       a+  UR$                  (       a  [&        * U R                  U5      -
  $ O1U R                  [        5      R                  XUS9R                  5       $ U R                  U5      $ rU  )r=   r   rf  r   r   r<   rg  r   rY   r   r"   rn  rX   rv   rG  rB  rd  r    ri  r   rV  s          r4   rn  acsc._eval_as_leading_term$  sr   iilXXa^""$;99S00344155&!%%((<<$::1d:SZZ\\"""cE**1--::1r1u911771dd2D$x##>>		"-- "D%%>>32.. " ||C(>>qRV>W^^``yy}r6   c                6  > SSK Jn  U R                  S   R                  US5      nU[        R
                  L Ga#  [        SSS9n[        [        R
                  US-  -   5      R                  [        5      R                  USSU-  5      n[        R                  U R                  S   -   n	U	R                  U5      n
X-
  U
-  n[        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ U[        R                  L Ga#  [        SSS9n[        [        R                  US-  -
  5      R                  [        5      R                  USSU-  5      n[        R                  U R                  S   -
  n	U	R                  U5      n
X-
  U
-  n[        [        R
                  U-   5      R                  XUS9nUR                  5       [        U
5      -  R!                  5       nUR                  5       R                  X}5      R!                  5       R#                  5       U" X-  U5      -   $ [$        TU ]9  XUS9nU[        R&                  L a  U$ UR(                  (       a  SUS-  -
  R*                  (       a  U R                  S   R-                  X(       a  UOS5      n[/        U5      R0                  (       a  UR*                  (       a	  [2        U-
  $  U$ [/        U5      R*                  (       a  UR0                  (       a
  [2        * U-
  $  U$ U R                  [        5      R                  XX4S	9$ U$ r"  )r_  r\  r=   r   r   r   r   r   r   r"   r`  r   rg  r%   r   rb  rX   rc  r   rv   rG  rB  rd  r    ri  r   rd  s                  r4   r   acsc._eval_nseries;  s   (yy|  A&155=cD)Aquuq!t|$,,S199!Q!DC==499Q</D$$Q'AAA	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MM1== cD)Aq}}q!t+,44S9AA!Q!LC==499Q</D$$Q'AAA	?00d0CD<<>$q')113C;;=%%a-446>>@1QT1:MMg#A#61$$$J<<Qq[5599Q<##Att;D$x####8O $ 
 D%%##39$ $ 
 ||C(66q$6RR
r6   c           
         [         R                  * [        [         R                  U-  [        SSUS-  -  -
  5      -   5      -  $ r  rt  r  s      r4   ru  acsc._eval_rewrite_as_logc  s8    AOOC$7$q1S!V8|:L$L MMMr6   c                    [        SU-  5      $ r-  )r   r  s      r4   r  acsc._eval_rewrite_as_asinh  r  r6   c                2    [         S-  [        SU-  5      -
  $ r  rl  r  s      r4   rm  acsc._eval_rewrite_as_acosk  r~  r6   c                n    [        US-  5      U-  [        S-  [        [        US-  S-
  5      5      -
  -  $ r  r-  r  s      r4   rq  acsc._eval_rewrite_as_atann  s3    AqDz!|RTDadQh$8899r6   c           	     t    [        US-  5      U-  [        S-  [        S[        US-  S-
  5      -  5      -
  -  $ r  r2  r  s      r4   rx  acsc._eval_rewrite_as_acotq  s:    CF|CAQtCFQJ/?-?(@!@AAr6   c                ,    [         S-  [        U5      -
  $ r   r{  r  s      r4   r|  acsc._eval_rewrite_as_asect  r6  r6   rN   r  r  )rp   rq   rr   rs   rt   r  r   r   r  r  r   r   rn  r   ru  r  r  rm  rq  rx  r|  rx   r  r  s   @r4   r   r     s|    (T *( *(X5 :  : .&PN "6":B   r6   r   c                  `   ^  \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rU 4S
 jrSrU =r$ )r   ix  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 returns 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] https://functions.wolfram.com/ElementaryFunctions/ArcTan2

c           	        SSK Jn  U[        R                  L a9  UR                  (       a  [
        $ S[
        -  U" [        U5      5      -  [
        -
  $ U[        R                  L a  [        R                  $ UR                  (       aI  UR                  (       a8  UR                  (       a'  UR                  (       a  [        U5      n[        U5      nUR                  (       a  UR                  (       a  UR                  (       a  [        X-  5      $ UR                  (       aK  UR                  (       a  [        X-  5      [
        -
  $ UR                   (       a  [        X-  5      [
        -   $ OgUR                  (       aV  UR                  (       a	  [
        S-  $ UR                  (       a
  [
        * S-  $ UR                  (       a  [        R"                  $ UR                  (       a}  UR$                  (       a   [
        [        R&                  U" U5      -
  -  $ UR                  (       a;  [)        [
        [        U5      S:  4S[+        US5      4[        R"                  S45      $ UR                  (       aX  UR                  (       aF  [        R,                  * [/        U[        R,                  U-  -   [1        US-  US-  -   5      -  5      -  $ g g )Nr   )	Heavisider   T)'sympy.functions.special.delta_functionsrR  r   r   r?   r   r!   r   rY   rK  rK  r    rW   rB  r   ri  r  r   is_extended_nonzeror   r(   r   r3   r"   r%   )r   r   r   rR  s       r4   r   
atan2.eval  s   E"""yy	R42a5)*R//!**_66M^^1;;1;;1A1A!"4"4}}ACy ==9r>)%%9r>) &==a4K]]3q5LYY55L99$$1559Q</00{{ "beai"#R1X"#%%0 0 ;;1;;OO#CQ__Q&&QTAqD[(99%; ; ; ';r6   c           	         [         R                  * [        U[         R                  U-  -   [        US-  US-  -   5      -  5      -  $ r   rt  rA   r   r   r   s       r4   ru  atan2._eval_rewrite_as_log  s=    Q):%:DA1<M$M NNNr6   c                    [        S[        X[        US-  US-  -   5      -   -  5      -  [        US5      4[        [        U5      S:  4S[        US5      4[        R                  S45      $ )Nr   r   T)r(   r   r%   r   r   r!   r   r   rW  s       r4   rq  atan2._eval_rewrite_as_atan
  sf    !DQTAqD[(9$9!:;;R1XFbeaiR1X%%( 	(r6   c           
     h   UR                   (       a/  UR                   (       a  [        X![        R                  -  -   5      $ U[        R                  U-  -   nUS-  US-  -   n[        U[	        U5      -  5      [        R                  [        [        U5      [	        [        U5      5      -  5      -  -
  $ r   )rW   arg_fr   r3   r%   r"   rc   )rA   r   r   r   r   r   s         r4   _eval_rewrite_as_argatan2._eval_rewrite_as_arg  s    !"4"4q..//!!qD1a4KQtAwY!//#c!fT#a&\6I2J"JJJr6   c                t    U R                   S   R                  =(       a    U R                   S   R                  $ r  rr  rH  s    r4   rs  atan2._eval_is_extended_real  s)    yy|,,N11N1NNr6   c                    U R                  U R                  S   R                  5       U R                  S   R                  5       5      $ r  rF  rH  s    r4   rI  atan2._eval_conjugate  s5    yy1//1499Q<3I3I3KLLr6   c                    U R                   u  p#US:X  a  X3S-  US-  -   -  $ US:X  a  U* US-  US-  -   -  $ [        X5      er  r  )rA   r   r   r   s       r4   r   atan2.fdiff  sS    yyq=dQTk?"]2q!tad{##$T44r6   c                   > U R                   u  p#UR                  (       a!  UR                  (       a  [        TU ]  U5      $ g g ro   )r=   rW   r   _eval_evalf)rA   precr   r   r   s       r4   rf  atan2._eval_evalf(  s7    yy!"4"47&t,, #5r6   rN   )rp   rq   rr   rs   rt   r  r   ru  rq  r]  rs  rI  r   rf  rx   r  r  s   @r4   r   r   x  sK    dL %; %;NO(KOM	5- -r6   r   Nr  )r   r   r   r   returnzExpr | None)[
__future__r   sympy.core.addr   sympy.core.cacher   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.core.sympifyr   (sympy.functions.combinatorial.factorialsr   r   %sympy.functions.combinatorial.numbersr   r   r@  r   r\  r    r!   &sympy.functions.elementary.exponentialr"   r#   #sympy.functions.elementary.integersr$   (sympy.functions.elementary.miscellaneousr%   r&   r'   $sympy.functions.elementary.piecewiser(   1sympy.functions.elementary._trigonometric_specialr)   r*   r+   sympy.logic.boolalgr,   sympy.ntheoryr-   sympy.polys.specialpolysr.   sympy.utilities.iterablesr/   r5   r8   r   r   rH   r   r   r  r   r  r5  r/  r9  r+  r   r   r   r   r   r   r   rN   r6   r4   <module>r     s   "  $   Z Z F F  I I ( " + & O B E E ; 5 C C :) ) # # 3 63AKO AKH 	 	""JHVs
 sl	g1
 g1TQ
 Qh
z
 zz	uO&; uOpi7
) i7Xf7
) f7Rt$? t$xN
? N
bf' fRn' nbR@' R@jWK' WKtd ' d NG ' G Ts-( s-r6   