
    gg_                    v   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZmZ d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZP d dlQmRZR d dlSmTZT d dlmUZUmVZV d dlWmXZXmYZY d dlZm[Z[ d dl\m]Z] d dl^m_Z_m`Z`maZa  ed          \  ZbZcZd ed d!"          Ze ed#d!$          \  ZfZg ed%d!&          Zh ed'd!(          Zi ed%d!)          Zj ed'd!*          Zk ed+d!,          Zl ed-d!.          Zm ed/d!0          Zn ed-d!1          Zo ed/d!2          Zp ed3d!4          Zq ed5d!6          Zr ed7d!d!8          Zsd9 Ztd: Zud; Zvd< Zwd= Zxd> Zyd? Zzd@ Z{dA Z|dB Z}dC Z~dD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK Ze`dL             ZdM ZdN ZdO ZdP ZdQ ZdR Ze_dS             ZdT ZdU Ze`dV             ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Ze_d}             Ze`d~             Ze`d             Ze`d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )AccumBounds)Add)Lambdadiff)Mod)Mul)EFloatIRationalnanoopizoo)Pow)S)Symbolsymbols)arg	conjugateimre)explog)acothasinhatanhcoshcothsinhtanh)sqrt)acosacotacscasecasinatanatan2coscotcscsecsinsinctan)besseljjn)	Heaviside)Matrix)cancelgcd)limit)O)series)ImageSet)	FiniteSetInterval)simplify)	unchanged)ArgumentIndexError	PoleError)NeEq)	Piecewise)SetExpr)XFAILslowraiseszx y zrTrealzk mintegerppositivennegative)nonpositivenonnegativenz)nonzeroep)extended_positiveen)extended_negative)extended_nonpositive)extended_nonnegativeenz)extended_nonzeroa)	algebraicna)rW   ra   c                  #   t          d          \  } }t          dd          }t          j        t          d          k    sJ t          t                    t          u sJ t          t
                    t          u sJ t          t                    t          dd          k    sJ t          t                    t          t                    z
  t          dd          k    sJ t          t          t          z            t          t          z  k    sJ t          t           t          z            t           t          z  k    sJ d	t          t                    z  t          j
        u sJ d	t          t                    z  t          j
        u sJ d	t          t                    z   t          dd          k    sJ d
t          t                    z   t          dd          k    sJ t          d	          d	k    sJ t          |t          z            t          t          |          z  k    sJ t          t          |                     | k    sJ t          t          |                     | t          d| dz  z             z  k    sJ t          t          |                     t          d| dz  z
            k    sJ t          t!          |                     dt          dd| dz  z  z             | z  z  k    sJ t          t#          |                     d| z  k    sJ t          t%          |                     t          dd| dz  z  z
            k    sJ t          t'          ||                     |t          | dz  |dz  z             z  k    sJ t          t(          t          z            t          t(                    t          z  k    sJ t          t(           t          z            t          t(                     t          z  k    sJ t          dt          z            t          d           t          z  k    sJ t          t(                    d	k    sJ t          t(                     d	k    sJ t          dt(          z            d	k    sJ t          dt(          z            d	k    sJ t          dddz  z  t(          z            d	k    sJ t          dddz  z  t(          z            d	k    sJ t          t(          dz            dk    sJ t          t(           dz            dk    sJ t          t(          t+          d
d          z            dk    sJ t          t(          t+          dd          z            dk    sJ t          ddd          }t          dd          }t          t(          |z  dz            d|dz  t          j        z
  z  k    sJ t          t(          t.          z  dz            j        t          k    sJ t          t(          |z  dz            d	k    sJ t          t(          t.          z            d	k    sJ t          t(          t.          z                                t.          d          t          t(          t.          z  dz                                t.          d          k    sJ t          t(          dz            t          j        t          d          z  k    sJ t          t(          t+          dd          z            t+          dd          t          d          z  k    sJ t          t(          dz            t          j        t          d          z  k    sJ t          t(           dz            t+          dd          t          d          z  k    sJ t          t(          t+          dd          z            t          j        t          d          z  k    sJ t          t(          t+          dd          z            t+          dd          t          d          z  k    sJ t          t(          dz            t          j        k    sJ t          t(           dz            t+          dd          k    sJ t          t(          t+          dd          z            t+          dd          k    sJ t          t(          t+          dd          z            t+          dd          k    sJ t          t(          t+          dd
          z            t          d
t          d
          z
  dz            k    sJ t          t(          t+          dd
          z            t          d
t          d
          z   dz            k    sJ t          t(          t+          dd
          z            t          t(          t+          dd
          z            k    sJ t          t(          t+          dd
          z            t          t(          t+          dd
          z            k    sJ t          t(          t+          dd
          z            t          t(          t+          dd
          z             k    sJ t          t(          t+          dd
          z            t          t(          t+          dd
          z             k    sJ t          t(          t+          dd
          z            t          t(          t+          dd
          z             k    sJ t          t(          dz            t          dt          d          z
  dz            k    sJ t          t(          dz            t+          dd          t          d
          dz  z   k    sJ t          t(          dz            t          d           dz  t          d          dz  z   k    sJ t          t(          t+          d
d          z            t          d          dz  t          d          dz  z   k    sJ t          t(          t+          dd          z            t          d           dz  t          d          dz  z
  k    sJ t          t(          t+          dd          z            t          d          dz  t          d          dz  z
  k    sJ t          t(          t+          dd           z            t          t(          d z            k    sJ t          t(          t+          d!d           z            t          t(          d z             k    sJ t          t(          t+          d"d           z            t          t(          d z             k    sJ t          t(          t+          d#d           z            t          t(          d z            k    sJ t          | t          z            t          |           t          z  k    sJ t          t.          t(          z            d	k    sJ t          dt.          z  t(          z            d	k    sJ t          dt.          z  t(          z  dz             t          d          k    sJ t          dt.          z  t(          z  t4          t(          z  z   dz             dt4          dt.          z  z   z  t          d          z  k    sJ t          t.          t(          z  t          z            t          t.          t(          z            t          z  k    sJ t          t6                    j        du sJ t          d	d$          j        sJ t          t<                    j        J t          t>                    j        du sJ tA          d%d&          }t          t(          |z            j        sJ tA          d'dd(          }t          |          j!        du sJ t          |          j!        J tE          t          tG          |           tI          |          z
            t                    du sJ tE          t          tG          |            tI          |          z             t                    du sJ t          tK          tM          d	d                              tK          tO          tQ          | t          |                     tM          d	d                              k    sJ tS          tU          dd)                    d*d+gz   D ]u}tU          |dz  dz             D ]]}|t(          z  |z  } tW          tY          t          |                     t          tY          |                     z
            }|d,k     sJ ^vt          d	d$          j-        du sJ t          t.          t(          z  d$          j-        du sJ t          t]          ddd$          d$          j-        du sJ d S )-Nx yzT	imaginary      r            
   I      g   neFrL   evenerv               h   i   j   evaluateqrationalqn)r   rW      <   U   -q=)/r   r.   nargsr;   r   r   r   r   r   r   Zeror    r'   r(   r"   r#   r$   r%   r&   r)   r   r   HalfkfuncsubsmrH   is_realis_algebraicr`   rb   r   is_rational
isinstancer   r   rD   r<   r:   r   listrangeabsfloatis_zeror   )	xyre   rt   rw   r   r   drP   s	            o/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/functions/elementary/tests/test_trigonometric.pytest_sinr   3   s   5>>DAqt$$$A9	!$$$$s88s????s88s????r77k"a((((((r77SWWB 2 22222r!t991s1u::"QSWW9SWW9s2ww;+b!,,,,,,s2ww;+a++++++q66Q;;;;qs88qay    tAww<<1tAww<<1tA1H~~-----tAww<<4AqD>>))))tAww<<1QQT\ 2 2Q 677777tAww<<1q5    tAww<<4A1H------uQ{{q41q!t#4#444444r!t99R
""""s1u::$r((1$$$$r!t99a
""""r77a<<<<s88q====qt99>>>>r"u::????r"b&y|!!!!qSy|!!!!r!t99>>>>s1u::r(1a.. !!Q&&&&r(1a.. !!R''''	t%	0	0	0B$Ar"uQw<<B"Q$-00000r!tAv;;s""""r!tAv;;!r!t99>>>>r!t99>>!Q3r!tAv;;#3#3Aq#9#99999r!t99tAww&&&&r(2q//!""hr1ood1gg&=====r!t99tAww&&&&s1u::"aa00000r(2q//!""afT!WWn4444r(2q//!""hr1ood1gg&=====r!t99s1u::"a((((r(1a.. !!Xb!__4444r(2q//!""hr1oo5555r(1a.. !!T1tAww;!*;%<%<<<<<r(1a.. !!T1tAww;!*;%<%<<<<<r(1a.. !!SHQNN):%;%;;;;;r(1a.. !!SHQNN):%;%;;;;;r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!c"Xa^^*;&<&<%<<<<<r(5!$$$%%#b!Q.?*@*@)@@@@@r!t99a$q''k1_------r"u::"a4771944444r"u::$q''!d1ggai/////r(1b//!""d1ggai$q''!)&;;;;;r(2r"""##QxzDGGAI'=====r(3###$$Q	DGGAI(=====r(3$$$%%RV4444r(3$$$%%#bf++5555r(4%%%&&3r#v;;,6666r(4%%%&&#bf++5555qs88tAwwqy    qt99>>>>r!tBw<<1qs2vz??c!ff$$$$qs2v"}q !!bA!G_SVV%;;;;;qtAv;;$qt**Q,&&&&q66>T!!!!q5!!!....q66&&&r775((((sT"""Ar!t99!!!!	tT	2	2	2Br77%''''q66%%%c2a552a55=))3//47777c2a55&2a55.))3//58888wx1~~&&''78F1c!ff<M<M1~~4' 4' ,( ,( ( ( ( ( %2,,2r(*  qsQw 	 	A"QAU3q66]]Sq]]244Au99999	
 q5!!!)T1111qte$$$,4444s1b5)))E:::BdJJJJJJ    c                  4   dD ]} t          d| z  | dz            D ]}|t          z  | z  }t          |t          dz  z             t          |          k    sJ d|| fz              t          |t          dz  z
            t          |           k    sJ d|| fz              t          |          t          |t          dz  z
            k    sJ d|| fz              t          |           t          |t          dz  z             k    sJ d|| fz              d S )N)rh   rk   ry   rm   rl   rn   rp   r~               (   r   x   rj   rk   fails for %d*pi/%d)r   r   r.   r*   )r   rP   r   s      r   test_sin_cosr      s8   D K Kr!tQqS!! 	K 	KA"QAq2a4x==CFF***,@Aq6,I***q2a4x==SVVG+++-AQF-J+++q66SRT]]***,@Aq6,I***FF7c!bd(mm+++-AQF-J++++	KK Kr   c                      t          t                                        t          dd          t          t          dz  dz  z
  t          dz  dz  z   t          dz  dz  z
  t          t          dz            z   k    sJ d S )	Nr   	   ry   rn   rl   r   rr   i  )r.   r   r9   r8    r   r   test_sin_seriesr      sq    q66==Aq!!	AqDF
QT#X1T	)AadGG34 4 4 4 4 4r   c                     t          t                                        t                    t           t          t          t          z            t          t           t          z            z
  z  dz  k    sJ t          t                                        t
                    dt          t          dz            z  dt          t          dz            dz  z   z  k    sJ t          t                                        t                    t          dt          t          t                    d          t          t          t          t                    d          z  fdt          t          dz            z  t          t          dz            dz  dz   z  df          k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t!          t                                                  t                                        t          d                                          t          t                                        t                                        t          t!          d                                                    k    sJ t          t#          t                                                  t                                        t          d                                          t          t                                        t                                        t          t#          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t%          t                                                  t                                        t          d                                          t          t                                        t                                        t          t%          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t'          t                                                  t(                    t          t          t           z  z  dz  t          t          t          z  z  dz  z
  k    sJ t          t                                        t*                    dt+          t                    z  k    sJ t          t                                        t$                    t%          t          t          dz  z
  d          k    sJ t          t                                        t,                    dt-          t          t          dz  z
  d          z  k    sJ t          t%          t                                                  t(                    t          t%          t                              k    sJ t          t                                        t.                    t1          t          t          z  dz            t/          t2          j        t                    z  k    sJ t          t                                        t.                                        t          d          t          d          k    sJ d S )Nrk   rh   r   Try   Fr   )r.   r   rewriter   r   r0   r+   rC   rB   r   r   r   r    r   rP   r   r!   r   r*   r   r   r,   r-   r1   r"   r   r   r   r   r   test_sin_rewriter      s   q66>>#1"c!A#hhaRT&:";A"=====q66>>#!C!HH*a#ac((A+o">>>>>q66>>#1bAllRAr

A%6%667S1XX:s1Q3xx{Q/6	8 	88 8 8 8 tAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H Hs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;;s##qQBw{Qq!tVQY'>>>>>q66>>#!CFF(****q66>>##a"q&j5"A"A"AAAAAq66>>#!c!b1f*u&E&E&E"EEEEEs1vv;;s##s3q66{{2222q66>>'""d2a46ll71613E3E&EEEEEq66>>'""''1--Q777777r   c           	      6   ddl m} t          | |          sJ  | | |                     | |          k    sJ  | | t          |dd                              |k    sJ t	           | |          |z
                                            dk     sJ d S )Nr   )expand_trigrh   Fr   绽|=)sympy.core.functionr   r>   r   r   rP   )firw   r   s       r   _test_extrigr      s    //////Q??;qqtt!$$$$ ;qqQE22233449999qqttax==??u$$$$$$r   c            	      ^   t          t          t          z                                 d          t          t                    t	          t                    z  t	          t                    t          t                    z  z   k    sJ t          t          t          z
                                d          t          t                    t	          t                    z  t	          t                    t          t                    z  z
  k    sJ t          t          t          z
                                d          t	          t                    t          t                    z  t          t                    t	          t                    z  z
  k    sJ t          dt          z                                d          dt          t                    z  t	          t                    z  k    sJ t          dt          z                                d          dt          t                    dz  z  dt          t                    z  z   k    sJ t          dt          z                                d          dt          t                    dz  z  t	          t                    z  dt          t                    z  t	          t                    z  z   k    sJ t          dt
          z  dz                                d          t          dt
          z  dz  d	
          k    sJ t          t          t
          dz  z                                 d          t          t
          dz            t	          t                    z  t	          t
          dz            t          t                    z  z   k    sJ t          t           ddt          d          z  t	          d          z             t          t           ddt          d          dz  z  dt          d          z  z              d S )NTtrigrk   ry   rm   rz   Fr   rh   )r.   r   r   expandr*   r   r   r   r   r   test_sin_expansionr      s    q1u::$''3q66#a&&=3q66#a&&=+HHHHHq1u::$''3q66#a&&=3q66#a&&=+HHHHHq1u::$''3q66#a&&=3q66#a&&=+HHHHHqs88???%%3q66#a&&8888qs88???%%CFFAI#a&&)@@@@@qs88???%%CFFAIc!ff)<qQxA)NNNNNqtBw<<D))S2b5-I-I-IIIIIqBw<<D))SBZZA->RUCPQFFAR-RRRRRa3q66#a&&)))aCFFAI#a&&011111r   c                     t          t          t           t                              t          dd          k    sJ t          t          dt                              t          dd          k    sJ t          t          t           d                    t          dd          k    sJ t          t          ddt          j        z                      t          dd          k    sJ t          t          dt          j        t          dd          z                      t          dd          k    sJ t          t          t          j        t          dd          z  t          j        t          dd          z                      t          dt          t          j        t          dd          z                      k    sJ t          t          t          j        dz  t          j        dz                      t          t          t          j        dz            t          t          j        dz                      k    sJ t          t          t          j        t          dd          z  t          j        t          dd	          z                      t          t          t          j        t          dd	          z            t          t          j        t          dd          z                      k    sJ d S )
Nri   rh   r   rk   ry   rm   rr   rl   rn   )r.   r   r   r   Pir   r   r   r   test_sin_AccumBoundsr      s   {B3##$$B(:(:::::{1b!!""k"a&8&88888{B3""##{2q'9'99999{1af%%&&+b!*<*<<<<<{1ad8Aq>>12233{1a7H7HHHHH{14A.Xa^^0CDDEEUWY\]^]abjklnobpbp]pYqYqIrIrrrrr{146146**++{3qtAv;;ADQRF/T/TTTTT{14A.Xa^^0CDDEEUXYZY]^fghjk^l^lYlUmUmorstsw  yA  BC  EF  yG  yG  tG  pH  pH  JI  JI  I  I  I  I  I  Ir   c                      t          t                                                    t          t                    k    sJ t	          t
          d            d S )Nc                  P    t          t                                        d          S Nrk   )r.   r   fdiffr   r   r   <lambda>z test_sin_fdiff.<locals>.<lambda>      s1vv||A r   )r.   r   r   r*   rG   r?   r   r   r   test_sin_fdiffr     sB    q66<<>>SVV####
6677777r   c                  6   t          t                     t          t                     k    sJ t          t                     t          t                    k    sJ t          t                     t          t                     k    sJ t	          t                     t	          t                     k    sJ t          t          t
          z             t          t                     k    sJ t          t          dt
          z  z             t          t                    k    sJ t          t          dt
          z  z             t          t                     k    sJ t          t          dt
          z  z             t          t                    k    sJ t          t          dt
          z  z
            t          t                     k    sJ t          t          t
          z             t          t                     k    sJ t          t          dt
          z  z             t          t                    k    sJ t          t          dt
          z  z             t          t                     k    sJ t          t          dt
          z  z             t          t                    k    sJ t          t          dt
          z  z
            t          t                     k    sJ t          t          t
          z             t          t                    k    sJ t          t          dt
          z  z
            t          t                    k    sJ t	          t          t
          z             t	          t                    k    sJ t	          t          dt
          z  z
            t	          t                    k    sJ t          t
          dz  t          z
            t          t                    k    sJ t          t
          t          dd          z  t          z
            t          t                     k    sJ t          t
          t          dd          z  t          z
            t          t                    k    sJ t          t
          dz  t          z
            t          t                    k    sJ t          t
          t          dd          z  t          z
            t          t                     k    sJ t          t
          t          dd          z  t          z
            t          t                    k    sJ t          t
          dz  t          z
            t	          t                    k    sJ t          t
          t          dd          z  t          z
            t	          t                    k    sJ t          t
          t          dd          z  t          z
            t	          t                    k    sJ t	          t
          dz  t          z
            t          t                    k    sJ t	          t
          t          dd          z  t          z
            t          t                    k    sJ t	          t
          t          dd          z  t          z
            t          t                    k    sJ t          t
          dz  t          z             t          t                    k    sJ t          t
          dz  t          z             t          t                     k    sJ t          t
          dz  t          z             t	          t                     k    sJ t	          t
          dz  t          z             t          t                     k    sJ d S )Nrk   ry   rm   rl   )r.   r   r*   r0   r+   r   r   r   r   r   test_trig_symmetryr   	  sF   r77s1vvgr77c!ffr77s1vvgr77s1vvgq2v;;3q66'!!!!q1R4x==CFF""""q1R4x==SVVG####q1R4x==CFF""""q1R4x==SVVG####q2v;;3q66'!!!!q1R4x==CFF""""q1R4x==SVVG####q1R4x==CFF""""q1R4x==SVVG####q2v;;#a&&    q1R4x==CFF""""q2v;;#a&&    q1R4x==CFF""""r!tax==CFF""""r(1a.. 1$%%#a&&0000r(1a.. 1$%%Q////r!tax==CFF""""r(1a.. 1$%%#a&&0000r(1a.. 1$%%Q////r!tax==CFF""""r(1a.. 1$%%Q////r(1a.. 1$%%Q////r!tax==CFF""""r(1a.. 1$%%Q////r(1a.. 1$%%Q////r!tax==CFF""""r!tax==SVVG####r!tax==SVVG####r!tax==SVVG######r   c            
      ~   t          d          \  } }t          j        t          d          k    sJ t          t                    t          u sJ t          t
                    t          dd          k    sJ t          t
                    t          t
                    z
  t          dd          k    sJ t          t
          t          z            t
          u sJ t          t
           t          z            t
          u sJ t          t                    t          u sJ t          d          dk    sJ t          t          |                     | k    sJ t          t          |                     dt          d| dz  z             z  k    sJ t          t          |                     t          d| dz  z
            k    sJ t          t          |                     dt          dd| dz  z  z             z  k    sJ t          t          |                     t          dd| dz  z  z
            k    sJ t          t          |                     d| z  k    sJ t          t!          ||                     | t          | dz  |dz  z             z  k    sJ t          t"          t          z            t%          t"                    k    sJ t          t"           t          z            t%          t"                    k    sJ t          dt          z            t%          d          k    sJ t          t"          dz            dk    sJ t          t"           dz            dk    sJ t          t"          dz            dk    sJ t          t"           dz            dk    sJ t          ddd	z  z  dz   t"          z  dz            dk    sJ t          d
ddz  z  dz   t"          z  dz            dk    sJ t          ddd          }t          dd          }t          t"          |z  dz            dk    sJ t          t"          |z  dz            d|dz  z  k    sJ t          t"                    dk    sJ t          t"                     dk    sJ t          dt"          z            dk    sJ t          dt"          z            dk    sJ t          dt"          z            dk    sJ t          t"          dz            t&          j        k    sJ t          t"          t+          dd          z            t+          dd          k    sJ t          t"          dz            t&          j        t          d          z  k    sJ t          t"           dz            t&          j        t          d          z  k    sJ t          t"          t+          dd          z            t+          dd          t          d          z  k    sJ t          t"          t+          dd          z            t+          dd          t          d          z  k    sJ t          t"          dz            t&          j        t          d          z  k    sJ t          t"           dz            t&          j        t          d          z  k    sJ t          t"          t+          d
d          z            t+          dd          t          d          z  k    sJ t          t"          t+          dd          z            t+          dd          t          d          z  k    sJ t          t"          t+          dd          z            t          d          dz   dz  k    sJ t          t"          t+          dd          z            t          d          dz
  dz  k    sJ t          t"          t+          dd          z            t          t"          t+          dd          z             k    sJ t          t"          t+          dd          z            t          t"          t+          dd          z             k    sJ t          t"          t+          dd          z            t          t"          t+          dd          z             k    sJ t          t"          t+          dd          z            t          t"          t+          dd          z            k    sJ t          t"          t+          dd          z            t          t"          t+          dd          z             k    sJ t          t"          dz            t          dt          d          z   dz            k    sJ t          t"          dz            t          d          dz  t          d          dz  z   k    sJ t          t"          t+          dd          z            t          d           dz  t          d          dz  z   k    sJ t          t"          t+          d
d          z            t          d          dz  t          d          dz  z
  k    sJ t          t"          t+          dd          z            t          d           dz  t          d          dz  z
  k    sJ t          t"          t+          dd          z            t          t"          dz             k    sJ t          t"          t+          dd          z            t          t"          dz             k    sJ t          t"          t+          dd          z            t          t"          dz             k    sJ t          t"          t+          dd          z            t          t"          dz             k    sJ t          | t          z            t%          |           k    sJ t          t,          t"          z  t          z            t%          t,          t"          z            k    sJ t          t.                    j        du sJ t          dd           j        sJ t          t4                    j        J t          t6                    j        du sJ t9          d!d"          }t          t"          |z            j        sJ t          t"          t+          dd
          z            j        sJ t          t,          t"          z            dt,          z  k    sJ t          dt,          z  t"          z            dk    sJ t          dd           j        du sJ t          t+          dd                    j        du sJ t          t          dd           d           j        J t=          t?          dd#                    d$d%gz   D ]u}t?          d|z  dz             D ]]}|t"          z  |z  } tA          tC          t          |                     t          tC          |                     z
            }|d&k     sJ ^vd S )'Nrd   rh   ri   rj   rk   r   ro   rp   rq   rr   rs   rP   TFru   rw   rx   rl   r|   ry   rm      rn   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   )"r   r*   r   r;   r   r   r   r   r   r#   r(   r"   r'   r$   r%   r&   r)   r   r   r   r   r   r   rH   r   r   r`   rb   r   r   r   r   r   r   )r   r   rP   rw   r   r   s         r   test_cosr   .  s   5>>DAq9	!$$$$s88s????r77k"a((((((r77SWWB 2 22222r!t99????s1u::s88s????q66Q;;;;tAww<<1tAww<<1tA1H~~-----tAww<<4AqD>>))))tAww<<1tAAqDL1111111tAww<<4A1H------tAww<<1q5    uQ{{q41q!t#4#444444r!t99R    s1u::b!!!!r!t99Qr!t99>>>>s1u::????r!t99>>>>s1u::????2r6	Ar!!#$$))))"c'	Ar!!#$$))))T...A$Ar!tAv;;!r!tAv;;21+%%%%r77b====s88r>>>>qt99>>>>qt99????qt99>>>>r!t99r(2q//!""hr1oo5555r!t99tAww&&&&s1u::Q''''r(2q//!""hr1ood1gg&=====r(2q//!""hr1ood1gg&=====r!t99tAww&&&&s1u::Q''''r(1a.. !!Xb!__T!WW%<<<<<r(2q//!""hr1ood1gg&=====r(1a.. !!d1ggk1_4444r(1a.. !!d1ggk1_4444r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!SHQNN):%;%;;;;;r(5!$$$%%#b!Q.?*@*@)@@@@@r!t99a$q''k1_------r"u::aT!WWQY.....r(1b//!""tAwwhqj47719&<<<<<r(1b//!""d1ggai$q''!)&;;;;;r(2r"""##QxzDGGAI'=====r(3$$$%%#bf++5555r(3$$$%%#bf++5555r(4%%%&&3r#v;;,6666r(4%%%&&3r#v;;,6666qs88tAwwqtAv;;$qt**$$$$q66>T!!!!q5!!!....q66&&&r775((((sT"""Ar!t99!!!!r(1a.. !!....qt99aqs2v;;!q5!!!)U2222x1~~&%//// tB'''%888@HHH%2,,2r(*  qsQw 	 	A"QAU3q66]]Sq]]244Au99999	 r   c                  \   t          dd          } t          t          t          t          fD ]} || t
          z             |t
          dz            k    sJ  |dt
          z             |t
          dz            k    sJ  |dt
          z             |dt
          z            k    sJ d S )Nz!123456789012345678901234567890.25 rm   g     @r|   g@ghfffff?)r
   r.   r*   r0   r+   r   )cclss     r   test_issue_6190r     s    1266AS#s# 0 0s1R4yyCC1II%%%%s58}}BqD		))))s3r6{{cc7B,///////0 0r   c                     t          t                                        t          dd          dt          dz  dz  z
  t          dz  dz  z   t          dz  dz  z
  t          d	z  d
z  z   t          t          dz            z   k    sJ d S )Nr   r   rh   rk   rm   r   rn     r|   i  )r*   r   r9   r8   r   r   r   test_cos_seriesr     s~    q66==Aq!!	AqDF
QT"Wq!tCx'!Q$u*4qAww>? ? ? ? ? ?r   c                  @   t          t                                        t                    t          t          t          z            dz  t          t           t          z            dz  z   k    sJ t          t                                        t
                    dt          t          dz            dz  z
  dt          t          dz            dz  z   z  k    sJ t          t                                        t                    t          dt          t          t                    d          t          t          t          dt          z            d          z  ft          t          dz            dz  dz
  t          t          dz            dz  dz   z  df          k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t!          t                                                  t                                        t          d                                          t          t                                        t                                        t          t!          d                                                    k    sJ t          t#          t                                                  t                                        t          d                                          t          t                                        t                                        t          t#          d                                                    k    sJ t          t%          t                                                  t                                        t          d                                          t          t                                        t                                        t          t%          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t          t                                                  t                                        t          d                                          t          t                                        t                                        t          t          d                                                    k    sJ t          t'          t                                                  t(                    t          t          z  dz  t          t           z  dz  z   k    sJ t          t                                        t*                    dt+          t                    z  k    sJ t          t                                        t$                    t%          t          t          dz  z   d          k    sJ t          t                                        t,                    dt-          t           t          dz  z   d          z  k    sJ t          t%          t                                                  t(                    t          t%          t                              k    sJ t          t                                        t.                    t          t1          t          t          z  dz            t/          t2          j         t                    z  t7          t          d          fd          k    sJ t          t                                        t.                                        t          d          t          d          k    sJ d S )	Nrk   rh   r   Try   Fr   rh   T)r*   r   r   r   r   r0   r+   rC   rB   r   r   r   r    r   rP   r   r!   r   r.   r   r   r-   r,   r1   r"   r   r   rA   r   r   r   test_cos_rewriter     s   q66>>##ac((1*sA2a4yy{":::::q66>>#1s1Q3xx{?QQqS1_"EEEEEq66>>#1bAllRAqta%8%889!HHaK!Oc!A#hhkAo6=	? 	?? ? ? ? tAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H HtAww<< T!QZZs1vv~~c2277477CCEEGGH H H Hs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;; T!QZZs1vv~~c22773q66BBDDFFG G G Gs1vv;;s##q!tAvA2a'77777q66>>#!CFF(****q66>>##a"Q$h"?"?"?????q66>>#!CRT	E$B$B$B"BBBBBs1vv;;s##s3q66{{2222q66>>'""ibd1fgqvgq1112a88<' '     q66>>'""''1--Q777777r   c            	         t          t          t          z                                 d          t          t                    t          t                    z  t	          t                    t	          t                    z  z
  k    sJ t          t          t          z
                                d          t          t                    t          t                    z  t	          t                    t	          t                    z  z   k    sJ t          t          t          z
                                d          t          t                    t          t                    z  t	          t                    t	          t                    z  z   k    sJ t          dt          z                                d          dt          t                    dz  z  dz
  k    sJ t          dt          z                                d          dt          t                    dz  z  dt          t                    z  z
  k    sJ t          dt          z                                d          dt          t                    dz  z  dt          t                    dz  z  z
  dz   k    sJ t          dt
          z  dz                                d          t          dt
          z  dz  d	
          k    sJ t          t          t
          dz  z                                 d          t          t
          dz            t          t                    z  t	          t
          dz            t	          t                    z  z
  k    sJ t          t           ddt          d          dz  z  dz
             t          t           ddt          d          dz  z  dt          d          z  z
             d S )NTr   rk   rh   ry   rm   r|   rz   Fr   )r*   r   r   r   r.   r   r   r   r   r   test_cos_expansionr     s   q1u::$''3q66#a&&=3q66#a&&=+HHHHHq1u::$''3q66#a&&=3q66#a&&=+HHHHHq1u::$''3q66#a&&=3q66#a&&=+HHHHHqs88???%%3q6619q8888qs88???%%3q6619qQx)?????qs88???%%3q6619qQ{)BQ)FFFFFqtBw<<D))S2b5-I-I-IIIIIqBw<<D))SBZZA->RUCPQFFAR-RRRRRa3q6619q)))a3q6619qQx/00000r   c                  ,   t          t          t           t                              t          dd          k    sJ t          t          dt                              t          dd          k    sJ t          t          t           d                    t          dd          k    sJ t          t          ddt          j        z                      t          dd          k    sJ t          t          t          j         dz  t          j        dz                      t          t          t          j         dz            d          k    sJ t          t          t          j        t          dd          z  t          j        t          dd          z                      t          dt          t          j        t          dd          z                      k    sJ t          t          t          j        t          dd          z  t          j        t          dd          z                      t          t          t          j        t          dd          z            t          t          j        t          dd          z                      k    sJ t          t          t          j        dz  t          j        dz                      t          t          t          j        dz            t          t          j        dz                      k    sJ d S )Nri   rh   r   rk   ry   rm   rl   )r*   r   r   r   r   r   r   r   r   test_cos_AccumBoundsr     s   {B3##$$B(:(:::::{1b!!""k"a&8&88888{B3""##{2q'9'99999{1af%%&&+b!*<*<<<<<{AD57ADF++,,CaLL!0L0LLLLL{14A.Xa^^0CDDEEUWY\]^]abjklnobpbp]pYqYqIrIrrrrr{14A.Xa^^0CDDEEUXYZY]^fghjk^l^lYlUmUmorstsw  yA  BC  EF  yG  yG  tG  pH  pH  JI  JI  I  I  I  I{146146**++{3qtAv;;ADQRF/T/TTTTTTTr   c                      t          t                                                    t          t                     k    sJ t	          t
          d            d S )Nc                  P    t          t                                        d          S r   )r*   r   r   r   r   r   r   z test_cos_fdiff.<locals>.<lambda>  r   r   )r*   r   r   r.   rG   r?   r   r   r   test_cos_fdiffr     sD    q66<<>>c!ffW$$$$
6677777r   c                  |"   t          t                    t          u sJ t          t                    t          u sJ t          t                    t	          t           t                    k    sJ t          t                    t          t                    z
  t	          t           t                    k    sJ t           j        t          d          k    sJ t          t          t          z            t          k    sJ t          t           t          z            t           k    sJ t          d          dk    sJ t          t          t                              t          k    sJ t          t          t                              t          t          dt          dz  z
            z  k    sJ t          t          t                              t          dt          dz  z
            t          z  k    sJ t          t          t                              dt          z  k    sJ t          t          t                              dt          ddt          dz  z  z
            t          z  z  k    sJ t          t          t                              t          ddt          dz  z  z
            t          z  k    sJ t          t!          t"          t                              t"          t          z  k    sJ t          t$          t          z            t'          t$                    t          z  k    sJ t          t$           t          z            t'          t$                     t          z  k    sJ t          dt          z            t'          d           t          z  k    sJ t          t$                    dk    sJ t          t$                     dk    sJ t          dt$          z            dk    sJ t          dt$          z            dk    sJ t          dddz  z  t$          z            dk    sJ t          t$          dz            t          u sJ t          t$          t)          dd          z            t          u sJ t          t$          dz            t          d          k    sJ t          t$          t)          dd          z            t          d          k    sJ t          t$          d	z            t*          j        u sJ t          t$           d	z            t*          j        u sJ t          t$          t)          d
d	          z            t*          j        u sJ t          t$          t)          dd	          z            t*          j        u sJ t          t$          dz            t          ddt          d          z  z
            k    sJ t          t$          t)          dd          z            t          ddt          d          z  z             k    sJ t          t$          t)          dd          z            t          ddt          d          z  z              k    sJ t          t$          t)          dd          z            t          ddt          d          z  z
             k    sJ t          t$          dz            dt          d          z  k    sJ t          t$           dz            dt          d          z  k    sJ t          t$          t)          dd          z            dt          d          z  k    sJ t          t$          t)          dd          z            dt          d          z  k    sJ t          t$          dz            dt          d          z   k    sJ t          t$          t)          dd          z            dt          d          z   k    sJ t          t$          t)          dd          z            dt          d          z
  k    sJ t          t$          t)          dd          z            dt          d          z
  k    sJ t          t$          dz            t          ddt          d          z  dz  z
            k    sJ t          t$          t)          dd          z            t          ddt          d          z  dz  z             k    sJ t          t$          t)          d
d          z            t          ddt          d          z  dz  z              k    sJ t          t$          t)          dd          z            t          ddt          d          z  dz  z
             k    sJ t          t$          dz            t          d           dz   k    sJ t          t$          t)          dd          z            t          d          dz   k    sJ t          t$          t)          dd          z            t          d           dz
  k    sJ t          t$          t)          dd          z            t          d          dz
  k    sJ t          t$          dz                                            dt          d          z
  t          d          z   t          d          z   k    sJ t          t$          t)          dd          z                                            dt          d          z   t          d          z
  t          d          z   k    sJ t          t$          t)          dd          z                                            dt          d          z
  t          d          z
  t          d          z   k    sJ t          t$          t)          dd          z                                            dt          d          z   t          d          z   t          d          z   k    sJ t          t$          t)          dd          z                                            dt          d          z
  t          d          z
  t          d          z
  k    sJ t          t$          t)          d
d          z                                            dt          d          z   t          d          z   t          d          z
  k    sJ t          t$          t)          dd          z                                            dt          d          z
  t          d          z   t          d          z
  k    sJ t          t$          t)          dd          z                                            dt          d          z   t          d          z
  t          d          z
  k    sJ t          t          t          z            t'          t                    t          z  k    sJ t          t2          t$          z            dk    sJ t          d
t2          z  t$          z            dk    sJ t          t2          t$          z  t          z            t'          t2          t$          z            t          z  k    sJ t          t4                    j        J t          t4                    j        du sJ t          dd          j        sJ t          t<                    j        J t          t>                    j        du sJ t          t$          t)          dd          z            t          t$          t)          dd          z            k    sJ t          t$          t)          dd          z            t          t$          t)          dd          z             k    sJ t          t$          t)          dd          z            t          t$          t)          dd          z            k    sJ t          t$          t)          dd          z            t          t$          dz            k    sJ t          t$          t)          d d          z            t          t$          dz             k    sJ t          t4                    j         J t          t          t4          z            j         du sJ t          t$          t          t+          d          dz  z   z            dt          z  z  } | !                    t                    ddt$          z  t          dz  z  z  k    sJ d S )!Nrh   r   rk   rj   ro   rp   rq   ry   rm   rz   rl      rn   ri   rr   r{   r|   ir~   r   r            TFr   r   r      )"r0   r   r   r   r   r   r;   r   r(   r   r'   r"   r#   r$   r%   r&   r)   r   r   r!   r   r   OneNegativeOneradsimpr   rH   r   is_extended_realr   r`   rb   	is_finiteas_leading_termr   s    r   test_tanr     s_   s88s????s88s????r77k2#r******r77SWWRC 4 444449	!$$$$r!t99>>>>s1u::!q66Q;;;;tAww<<1tAww<<1tA1H~~-----tAww<<4AqD>>A-----tAww<<1q5    tAww<<1QQT\ 2 2Q 677777tAww<<4A1H--11111uQ{{qs""""r!t99R
""""s1u::$r((1$$$$r!t99a
""""r77a<<<<s88q====qt99>>>>r"u::????r"b&y|!!!!r!t99r(1a.. !!S((((r!t99Qr(2q//!""d1gg----r!t99s1u::&&&&r(2q//!""ae++++r(2q//!""ae++++r!t99Q477]++++++r(1a.. !!T!aQi-%8%88888r(2q//!""tA$q''	M':':&:::::r(3"""##Q477](;(;';;;;;r!t99$q''	!!!!s1u::DGG####r(1a.. !!QtAwwY....r(2q//!""aQi////r!t99T!WW$$$$r(1a.. !!Qa[0000r(1a.. !!R$q''\1111r(1a.. !!Qa[0000r"u::a!DGG)A+o......r(1b//!""d1qay{?&;&;;;;;r(2r"""##Q4771_(=(='=====r(3###$$a!DGG)A+o)>)>(>>>>>r"u::$q''A%%%%r(1b//!""d1ggk1111r(1b//!""tAwwhl2222r(2r"""##tAww{2222r"u::2Q<$q''#9DGG#CCCCCr(1b//!""**,,T!WWtAww0Fa0PPPPPr(1b//!""**,,DGGd1gg0EQ0OOOOOr(2r"""##++--T!WWtAww1Fa1PPPPPr(2r"""##++--d1ggQ1G$q''1QQQQQr(2r"""##++--d1ggQ1G$q''1QQQQQr(2r"""##++--T!WWtAww1Fa1PPPPPr(2r"""##++--T!WWtAww1Fa1PPPPPqs88tAwwqy    qt99>>>>r!tBw<<1qtAv;;$qt**Q,&&&&q66>!!!q66"d****q5!!!....q66&&&r775((((r(2q//!""c"Xa^^*;&<&<<<<<r(2q//!""s2hq!nn+<'='=&=====r(3"""##s2hq!nn+<'='=====r(2r"""##s2b5zz1111r(3###$$RU3333q66###qs88%%%% 	BAaDDF
Oac"AQ2qtAqDy>111111r   c                     t          t                                        t          dd          t          t          dz  dz  z   dt          dz  z  dz  z   dt          dz  z  d	z  z   t          t          dz            z   k    sJ d S )
Nr   r   ry   rk   rl   r   rz   rr   i;  )r0   r   r9   r8   r   r   r   test_tan_seriesr   K  sy    q66==Aq!!	AqDF
Qq!tVBYAqD,qAww67 7 7 7 7 7r   c                     t          t           t          z            t          t          t          z            }} t          t                                        t                     t          | |z
  z  | |z   z  k    sJ t          t                                        t
                    dt          t                    dz  z  t          dt          z            z  k    sJ t          t                                        t                    t          t          t          j        dz  z
  d          t          t                    z  k    sJ t          t                                        t                    dt          t                    z  k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t          t                                                  t                                         t          d                                          t          t                                        t                                         t          t          d                                                    k    sJ t          t!          t                                                  t"                    t          t          t           z  t          t          z  z
  z  t          t           z  t          t          z  z   z  k    sJ t          t                                        t$                    t%          t                    t%          t          t&          dz  z
  d          z  k    sJ t          t                                        t(                    t)          t           t&          dz  z   d          t)          t                    z  k    sJ t          t          t                                                  t"                    t          t          t                              k    sJ t          t&          t+          dd          z  d                              t,                    t-          t-          d          dz  t+          dd          z             t+          dd	          t-          d          d	z  z   z  k    sJ t          t                                        t.                    t/          t          j        t                    t/          t          j         t                    z  k    sJ t          t                                        t.                                        t          d
          t          d
          k    sJ d S )Nrk   Fr   rh   ry   rl   r|   ri   rm   r   )r   r   r   r0   r   r.   r*   r   r   r+   r    r   rP   r   r!   r   r   r   r-   r   r,   r   r"   r1   r   )neg_exppos_exps     r   test_tan_rewriter   P  s"   A2a4yy#ac((WGq66>>#!Ww%6"779J"KKKKKq66>>#!CFFAI+c!A#hh"66666q66>>##a!$q&j5"A"A"A#a&&"HHHHHq66>>#!CFF(****tAww<<$$))!Q//1133s1vv~~c7J7J7O7OPQSWXYSZSZ7[7[7]7]7_7_____tAww<<$$))!Q//1133s1vv~~c7J7J7O7OPQSWXYSZSZ7[7[7]7]7_7_____tAww<<$$))!Q//1133s1vv~~c7J7J7O7OPQSWXYSZSZ7[7[7]7]7_7_____tAww<<$$))!Q//1133s1vv~~c7J7J7O7OPQSWXYSZSZ7[7[7]7]7_7_____s1vv;;s##((A..0022c!ffnnS6I6I6N6NqRUVWRXRX6Y6Y6[6[6]6]]]]]s1vv;;s##((A..0022c!ffnnS6I6I6N6NqRUVWRXRX6Y6Y6[6[6]6]]]]]s1vv;;s##((A..0022c!ffnnS6I6I6N6NqRUVWRXRX6Y6Y6[6[6]6]]]]]s1vv;;s##((A..0022c!ffnnS6I6I6N6NqRUVWRXRX6Y6Y6[6[6]6]]]]]s1vv;;s##q!aR%!Q$,'7QBA'FFFFFq66>>##a&&QAX)F)F)F"FFFFFq66>>##qb2a4i%"@"@"@Q"GGGGGs1vv;;s##s3q66{{2222r(1a.. 511199$??4QPQ	1~~I D D (Q$q''!) ;D= = = = =q66>>'""gafa&8&8!&!9L9L&LLLLLq66>>'""''1--Q777777r   c                  (   dt          t          dz            t          t          dz            z  t          t          dz            z
                      t
                    k    sJ dt          t          dz            t          t          dz            z  t          t          dz            z
                      t
                    k    sJ t          t          dz                                t
                    t          t          dz            k    sJ t          t          t          dd          z                                t                    t          t          t          dd          z            k    sJ t          t          t          dd          z  d	                              t                    t          t          d          dz  t          dd          z             t          d
d          t          d          dz  z   z  k    sJ d S )Nr   "   rz   r   r|   rk   rl   Fr   ri   rm   )r*   r   r0   r.   r   powr   r"   r   r   r   test_tan_rewrite_slowr   h  s   RUC2JJ&RU3<<SAAAAAARUC2JJ&RU3<<SAAAAAAr"u::c""c"R%jj0000r(1b//!""**400C8Ar??8J4K4KKKKKr(1a.. 511199$??4QPQ	1~~I D D (Q$q''!) ;D= = = = = = =r   c                  V   t          t                                        t          t                    t                    t          k    sJ t          t                                        t          t                    t          t                    k    sJ t          t                                        t          t          j        dz            t          u sJ t          t                                        t          t          j        t          dd          z            t          u sJ d S )Nrk   ry   )r0   r   r   r   r   r   r   r   r   r   r   test_tan_subsr   r  s    q66;;s1vvq!!Q&&&&q66;;q!A&&&&q66;;q!$q&!!S((((q66;;q!$x1~~-..#555555r   c            
      `	   t          t          t          z                                 d          t          t                    t          t                    z   dt          t                    t          t                    z  z
  z                                  k    sJ t          t          t          z
                                d          t          t                    t          t                    z
  dt          t                    t          t                    z  z   z                                  k    sJ t          t          t          z   t          z                                 d          t          t                    t          t                    z   t          t                    z   t          t                    t          t                    z  t          t                    z  z
  dt          t                    t          t                    z  z
  t          t                    t          t                    z  z
  t          t                    t          t                    z  z
  z                                  k    sJ dt          dt          z                                d                              t                                         t          t                    t          dd          fg          dz  dz
  k    sJ dt          dt          z                                d                              t                                         t          t                    t          dd	          fg          d
z  dz
  k    sJ dt          dt          z  t          dz  z
                                d                              t                                         t          t                    t          dd	          fg          dz  dz
  k    sJ t          t           ddt          d          z  dt          d          dz  z
  z             t          t           dt          d          dz   dt          d          z  z   ddt          d          dz  z  z
  z             d S )NTr   rh   r   rk   rr   r   ry   rl   7   %   rm      )
r0   r   r   r   re   r   r   r   r   r   r   r   r   test_tan_expansionr  y  sO   q1u::$''SVVc!ff_q3q66#a&&=?P,Q+Y+Y+[+[[[[[q1u::$''SVVc!ff_q3q66#a&&=?P,Q+Y+Y+[+[[[[[q1uqy>>  d ++	Q#a&&3q66	!CFF3q66M#a&&$8	8	
SVVCFF]	SVVCFF]	*SVVCFF]	:	<=CVXXF F F F AaCT**22377<<s1vvxPQST~~>V=WXXY[[^______AaCT**22377<<s1vvxPQST~~>V=WXXY[[^``````AaC"Q$J&&D&1199#>>CCc!ffhWXZ[nnE]D^__`ccfgggggga3q661s1vvqy=1222a3q6619*qQx/!aA	k/BCCCCCr   c            
      Z   t          t          t           t                              t          t           t                    k    sJ t          t          t          j        dz  t          j        t          dd          z                      t          t           t                    k    sJ t          t          t          j        dz  t          j        dz                      t          t          t          j        dz            t          t          j        dz                      k    sJ d S )Nry   rk   rn   )r0   r   r   r   r   r   r   r   r   test_tan_AccumBoundsr    s    {B3##$$RC(<(<<<<<{14614A#67788KR<P<PPPPP{146146**++{3qtAv;;ADQRF/T/TTTTTTTr   c                      t          t                                                    t          t                    dz  dz   k    sJ t          t          d            d S )Nrk   rh   c                  P    t          t                                        d          S r   )r0   r   r   r   r   r   r   z test_tan_fdiff.<locals>.<lambda>  r   r   )r0   r   r   rG   r?   r   r   r   test_tan_fdiffr
    sJ    q66<<>>SVVQY]****
6677777r   c                     t          t                    t          u sJ t           j        t          d          k    sJ t          t          t
          z            t
           k    sJ t          t           t
          z            t
          k    sJ t          t                    t          u sJ t          d          t          u sJ t          dt          z            t          u sJ t          t          t                              t          k    sJ t          t          t                              dt          z  k    sJ t          t          t                              t          dt          dz  z
            t          z  k    sJ t          t          t                              t          t          dt          dz  z
            z  k    sJ t          t          t                              t          ddt          dz  z  z
            t          z  k    sJ t          t          t                              dt          ddt          dz  z  z
            t          z  z  k    sJ t          t!          t"          t                              t          t"          z  k    sJ t          t          t
          z            t%          t                     t
          z  k    sJ t          t           t
          z            t%          t                    t
          z  k    sJ t          dt
          z            t%          d          t
          z  k    sJ t          t                    t          dt          z            cxk    rt          dt          z            k    sn J t          t                     t          dt          z            cxk    rt          dt          z            k    sn J t          t          dz            dk    sJ t          t           dz            dk    sJ t          t          t'          dd          z            dk    sJ t          t          t'          dd          z            dk    sJ t          t          dz            dt          d          z  k    sJ t          t          t'          dd          z            dt          d          z  k    sJ t          t          d	z            t(          j        u sJ t          t           d	z            t(          j        u sJ t          t          t'          d
d	          z            t(          j        u sJ t          t          t'          dd	          z            t(          j        u sJ t          t          dz            t          d          k    sJ t          t           dz            t          d           k    sJ t          t          t'          dd          z            t          d          k    sJ t          t          t'          dd          z            t          d          k    sJ t          t          dz            dt          d          z   k    sJ t          t          t'          dd          z            dt          d          z   k    sJ t          t          t'          dd          z            dt          d          z
  k    sJ t          t          t'          dd          z            dt          d          z
  k    sJ t          t          dz            t          d          dz   k    sJ t          t          t'          dd          z            t          d           dz   k    sJ t          t          t'          dd          z            t          d          dz
  k    sJ t          t          t'          dd          z            t          d           dz
  k    sJ t          t          dz                                            t          d          t          d          z   dz   t          d          z   k    sJ t          t          t'          dd          z                                            t          d           t          d          z
  dz   t          d          z   k    sJ t          t          t'          dd          z                                            t          d           t          d          z   dz
  t          d          z   k    sJ t          t          t'          dd          z                                            t          d          t          d          z
  dz
  t          d          z   k    sJ t          t          t'          dd          z                                            t          d           t          d          z   dz   t          d          z
  k    sJ t          t          t'          d
d          z                                            t          d          t          d          z
  dz   t          d          z
  k    sJ t          t          t'          dd          z                                            t          d          t          d          z   dz
  t          d          z
  k    sJ t          t          t'          dd          z                                            t          d           t          d          z
  dz
  t          d          z
  k    sJ t          t          t
          z            t%          t                     t
          z  k    sJ t          t0          t          z  t
          z            t%          t0          t          z             t
          z  k    sJ t          t2                    j        J t          t2                    j        du sJ t          t8                    j        J t          t<                    j        du sJ t          t          t'          dd          z            t          t          t'          dd          z            k    sJ t          t          t'          dd          z            t          t          t'          dd          z             k    sJ t          t          t'          dd          z            t          t          t'          dd          z            k    sJ t          t          t'          dd          z            t          t          t'          dd          z            k    sJ t          t          t'          dd          z            t          t          t'          dd          z             k    sJ t          t                    j        J t          t2                    j        J tA          dd          } t          |           j        du sJ t          t                    !                    t          dt          z            t          u sJ t          t          t          d	z   z            dt          z  z  }|"                    t                    ddt          z  t          dz  z  z  k    sJ d S )Nrh   r   rk   rj   ry   ro   rl   rr   rm   rz   rn   r{   r|   ri   r~   r   r   r   r   r   TFrp   r   '   r   ir   rf   )#r+   r   r   r;   r   r   r   r   r$   r   r(   r'   r"   r#   r%   r&   r)   r   r   r   r   r   r   r   r   rH   r   r   r`   r   rb   r   r   r   r   )r   r   s     r   test_cotr    s   s88s????9	!$$$$r!t99????s1u::????s88s????q66S====qt99tAww<<1tAww<<1q5    tAww<<4AqD>>A-----tAww<<1tA1H~~-----tAww<<4A1H--11111tAww<<1QQT\ 2 2Q 677777uQ{{qs""""r!t99b	!####s1u::b!####r!t99Q	!!!!r77c!B$ii,,,,3qt99,,,,,,s88s2b5zz////SBZZ//////r!t99>>>>s1u::????r(1a.. !!Q&&&&r(1a.. !!Q&&&&r!t99$q''	!!!!r(2q//!""aQi////r!t99s1u::&&&&r(2q//!""ae++++r(2q//!""ae++++r!t99Qs1u::$q''!!!!r(1a.. !!T!WW,,,,r(2q//!""d1gg----r!t99DGG####r(1a.. !!R$q''\1111r(1a.. !!Qa[0000r(1a.. !!R$q''\1111r"u::a1$$$$r(1b//!""tAwwhl2222r(1b//!""d1ggk1111r(2r"""##Qx!|3333r"u::477T!WW#4q#8477#BBBBBr(1b//!""**,,a4770BQ0Fa0PPPPPr(1b//!""**,,a4770BQ0Fa0PPPPPr(2r"""##++--a4771BQ1Fa1PPPPPr(2r"""##++--$q''DGG1Ca1G$q''1QQQQQr(2r"""##++--a4771BQ1Fa1PPPPPr(2r"""##++--a4771BQ1Fa1PPPPPr(2r"""##++--$q''DGG1Ca1G$q''1QQQQQqs88Qxz!!!!qtAv;;4"::+a-''''q66>!!!q66"d****q66&&&r775((((r(2q//!""c"Xa^^*;&<&<<<<<r(2q//!""s2hq!nn+<'='=&=====r(3"""##s2hq!nn+<'='=====r(2r"""##s2hq"oo+='>'>>>>>r(3###$$RB-?)@)@(@@@@@q66###q66###sd###Aq66t####q66;;q!B$3&&&& 	BAJ1AQ1ad1a4i=000000r   c            
      j   t          t          t          t          dd          z            t	          t          t          dd          z            z  t          t          t          dd          z            z  dz
                                            dk     sJ t          t          t          t          dd          z            t          t          t          dd          z            z  t	          t          t          dd          z            z  dz
                                            dk     sJ d S )Nr|   r   rh   g+=rm   )r   r0   r   r   r*   r.   evalfr+   r   r   r   test_tan_cot_sin_cos_evalfr    s    Bx2&''Bx2,>(?(??BxPQSUDV@W@WWZ[[bbddeehmmmmmBx2&''Bx2,>(?(??BxPQSUDV@W@WWZ[[bbddeehmmmmmmmr   c            	      *   dt          t          t          dd          z            t          t          t          dd          z            z  t	          t          t          dd          z            z                                  k    sJ dt          t          t          dd          z            t	          t          t          dd          z            z  t          t          t          dd          z            z                                  k    sJ d S )Nrh   r|   r   rm   )r0   r   r   r*   r.   ratsimpr+   r   r   r   test_tan_cot_sin_cos_ratsimpr    s    RB'((RB-?)@)@@RQRTVEWAXAXXaaccccccRB'((RB-?)@)@@RQRTVEWAXAXXaaccccccccr   c                     t          t                                        t          dd          dt          z  t          dz  z
  t          dz  dz  z
  dt          dz  z  dz  z
  t          d	z  d
z  z
  t          t          dz            z   k    sJ t          t          dz  t          dz  z                                 t          dd          t          dz  dt          dz  z  z
  t          dz  z   dt          z  z
  dz   t          t                    z   k    sJ t          t          dt          z
  z                                t          dd          dt          t          z  z  t          t          z  dz  z   t          t          dz            z   k    sJ t          t                                        dt                    dt          z  k    sJ t          t                                        dt                    t          j        u sJ t          t                                        dt                    t          dz   dz  k    sJ d S )Nr   r   rh   ry   -   rk   rl   i  rr   iu  rm   r   rj   ri   )r+   r   r9   r8   r   taylor_termr   r   r   r   r   test_cot_seriesr    s   q66==Aq!!	!ac	AqDGa1fSj(1a494qAww>? ? ? ? q!tad{""1a++	B!AqD&1r7"QqS(1,qtt34 4 4 4r1Q3x==1a((B1I1Q,>1a4,HHHHHq66a##qs****q66a##qv----q66a##1uRx//////r   c            	      $
   t          t           t          z            t          t          t          z            }} t          t                                        t                     t          || z   z  || z
  z  k    sJ t          t                                        t
                    t          dt          z            dt          t                    dz  z  z  k    sJ t          t                                        t                    t          t                    t          t          t          dz  z
  d          z  k    sJ t          t                                        t                    dt          t                    z  k    sJ d } |t                      |t                      |t                      |t                      |t
                      |t                      |t                     t          t          t                                                  t                    t           t          t           z  t          t          z  z   z  t          t           z  t          t          z  z
  z  k    sJ t          t                                        t                    t          t          t          dz  z
  d          t          t                    z  k    sJ t          t                                        t                     t!          t                    t!          t           t          dz  z   d          z  k    sJ t          t          t                                                  t                    t          t          t                              k    sJ t          t          t#          dd          z  d                              t$                    t#          dd          t%          d          dz  z   t%          t%          d          d	z  t#          dd	          z             z  k    sJ t          t                                        t&                    t'          t(          j         t                    t'          t(          j        t                    z  k    sJ t          t                                        t&                                        t          d
          t          d
          k    sJ d S )Nrk   Fr   rh   c                 |   t           | t                                                  t                    t          t                                        t                                        t           | t                              z
  }|                    t                                                    dk    sJ d S Nr   )r+   r   r   r   r   r   )r   re   s     r   checkztest_cot_rewrite.<locals>.check  s    QLL  %%As(;(;(@(@DDGG(L(LLyy~~$$&&!++++++r   rl   ri   rm   r|   r   )r   r   r   r+   r   r.   r*   r   r0   r    r   r!   r   r   r   r-   r,   r   r"   r1   r   r   r   )r   r   r  s      r   test_cot_rewriter    s   A2a4yy#ac((WGq66>>#!Ww%6"779J"KKKKKq66>>##ac((As1vvqyM":::::q66>>##a&&QAX)F)F)F"FFFFFq66>>#!CFF(****, , , 
E$KKK	E$KKK	E$KKK	E$KKK	E#JJJ	E#JJJ	E#JJJs1vv;;s##r1qb51a4<'8!aR%!Q$,'GGGGGq66>>##a"q&j5"A"A"ACFF"JJJJJq66>>##a&&3sR!V|e+L+L+L"LLLLLs1vv;;s##s3q66{{2222r(1a.. 511199$??HRQROOVZ[\V]V]^_V_D_8<T!WWQYRSUV=W8X8XDY Y Y Y Yq66>>'""gqvgq&9&9'!&!:L:L&LLLLLq66>>'""''1--Q777777r   c            	      4   t          t          t          dd          z                                t                                                    t          t          t          dd          z            t          t          t          dd          z            z                      t                                                    k    sJ t          t          t          dd          z                                t                    t          t          t          dd          z            t          t          t          dd          z            z                      t                    k    sJ t          t          dz                                t                    t          t          dz            k    sJ t          t          dz                                t                    t          t          dz            k    sJ t          t          t          dd          z  d                              t                    t          d	d          t          d          dz  z   t          t          d          d
z  t          dd
          z             z  k    sJ d S )Nrm   r   rz   r   rk   rl   Fr   ri   r|   )	r+   r   r   r   r   r  r*   r.   r"   r   r   r   test_cot_rewrite_slowr    s	   r(1b//!""**3//7799	RB	 	 RB%7!8!8	8AA#FFNNPPQ Q Q Qr(1b//!""**3//	RB	 	 RB%7!8!8	8AA#FFG G G Gr"u::c""c"R%jj0000r"u::d##s2b5zz1111r(1a.. 511199$??	"a47719	$T!WWQY!Q-G(H(HHI I I I I Ir   c                     t          t                                        t          t                    t                    t          k    sJ t          t                                        t          t                    t          t                    k    sJ t          t                                        t          d          t          u sJ t          t                                        t          t
          j                  t          u sJ d S r  )r+   r   r   r   r   r   r   r   r   r   test_cot_subsr   (  s    q66;;s1vvq!!Q&&&&q66;;q!A&&&&q66;;q!####q66;;q!$3&&&&&&r   c            
      d   t          t          t          z                                 d                                          t          t                    t          t                    z  dz
  t          t                    t          t                    z   z  k    sJ t          t          t          z
                                d                                          t          t                    t          t                     z  dz
  t          t                    t          t                     z   z  k    sJ t          t          t          z   t
          z                                 d                                          t          t                    t          t                    z  t          t
                    z  t          t                    z
  t          t                    z
  t          t
                    z
  dt          t                    t          t                    z  z   t          t                    t          t
                    z  z   t          t                    t          t
                    z  z   z  k    sJ t          dt          z                                d                                          t          t                    dz  dz
  t          t                    z  dt          t                    dz  z  dz
  z  k    sJ t          dt          z                                d          t          t                    dz  ddt          t                    z  z  z
  k    sJ t          dt          z                                d                                          t          t                    dz  dz
  t          t                    z  dt          t                    dz  z  dz
  z  k    sJ t          dt          z  t          dz  z
                                d                                          t          t                    dz   dt          t                    dz  z  z   dt          t                    dz  z  z   dt          t                    z  z
  dz
  t          t                    dz  dt          t                    dz  z  z   dt          t                    dz  z  z
  dt          t                    z  z
  dz   z  k    sJ t          t           ddt          d          dz  z   dt          d          z  z             t          t           dd	t          d          z  t          d          dz  z   ddt          d          dz  z  z   z             d S )
NTr   rh   ri   ry   rk   rm   rn   ro   )
r+   r   r   r   togetherre   r   r5   r0   r   r   r   r   test_cot_expansionr#  /  s*   q1u::$''0022	QA	SVVc!ff_-/ / / /q1u::$''0022AsA2wwSVVc1"gg-7/ / / / /q1uqy>>  d ++4466	QAs1vv	A	&Q	/#a&&	8	c!ffSVVm	c!ffSVVm	+c!ffSVVm	;	=> > > > qs88???%%..00	QQA#a&&!)a02 2 2 2qs88???%%QAqQxL)@@@@@qs88???%%..00A	As1vv5 Q{Q50 0 0 0 0qsRTz??!!t!,,3355	Q
Qs1vvqy[ 1SVVQY;.3q669A=q6619qQ{"Qs1vvqy[01SVV8;a?:A A A A A a"s1vvqy.1SVV84555a"SVV)c!ffai/"qQ{2BCDDDDDr   c                  @   t          t          t           t                              t          t           t                    k    sJ t          t          t          j         dz  t          j        dz                      t          t           t                    k    sJ t          t          t          j        dz  t          j        dz                      t          t          t          j        dz            t          t          j        dz                      k    sJ d S )Nry   rn   )r+   r   r   r   r   r   r   r   test_cot_AccumBoundsr%  C  s    {B3##$$RC(<(<<<<<{AD57ADF++,,RC0D0DDDDD{146146**++{3qtAv;;ADQRF/T/TTTTTTTr   c                      t          t                                                    t          t                    dz   dz
  k    sJ t          t          d            d S )Nrk   rh   c                  P    t          t                                        d          S r   )r+   r   r   r   r   r   r   z test_cot_fdiff.<locals>.<lambda>K  r   r   )r+   r   r   rG   r?   r   r   r   test_cot_fdiffr(  I  sL    q66<<>>c!ffaiZ!^++++
6677777r   c                     t          t          t                    t                    sJ t          dd          } t          |           t          j        u sJ t          t          j                  t          j        u sJ t          t          j                  t          j        u sJ t          t          j	                  t          j	        u sJ t          t          j
                  t          j	        u sJ t          ddd          }t          |t          z            t          j        u sJ t          | t          z            t          j        u sJ t          t          dz            dt          z  k    sJ t          t           dz            dt          z  k    sJ t          t          t          dd          z            ddt          z  z  k    sJ t          t          t          dd          z            d	dt          z  z  k    sJ t          t                     t          t                    k    sJ t          t                                        t                    t          t                    t          z  t          t                    t          dz  z  z
  k    sJ t          t                                        t                    t          t                    t          z                      t                    k    sJ t          t                                        t          t                    t          t                     dt          t                    z  t          z  z
  dt          t                    z  t          dz  z  z   t          z  k    sJ t          t                                        t          t                    t          t                    t          z                      t          t                    k    sJ t!          t          t                                        t                    t          d
          d
k    sJ t!          t          t                                        t          t                    t          d
          t	          d           dz  k    sJ t          t                                                    dt          dz  dz  z
  t          dz  dz  z   t%          t          dz            z   k    sJ t          t                                        t(                    t)          d
t                    k    sJ t          t                                        t                    t+          t          t                    t          z  t-          t          d
          fd          k    sJ t          t          d          j        du sJ t          d
d          j        du sJ t          |t          z  d          j        du sJ t          t                    j        J t          ddd          }t          t                    j        J t          |          j        du sJ t          t2          |z            j        du sJ t          t2          dz            j        du sJ t          t                    j        J t          |          j        du sJ d S )NsTzerorP   )rL   rW   rk   rl   rr   rj   r   rh   ry   rn   rm   r   r   Fr   xr)rJ   rW   d   )r   r/   r   r   r   r   Infinityr   NegativeInfinityNaNComplexInfinityr   r   r   r*   r.   r7   r9   r8   r   r2   rC   rA   r   r   r   r   )r*  rP   r-  s      r   	test_sincr3  N  s(   d1ggt$$$$$sA77ae
qv%%%%"##qv----;;!%!""ae++++sD$///A"::2;;!&    1::RA;;!b&    8Aq>>!""a1R4j00008Aq>>!""bAbDk111188tAww77<<??c!ffQhQ14444477<<??s1vvaxooa00000077<<13q66'Ac!ffHQJ"63q66!Q$"F!IIIII77<<1#a&&(A!6!66666aa!Q''1,,,,aa##Q**qtteAg5555 77>>q1a46zAqDH4qAww>>>>>77??2"Q((****77??39c!ffQh1a-A9#M#MMMMMU###+t3333E"""*e3333"u%%%-555577?"""	4	.	.	.B77?"""88t####"::%%%%#;;$&&&&77$$$88%%%%%%r   c                  p   t          t                    t          u sJ t           j        t          d          k    sJ t          t                    t
           t          z  k    sJ t          t                     t
          t          z  k    sJ t          t                    t          u sJ t          d          dk    sJ t          d          t          dz  k    sJ t          d          t           dz  k    sJ t          t          d          dz            t          dz  k    sJ t          t          d           dz            t           dz  k    sJ t          t          d          dz            t          dz  k    sJ t          t          d           dz            t           dz  k    sJ t          t          dt          d          z
  dz                      t          dz  k    sJ t          t          dt          d          z
  dz                       t           dz  k    sJ t          t          j
                  t          d	z  k    sJ t          t          dd                    t           d	z  k    sJ t          t          dt          d          z
            dz            t          dz  k    sJ t          t          dt          d          z
             dz            t           dz  k    sJ t          t          d          dz
  dz            t          d
z  k    sJ t          t          d          dz
   dz            t           d
z  k    sJ t          t          d          dz
  t          d          z            t          dz  k    sJ t          t          d          dz
   t          d          z            t           dz  k    sJ dD ]k} t          | dz   | dz  dz             D ]N}t          ||           dk    r8t          t          |t          z  | z                      |t          z  | z  k    sJ Olt          t                                        t                    dt          dt          dz  z
            z  k    sJ t          dd          j        du sJ t          d          j        du sJ t          t$                    j        J t          dt
          z            t
           t'          d          z  k    sJ t          t          dd          d          j        du sJ t          t          dd          d          j        du sJ t          t*                    j        J t          t          t          dd                              t          dd          t          z   k    sJ t          t          t          dd                              t          dd          t          z
  k    sJ t-          t           t/          t                              sJ d S )Nrh   r   rk   ri   ry   rm   rl   r|   rn   rp   r~   rl   rn   r|   rp   r~   皙?Fr   Trj   rr   r   )r'   r   r   r;   r   r   r   r   r"   r   r   r   r   r6   r.   r   r   r   rH   r   is_positiverM   r>   r*   )r   rP   s     r   	test_asinr8    sj   99:1%%%%88r"u99"99 77a<<<<77bd????88s1uQ	??bd""""a
s1u$$$$Q	??bd""""a
s1u$$$$a$q''k1_%%&&"Q$....q477{Ao&&&''B3q50000<<2a4Q  RCE))))a$q''k""A%&&"Q$....$q477{##$Q&''B3q50000a1a  BrE))))$q''A+q !!bSV++++a1d4jj())RU2222$q''A+tDzz)**rc"f4444  3 3Aw1q)) 	3 	3A1ayyA~~C"QKK((AbDF2222	3 77<<??aQAX.....e$$$,444488u$$$$77?"""1::!E!HH$$$$A///;tCCCCQ%000<EEEE77&&&HQNN##$$Q"(<<<<<HROO$$%%!Q")<<<<<T3q66"""""""r   c                     t          t                                        t          dd          t          t          dz  dz  z   dt          dz  z  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t                                        dt                    } | dt          dz  z  dz  k    sJ t          t                                        dt          | d          dt          dz  z  dz  k    sJ d S )	Nr   r   ry   rn   rl   r   rr   p   )r'   r   r9   r8   r  t5s    r   test_asin_seriesr=    s    77>>!Q""	AqDF
Qq!tVBY1a4+a1gg56 6 6 6	a		Q	"	"B1a4????77q!R++qAvcz999999r   c            	         t          t                                        t                    t          k    sJ t          t          dz                                 t                    t          dz  k    sJ t          t          dz
                                t                    t           dz  k    sJ t          dt          z                                t          d          t          t          t                    z  t          dz  z   t          t          d          z  z
  k    sJ t          dt          z                                t          d          t           t          t                    z  dt          z  dz  z
  t          t          d          z  z   k    sJ t          t          t          z  dz                                 t          d          t          t          d          z
  k    sJ t          t           t          z  dz                                 t          d          t          d          k    sJ t          t          t          z  dz
                                t          d          t          d           k    sJ t          t           t          z  dz
                                t          d          t           t          d          z   k    sJ t          t           t          dz  z  t          z   dz
                                t          d          t           dz  t          t          dt          d          z
            z  z   k    sJ t          t           t          dz  z  t          z   dz
                                t          d          t           dz  t          t          dt          d          z
            z  z   k    sJ d S )Nrh   rk   cdirri   ry   )r'   r   r   r   r   r   r"   r   r   r   test_asin_leading_termrA    s   77""1%%****A;;&&q))RT1111A;;&&q))bSU2222!99$$QQ$//1SVV8bd?Qs1vvX3MMMMM!99$$QR$00QBs1vvI"Q4F3q664QQQQQ!a==(((33rDGG|CCCC1q>>))!!)44Q????!a==(((33Qx????1q>>))!!)44d1ggEEEE1a4!a  000;;s1uqQQUVWQXQX[IYIYGY?YYYYY1a4!a  000<<A#aRVWXRYRYkJZJZHZ@ZZZZZZZr   c                  X   t          t                                        t                    t           t          t          t          z  t          dt          dz  z
            z             z  k    sJ t          t                                        t                    dt          t          dt          dt          dz  z
            z   z            z  k    sJ t          t                                        t                    t          j	        dz  t          t                    z
  k    sJ t          t                                        t                    dt          t          t          dz   dz             dz   t          z            z  k    sJ t          t                                        t                    t          dt          z             t          dz  z   k    sJ t          t                                        t                    t          dt          z            k    sJ d S )Nrh   rk   )r'   r   r   r   r   r"   r(   r#   r   r   r$   r&   r   r%   r   r   r   test_asin_rewriterC    s|   77??3A2c!A#QAX*>&?&?#?????77??4  Ad1a$q1a4x...@+A&B&B$BBBBB77??4  ADFT!WW$4444477??4  AdD!Q$OOa,?+B&C&C$CCCCC77??4  T!A#YYJA$5555577??4  D1II------r   c                      t          t                                                    dt          dt          dz  z
            z  k    sJ t	          t
          d            d S )Nrh   rk   c                  P    t          t                                        d          S r   )r'   r   r   r   r   r   r   z!test_asin_fdiff.<locals>.<lambda>      tAww}}Q'7'7 r   )r'   r   r   r"   rG   r?   r   r   r   test_asin_fdiffrG    sO    77==??aQAX.....
7788888r   c                  
   t          t                    t          u sJ t          t                    t          u sJ t           j        t	          d          k    sJ t          t
                    t          t
          z  k    sJ t          t
                     t           t
          z  k    sJ t          d          t          dz  k    sJ t          t          j	                  t          dz  k    sJ t          t          dd                    t          t          dd          z  k    sJ t          d          dk    sJ t          d          t          k    sJ t          t          d          dz            t          dz  k    sJ t          t          d           dz            t          t          dd          z  k    sJ dD ]`} t          |           D ]N}t          ||           dk    r8t          t          |t          z  | z                      |t          z  | z  k    sJ Oat          dt          z            t          dz  t          dt          z            z
  k    sJ t          t                                         t                     dt          dt           dz  z
            z  k    sJ t          d          j        d	u sJ t          d
          j        du sJ t          t&                    j        J t          t          dd          d          j        d	u sJ t          t          dd          d          j        d	u sJ t          t          dd          d          j        du sJ t          t*                    j        J t          dt*          z                                             t          dt*          z             k    sJ t          dt.          z                                             t          dt.          z             k    sJ t          t          dd                                                    t          t          dd                    k    sJ t          t          dd                                                    t          t          dd                    k    sJ t          t*          t.          t          z  z                                             t          t*          t.          t          z  z
            k    sJ t          t0                                                    t          t-          t0                              k    sJ d S )Nrh   r   rk   ry   ri   rm   r5  r6  Trj   Frr   r   rp   ro   )r#   r   r   r   r;   r   r   r   r   r   r   r"   r   r6   r*   r'   r   r   r   rH   r7  rM   r   rP   re   )r   nums     r   	test_acosrJ    sZ   9999:1%%%%88qt992 77bd????<<2a4Q  Bx1~~$5555577a<<<<88r>>>>Q	??bd""""a
r(1a..00000  7 788 	7 	7C3{{aCBqMM**c"fQh6666	7 !991tAaCyy(((((77<<??ba!Q$h/////99$$$$88u$$$$77?"""A///;tCCCCQ%000<DDDDA///;uDDDD77&&&A;;  ""d26ll2222Q<<!!##tBF||3333A))++tHQNN/C/CCCCCQ  **,,Xb!__0E0EEEEEAaC==""$$Q1W555577$y||"4"4444444r   c                     t          t                                        t                    t          dz  k    sJ t          t          dz                                 t                    t	          d          t	          t                     z  k    sJ t          t          dz
                                t                    t          k    sJ t          dt          z                                t          d          t
           t          t                    z  t
          t          d          z  z   k    sJ t          dt          z                                t          d          t
          t          t                    z  dt          z  z   t
          t          d          z  z
  k    sJ t          t
          t          z  dz                                 t          d          t          d           k    sJ t          t
           t          z  dz                                 t          d          t          d          k    sJ t          t
          t          z  dz
                                t          d          t          d          k    sJ t          t
           t          z  dz
                                t          d          dt          z  t          d          z
  k    sJ t          t
           t          dz  z  t          z   dz
                                t          d          t          t
          t          t	          d          dz             z  z   k    sJ t          t
           t          dz  z  t          z   dz
                                t          d          t          t
          t          t	          d          dz             z  z   k    sJ d S )Nrk   rh   r?  ri   rj   ry   )r#   r   r   r   r"   r   r   r   r   r   test_acos_leading_termrL    s   77""1%%A----A;;&&q))T!WWT1"XX-=====A;;&&q))R////!99$$QQ$//A2c!ff9qQx3GGGGG!99$$QR$00Ac!ffHqtOaAh4NNNNN!a==(((33Qx????1q>>))!!)44Q????!a==(((33tBxx????1q>>))!!)44"tBxxGGGG1a4!a  000;;rAc$q''TU+FVFVDV?VVVVV1a4!a  000<<Qs4PQ77UV;GWGWEW@WWWWWWWr   c                     t          t                                        t          dd          t          dz  t          z
  t          dz  dz  z
  dt          dz  z  dz  z
  dt          dz  z  d	z  z
  t	          t          dz            z   k    sJ t          t                                        t          dd          t          dz  t          t                                        t          dd          z
  k    sJ t          t                                        dt                    } | d
t          dz  z  dz  k    sJ t          t                                        dt          | d          dt          dz  z  d	z  k    sJ t          t                                        dt                    t          dz  k    sJ t          t                                        dt                    t          j        u sJ d S )Nr   r|   rk   ry   rn   rl   r   rr   r:  ro   r{   )	r#   r   r9   r   r8   r'   r  r   r   r;  s    r   test_acos_seriesrN    s   77>>!Q""
1q1a46AadF2I%!Q$s
2Qq!tWW<= = = =77>>!Q""bdT!WW^^Aq!-D-D&DDDDD	a		Q	"	"BAqD77q!R++r!Q$ws{::::77q!$$1,,,,77q!$$......r   c                     t          t                                        t                    t          dz  t
          t          t
          t          z  t          dt          dz  z
            z             z  z   k    sJ t          t                                        t                    t          t           t          t          dz            z  dz   z  dz  t          t          dt          dz  z
            t          z            z   k    sJ t          d                              t                    t          j	        dz  k    sJ t          d                              t                    t          d                              t                    k    sJ t          t                                        t                    t          j	        dz  t          t                    z
  k    sJ t          t                                        t                    dt          t          t          dz   dz             dz   t          z            z  t          dz  z   k    sJ t          t                                        t                    t          dt          z            k    sJ t          t                                        t                    t          dt          z             t          dz  z   k    sJ d S )Nrk   rh   rj   r         ?)r#   r   r   r   r   r   r"   r(   r   r   r'   r$   r&   r%   r   r   r   test_acos_rewriterQ  "  s   77??32a4!C!d1q!t8nn0D,E,E*E#EEEEE77??4  B4B==(81(<$=a$?$tAPQSTPTH~~VWGWBXBX$XXXXX77??4  ADF****99T""d3ii&7&7&<&<<<<<77??4  ADFT!WW$4444477??4  BtT1a4%!)__q-@!,C'D'D$Dr!t$KKKKK77??4  D1II----77??4  T!A#YYJA$5555555r   c                      t          t                                                    dt          dt          dz  z
            z  k    sJ t	          t
          d            d S )Nri   rh   rk   c                  P    t          t                                        d          S r   )r#   r   r   r   r   r   r   z!test_acos_fdiff.<locals>.<lambda>/  rF  r   )r#   r   r   r"   rG   r?   r   r   r   test_acos_fdiffrT  -  sO    77==??ba!Q$h/////
7788888r   c                     t          t                    t          u sJ t           j        t          d          k    sJ t          t                    t
          dz  k    sJ t          t                     t
           dz  k    sJ t          t                    t          t
           dz  t
          dz            k    sJ t          d          dk    sJ t          d          t
          dz  k    sJ t          t          d                    t
          dz  k    sJ t          dt          d          z              t
          t          dd          z  k    sJ t          t          ddt          d          z  z
                      t
          dz  k    sJ t          t          ddt          d          z  dz  z
                       t
           d	z  k    sJ t          t          ddt          d          z  dz  z                       t
          t          dd	          z  k    sJ t          d
t          d          z             t
           dz  k    sJ t          dt          d          z             t
          t          dd          z  k    sJ t          d
t          d          z
            t
          t          dd          z  k    sJ dD ]k} t          | dz   | dz  dz             D ]N}t          ||           dk    r8t          t          |t
          z  | z                      |t
          z  | z  k    sJ Olt          t                    t
          dz  k    sJ t          t                                        t                    ddt          dz  z   z  k    sJ t          t                    j        du sJ t          d
t"          z            t"           t%          d          z  k    sJ t'          t           t)          t                              sJ t          t)          t          dd                              t          dd          t
          dz  z   k    sJ t+          t          dd                    j        du sJ t          t.          t0          t2          t4          t6          t8          t:          t<          t>          t@          fD ]}|j        s|j!        |j"        t          |          j"        u sJ |j#        t          |          j#        u sJ |j$        t          |          j$        u sJ |j%        t          |          j%        u sJ |j&        t          |          j&        u sJ n|j'        t          |          j"        u sJ |j(        t          |          j#        u sJ |j)        t          |          j$        u sJ |j*        t          |          j%        u sJ |j+        t          |          j&        u sJ |j'        t          |          j'        u sJ |j(        t          |          j(        u sJ |j)        t          |          j)        u sJ |j*        t          |          j*        u sJ |j+        t          |          j+        u sJ d S )Nrh   rk   r   rm   ry   ro   r|   rl   rp   rj   r~   r{   r5  Tri   F),r(   r   r   r;   r   r   r   r   r"   r   r   r6   r0   r   r   rH   r   r   r   r>   r+   r$   r   rM   rP   npnnrV   rX   rZ   enpennr^   r   
is_nonzeror7  is_negativeis_nonpositiveis_nonnegativeis_extended_nonzerois_extended_positiveis_extended_negativeis_extended_nonpositiveis_extended_nonnegative)r   rI  r*  s      r   	test_atanrc  2  s   99:1%%%%88r!t99A99RCE2a400000077a<<<<77bd????Q==BqD    !d1gg+2hr1oo#55555QT!WW_%%&&"Q$....a!d1gg+q.()))**rc"f4444QT!WWq())**b!R.@@@@@T!WW"R''''DGG8Ar?? 22222T!WWHR$4$4!44444  7 71a4!Q$(++ 	7 	7C3{{aCBqMM**c"fQh6666	7 88r!t77<<??aQTl****77?d""""1::!E!HH$$$$T3q66"""""HQNN##$$Q"Q$(>>>>>A+u4444Ar2r2r3S9 L L9 	G*2<477#55555=DGG$77777=DGG$77777#tAww'=====#tAww'======(DGG,>>>>>)T!WW-@@@@@)T!WW-@@@@@,Q0FFFFF,Q0FFFFF$Q(CCCCC%a)EEEEE%a)EEEEE(DGG,KKKKK(DGG,KKKKKK#L Lr   c            	      l   t          t                                        t                    t          t          dt          t          z  z
            t          dt          t          z  z             z
  z  dz  k    sJ t          t                                        t
                    t          dt          t          dz  dz             z             t          dz  z   t          t          dz            z  t          z  k    sJ t          t                                        t                    t          t          dz            t          dt          t          dz  dz             z            z  t          z  k    sJ t          t                                        t                    t          dt          z            k    sJ t          t                                        t                    t          t          dz            t          t          t          dz  dz                       z  t          z  k    sJ t          t                                        t                    t          t          t          dz  dz                        t          dz  z   t          t          dz            z  t          z  k    sJ t          dt          z                                            t          t                                        t                                        t          dt          z  i          k    sJ t          dt          z                                            t          t                                        t                                        t          dt          z  i          k    sJ d S )Nrh   rk   r{   r   rl   )r(   r   r   r   r   r'   r"   r   r#   r$   r&   r%   r  r   r   r   test_atan_rewriterf  i  s|   77??31c!ac'll3q1Q3w<<&?#@#BBBBB77??4  d1T!Q$(^^+;&<&<%<r!t%CT!Q$ZZ$OPQ$QQQQQ77??4  DAJJtAd1a4!8nn4D/E/E$Ea$GGGGG77??4  D1II----77??4  DAJJtDANN/C/C$CA$EEEEE77??4  d41q>>&:&:%:RT%A41::$Ma$OOOOO1::a!5!5!;!;!BqD!;!J!JJJJJ!99??Q 4 4 : :1Q3 : H HHHHHHHr   c                      t          t                                                    dt          dz  dz   z  k    sJ t          t          d            d S )Nrh   rk   c                  P    t          t                                        d          S r   )r(   r   r   r   r   r   r   z!test_atan_fdiff.<locals>.<lambda>w  rF  r   )r(   r   r   rG   r?   r   r   r   test_atan_fdiffri  u  sH    77==??aAl****
7788888r   c                  
   t          t                                        t                    t          k    sJ t          dt          z                                t          d          t          dz  k    sJ t          dt          z                                t          d          t           dz  k    sJ t          t          t          z                                 t          d          t           t          t                    z  dz  t          dz  z   t          t          d          z  dz  z   k    sJ t          t          t          z                                 t          d          t           t          t                    z  dz  dt          z  dz  z
  t          t          d          z  dz  z   k    sJ t          t          t          z
                                t          d          t          t          t                    z  dz  t          dz  z   t          t          d          z  dz  z
  k    sJ t          t          t          z
                                t          d          t          t          t                    z  dz  t          dz  z   t          t          d          z  dz  z
  k    sJ t          t          dt          z  z                                 t          d          t          t          d          z  k    sJ t          t          dt          z  z                                 t          d          t           t          t          d          z  z   k    sJ t          t          dt          z  z
                                t          d          t          t          t          d          z  z
  k    sJ t          t          dt          z  z
                                t          d          t           t          d          z  k    sJ t          dt          z  t          t          z  z
  t          dz  z
                                t          d          t           dz  t          t          d          z  dz  z   k    sJ t          dt          z  t          t          z  z
  t          dz  z
                                t          d          t           dz  t          t          d          z  dz  z   k    sJ d S )Nrh   r?  rk   ri   rm   ry   )r(   r   r   r   r   r   r   r   r   r   test_atan_leading_termrk  z  s   77""1%%****!99$$QQ$//2a47777!99$$QR$00RCE9999A;;&&qq&11aRAYq[2a45G!CPQFF(ST*5TTTTTA;;&&qr&22qbQikAbDF6JQsSTvvXVWZ6WWWWWA;;&&qq&11Qs1vvXaZ"Q$5F3q66RS5SSSSSA;;&&qr&22aAhqj2a46G!CPQFF(ST*6TTTTTAaC==(((33qqzAAAAAaC==(((44aaj8HHHHHAaC==(((33rAeAhhJFFFFAaC==(((44588CCCC!ac	AqD !!11!!1<<A#a&&QR
@RRRRR!ac	AqD !!11!"1=="Q3q66RSASSSSSSSr   c                  2  	
 t           j        t          d          k    sJ t          dd          t          j        u sJ t          dd          dk    sJ t          dd          t
          dz  k    sJ t          dd          t
          dz  k    sJ t          dd          t
          t          dd          z  k    sJ t          dd          t
          k    sJ t          dd          t
          t          dd          z  k    sJ t          dd          t
           dz  k    sJ t          dd          t
           dz  k    sJ t          dd	
          } t          dd	          }t          ||           }t           t          | t          |z  z   t          | dz  |dz  z             z            z  }|df| t          ff}|                    |          |                    |          k    sJ t          dd	          	t          dd	          
t          
	          t          
	z            t
          z
  k    sJ t          dd	          
t          
	          t          
	z            t
          z   k    sJ t          d          
t          
	          t          
	d          k    sJ t          dd	          }t          d|          dk    sJ t          dd	          }t          d|          t
          k    sJ t          
t                    dk    sJ t          
t                     dt
          z  t          t!          
          t          j                  z  t
          z
  k    sJ t          
	                              t                    t           t          	t          
z  z   t          	dz  
dz  z             z            z  k    sJ t          dd          t          j        u sJ t          
	          t'          	t          
z  z             z
  }|                    	d
di                              t&                    dk    sJ |                    	d
dt          z  i                              t&                    t
           t          t          t          d          t          z  dz            z  z
  k    sJ |                    	dt          z  
di                              t&                    t
           dz  t          t          t          d          t          z            z  z
  k    sJ |                    	dt          z  
dt          z  i                              t&                    t
           t          t          dd                    z   t          t          dd                    z   k    sJ t          dd	
          } t          dd	          }t          | |          }|                    t&                    }| t          |di}|t           t          t)          t          | z  |z             t          t)          | dz  |dz  z                       z            z  t'          t          | z  |z   t          | dz  |dz  z             z            z   k    sJ ||z
                      |                              d          sJ t          d	                              t                    t-          t
          t!          	          dk     fdt/          	d          ft0          d	f          k    sJ t          d|                              t                    t-          t
          |dk     fdt/          |d          ft          j        d	f          k    sJ t          d|           sJ  |t                    dk                t          d|| z                                 t                    t-          t
          |dk     fd          k    sJ t          
	                              t                    t-          dt          
	t          	dz  
dz  z             z   z            z  t/          
d          ft
          t!          	          dk     fdt!          	          dk    t/          t3          	          d          z  ft0          d	f          k    sJ t5          t          	
                    t          t5          	          t5          
                    k    sJ t7          t          
	          	          
 	dz  
dz  z   z  k    sJ t7          t          
	          
          		dz  
dz  z   z  k    sJ t9          t7          t          
	                              t                    	                    
 	dz  
dz  z   z  k    sJ t9          t7          t          
	                              t                    
                    		dz  
dz  z   z  k    sJ t;          t          dd                              d                    dk    sJ t?          t@          	
fd           d S )Nrk   r   rh   rm   ri   ry   ro   r   Trf   rH   rI   r   rQ   r   rT   Fr   urN   rl   rj   )r   Tz0.46365c                  J    t                                         d          S )Nry   )r)   r   )r   r   s   r   r   ztest_atan2.<locals>.<lambda>  s    uQ{{'8'8';'; r   )!r)   r   r;   r   r1  r   r   r   r   r   r"   r   r   r(   r   r3   r   r   r   r   r   equalsrC   rA   r   r   r   r   r=   strr  rG   r?   )r   rH   eqansrepsrm  exrw   r   r   r   s            @@r   
test_atan2ru    s\	   ;)A,,&&&&A;;!%A;;!A;;"Q$A;;"Q$B<<2hq!nn,,,,,B<<2R==BxA.....Q<<B3q5    Q<<B3q5    t$$$A$A	q!B"S!ac'41q!t,,,--
-CFQFD774==CHHTNN****sT"""AsT"""AA;;$qs))b.((((s%%%AA;;$qs))b.((((sAA;;%1u5555555sT"""AA;;!sT"""AA;;"B<<ARC==AbD2a55!&!9!99B>>>>>A;;s##r#q1Q3wQTAqD[8I8I.I*J*J'JJJJJA;;!%	q!s1qs7||	#B77Aa1:&&s++q000077Aa1Q3<  ((--"qT!WWQYq[9I9I7I1IIIII77Aac1Q<  ((--"Q3tAwwqy>>9I1IIIII77Aac1QqS>""**3//B3hq!nn9M9M3MPTU]^_abUcUcPdPd3dddddt$$$A$AaAiinnGq!R=DqbS1q\\$s1a4!Q$;/?/?*@*@@AAAC1qRVWXZ[W[^_ab^bWbRcRcHcDdDddddddKd##**1-----A;;t$$	2r!uuqy/-.1aM-0$K)9 )9 9 9 9 9 A;;t$$	2q1u+2a88}quVZm(\(\\\\\A;;))wwt}}))))AE??""4((Ir1q5k9,M,MMMMMA;;t$$	tAq41q!t,,,-...1a9AOAbAll*+$K	) )    
 U1a[[!!U9Q<<1%F%FFFFFaQA2q!tad{#33333aQ1adQTk?2222Dq!,,S11155661"adQTk:JJJJJDq!,,S11155661adQTk?JJJJuQ{{  ##$$	1111
;;;;;<<<<<r   c                       G d dt                     }  | d          } | d          }t          t          ||                                          dz
            dk    sJ d S )Nc                       e Zd ZdZd ZdS )test_issue_17461.<locals>.ATc                      t          d          S )Ng      @)r
   )selfprecs     r   _eval_evalfz'test_issue_17461.<locals>.A._eval_evalf  s    ::r   N)__name__
__module____qualname__r   r|  r   r   r   Arx    s)        	 	 	 	 	r   r  XYg-DT!?r   )r   r   r)   r  )r  r   r   s      r   test_issue_17461r    s        F    	
#A	#AuQ{{  ""%66775@@@@@@r   c                     t          t                    t          u sJ t           j        t          d          k    sJ t          t                     dk    sJ t          t                    dk    sJ t          t
                    dk    sJ t          d          t          dz  k    sJ t          d          t          dz  k    sJ t          t          d          dz            t          dz  k    sJ t          dt          d          z            t          dz  k    sJ t          dt          d          z            t           dz  k    sJ t          t                    	                    t                    ddt          dz  z   z  k    sJ t          t                    j        du sJ t          t          t          z            t           t          t                    z  k    sJ t          dt          z            t          t          d          z  k    sJ t          t                    j        J t          t                    j        d	u sJ t          t                     j        du sJ t          t                    j        d	u sJ t          t#          dd                    j        d	u sJ t'          t           t)          t                              sJ t'          t           t+          t                              sJ t          t)          t#          dd                              t#          dd          k    sJ t          t+          t#          dd                              t#          dd          t          dz  z
  k    sJ d S )
Nrh   r   rm   rk   ry   ri   Trj   F)r$   r   r   r;   r   r   r   r"   r   r   rH   r   r   r   r7  rP   rM   r   r   r>   r+   r0   r   r   r   	test_acotr    s   99:1%%%%99>>>>88q====99>>>>77bd????77bd????Q	??bd""""$q''	??bd""""477
s1u$$$$77<<??b!ad(m++++77#t++++"::!E"II%%%%1::588####77&&&77%''''77$&&&&77%''''A+u4444T3q66"""""T3q66"""""HQNN##$$A6666HROO$$%%!Q"Q$)>>>>>>>r   c            	         t          t                                        t                    t          t          dt          t          z  z
            t          dt          t          z  z             z
  z  dz  k    sJ t          t                                        t
                    t          t          t          t          dz             t          t          dz   dz
            z             t          dz  z   z  t          t          dz            z  k    sJ t          t                                        t                    t          t          t          dz            z  t          t          t          dz             t          t          dz   dz
            z            z  k    sJ t          t                                        t                    t          dt          z            k    sJ t          t                                        t                    t          t          t          dz            z  t          t          t          dz  dz   t          dz  z                      z  k    sJ t          t                                        t                    t          t          t          t          dz  dz   t          dz  z                       t          dz  z   z  t          t          dz            z  k    sJ t          t           dz                                            t          t                                        t                                        t          t           dz  i          k    sJ t          t          dz                                            t          t                                        t                                        t          t          dz  i          k    sJ d S )Nrh   rk   rj   rl   re  )r$   r   r   r   r   r'   r"   r   r#   r(   r&   r%   r  r   r   r   test_acot_rewriter    s   77??31c!ac'll3q1Q3w<<&?#@#BBBBB77??4  AT1a4%[[q!teai-H(I(I'IBqD'P$QRVWX[]W^R_R_$_____77??4  Ad1r7mmODq!teT1a4%RS)__9T4U4U$UUUUU77??4  D1II----77??4  Ad1r7mmODq!taxAo9N9N4O4O$OOOOO77??4  AT1a4!8QT/-B-B(C(C'Cbd'J$KDQRUWQXMM$YYYYY1::a!5!5!;!;!QBqD!;!J!JJJJJ!99??Q 4 4 : :1Q3 : H HHHHHHHr   c                      t          t                                                    dt          dz  dz   z  k    sJ t          t          d            d S )Nri   rk   rh   c                  P    t          t                                        d          S r   )r$   r   r   r   r   r   r   z!test_acot_fdiff.<locals>.<lambda>  rF  r   )r$   r   r   rG   r?   r   r   r   test_acot_fdiffr  
  sH    77==??b!Q$(m++++
7788888r   c                  
   t          dt          z                                t                    t          k    sJ t          t          t          z                                 t          d          t          t	          t                    z  dz  t
          dz  z   t          t	          d          z  dz  z
  k    sJ t          t          t          z                                 t          d          t          t	          t                    z  dz  t
          dz  z   t          t	          d          z  dz  z
  k    sJ t          t          t          z
                                t          d          t           t	          t                    z  dz  t
          dz  z   t          t	          d          z  dz  z   k    sJ t          t          t          z
                                t          d          t           t	          t                    z  dz  dt
          z  dz  z
  t          t	          d          z  dz  z   k    sJ t          t                                        t          d          t
          dz  k    sJ t          t                                        t          d          t
           dz  k    sJ t          t          t          dz  z                                 t          d          t
          t          t          t          d          dz            z  z
  k    sJ t          t          t          dz  z                                 t          d          t           t          t          d          dz            z  k    sJ t          t          t          dz  z
                                t          d          t          t          t          d          dz            z  k    sJ t          t          t          dz  z
                                t          d          t
           t          t          t          d          dz            z  z   k    sJ t          t          dz  t          t          z  z
  t          dz  z
                                t          d          t
           dz  t          t	          d          z  dz  z
  k    sJ t          t          dz  t          t          z  z
  t          dz  z
                                t          d          t
           dz  t          t	          d          z  dz  z
  k    sJ d S )Nrh   r?  rk   rm   ri   ry   )r$   r   r   r   r   r   r   r   r   r   r   test_acot_leading_termr    s   !99$$Q''1,,,,A;;&&qq&11Qs1vvXaZ"Q$5F3q66RS5SSSSSA;;&&qr&22aAhqj2a46G!CPQFF(ST*6TTTTTA;;&&qq&11aRAYq[2a45G!CPQFF(ST*5TTTTTA;;&&qr&22qbQikAbDF6JQsSTvvXVWZ6WWWWW77""11"--A555577""12"..2#a%7777AaC==(((33rAeAaDDFmmO7KKKKKAaC==(((4451a==8HHHHHAaC==(((33qqttAvFFFFAaC==(((44aadd1fo8MMMMM!ac	AqD !!11!!1<<A#a&&QR
@RRRRR!ac	AqD !!11!"1=="Q3q66RSASSSSSSSr   c                  P    t          t                    j        t          fk    sJ d S N)r.   r   argsr   r   r   test_attributesr  !  s#    q66;1$r   c                     t          t          dz  t          z
            t          t                    k    sJ t          t          t          z
            t          t                    k    sJ t          t          dz  t          z
            t          t                    k    sJ t          t          t          z
            t          t                     k    sJ d S r   )r.   r   r   r*   r   r   r   test_sincos_rewriter  %  s    r!tax==CFF""""rAv;;#a&&    r!tax==CFF""""rAv;;3q66'!!!!!!r   c                 8     | |          j         d         | k    S )zMChecks that the expr has been rewritten using f(-x) -> f(x)
    arg : -x
    r   r  r   r   s     r   _check_even_rewriter  ,  s      499>!$$r   c                 ,     | |          j         j        S )zNChecks that the expr has been rewritten using f(-x) -> -f(x)
    arg : -x
    )r   is_Mulr  s     r   _check_odd_rewriter  3  s     499>  r   c                 6     | |          j         d         |k    S )z%Checks that the expr is not rewrittenr   r  r  s     r   _check_no_rewriter  :  s    499>!##r   c                     t          d          } t          d          }t           g}t          t          t          t          t
          t          g}dddz   t          z  t           dz  t           t          z  t           t          z
  g}|D ]b}|D ]}t          ||          sJ t          || |z            sJ  |t          t          z
             |t          t          z
            k    sJ c|D ]c}|D ]}t          ||          sJ t          || |z            sJ  |t          t          z
             |t          t          z
             k    sJ dd S )Nrk   rh   ri      r   )r*   r.   r0   r+   r'   r(   r$   r	   r   r   r   r  r  r  )r`   brv   odd
with_minusr   exprs          r   test_evenodd_rewriter  ?  s   AAAA5DS$d
+Cq$whlRCGaRTA26:J " " 	3 	3D&tT222222 qs+++++tE d1q5kk" " " " " # # 	2 	2D%dD111111 qs+++++tE tAE{{l# # # # #	# #r   c                     t          t                                        t                    t          k    sJ t          t                                        t                    dk    sJ t	          t                                        t                    t          k    sJ t          t                                        t                    dt          z  k    sJ d S Nrh   )r.   r   r   r*   r0   r+   r   r   r   test_as_leading_term_issue_5272r  S  s    q66!!!$$))))q66!!!$$))))q66!!!$$))))q66!!!$$!++++++r   c                     t          dt          z                                t                    t          dd          k    sJ t          t          j                                      t                    t          t          j                  k    sJ t          dt          z                                t                    t          dd          k    sJ t          t          j                                      t                    t          t          j                  k    sJ t          dt          z                                t                    t          t          j        t          j	                  k    sJ t          dt          z                                t                    t          t          j        t          j	                  k    sJ t          dt          z                                t                    t          t          j        t          j	                  k    sJ t          dt          z                                t                    t          t          j        t          j	                  k    sJ t          t          t          dz   z            dt          z  z  } |                     t                    t          dz  k    sJ d S )Nrh   ri   rm   ry   )r.   r   r   r   r   r   r*   r-   r0  r/  r,   r0   r+   r   r   s    r   test_leading_termsr  Z  s   qs88##A&&+b!*<*<<<<<qv;;&&q))S[[8888qs88##A&&+b!*<*<<<<<qv;;&&q))S[[8888qs88##A&&+a6H!**U*UUUUUqs88##A&&+a6H!**U*UUUUUqs88##A&&+a6H!**U*UUUUUqs88##A&&+a6H!**U*UUUUU 	BAJ1AQ2a4''''''r   c                     t          t          t          dz  t          dz                                 t                    t	          t          dz  t          dz   z                                t                    z
            dk    sJ t          t	          t
          t          z                                t
          dd          t          t
          t                                        t
          dd          z
  t          dt                    z   t	          d          z
            t          t
          dz            k    sJ t          t	          t
          t          z                                t          dd          t          t
          t                                        t          dd          z
  t          t
          d          z   t	          t
                    z
            t          t          dz
  dz  t          df          k    sJ t          t	          t
          t          z   t          z                                t          dd          t          t
          t          z   t                                        t          dd          z
  t          dt
          z   d          z   t	          dt
          z             z
            t          t          dz
  dz  t          df          k    sJ t          t          t
          t                    g          	                    t
          t          g          t          t          t
          dz  t          dz  z   z  t
           t
          dz  t          dz  z   z  gg          k    sJ d S )Nrk   rh   r   rl   rm   ry   )
r5   r)   r   r   r(   r   r9   r8   r4   jacobianr   r   r   test_atan2_expansionr  i  s   %1a!e$$))!,,tAqD!a%L/A/A/F/Fq/I/IIJJaOOOO$qs))""1a++eAqkk.@.@Aq.I.II!QKK "&q''* + +./1gg6 6 6 6$qs))""1a++eAqkk.@.@Aq.I.II!QKK "&q''* + +./Q
QF.C.CD D D D$Aqy//((Aq11E!a%OO4J4J1aQR4S4SS!a%OO$&*1q5kk2 3 367Q
QF6K6KL L L L5A;;-  ))1a&11AqD1a4K1"adQTk"234556 6 6 6 6 6r   c                      d }  | t           ddd            | t           ddd            | t          ddd            | t          ddd           d S )Nc                    t           | d|z                                             | dt          z                                t          |                                                              t          |          z
            |k     sJ d S )Nrh   )dir)r   r  r   r9   removeOr   )rP   vr   rw   s       r   tztest_aseries.<locals>.tv  s    AacFFLLNNQQqsVV]]1!]44<<>>CCAqIIIK KMNO O O O O Or   g?+gh㈵>g-)r(   r$   )r  s    r   test_aseriesr  u  st    O O O AdCdAdD#tAdCdAdD#tr   c                     t          dd          } t          dd          }t          dd          }t          d| z  t          z            d	k    sJ t          d| z  t          z            d
k    sJ t	          d| z  t          z            d
k    sJ t          d| z  t          z            t          u sJ t          d| z  t          z            t          t          | z            k    sJ t          d| z  t          z            d
k    sJ t	          d| z  t          z            d
k    sJ t          d| z  t          z            t          u sJ t          d| z  t          z            d	k    sJ t          d| z  t          z            d
k    sJ t	          d| z  t          z            d
k    sJ t          d| z  t          z            t          u sJ t          d| z  t          z            t          t          | z            k    sJ t          d| z  t          z            d
k    sJ t	          d| z  t          z            d
k    sJ t          d| z  t          z            t          u sJ t          d| z  t          z            t          dt          z  | z            k    sJ t          d| z  t          z            t          dt          z  | z            k    sJ t	          d| z  t          z            t	          dt          z  | z            k    sJ t          d| z  t          z            t          dt          z  | z            k    sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            t          dt          z  |z            k    sJ t          d|z  t          z            t          dt          z  |z            k    sJ t	          d|z  t          z            t	          dt          z  |z            k    sJ t          d|z  t          z            t          dt          z  |z            k    sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            dk    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            d	k    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            dk    sJ t          d|z  t          z            d
k    sJ t	          d|z  t          z            d
k    sJ t          d|z  t          z            t          u sJ t          d|z  t          z            t          dt          z  |z            k    sJ t          d|z  t          z            t          dt          z  |z            k    sJ t	          d|z  t          z            t	          dt          z  |z            k    sJ t          d|z  t          z            t          dt          z  |z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t	          dt          z  t          z            t	          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t	          dt          z  t          z            t	          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t	          dt          z  t          z            t	          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t	          dt          z  t          z            t	          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ t	          dt          z  t          z            t	          dt          z  t          z            k    sJ t          dt          z  t          z            t          dt          z  t          z            k    sJ d S )Nr   TrK   rw   rx   o)r  rm   rh   r   ry   g      @g      @g      @rP  ri   )r   r*   r   r.   r0   r+   r   r   )r   rw   r  s      r   test_issue_4420r    s   sD!!!AsAsA qs2v;;!qs2v;;!qs2v;;!qs2v;;#qs2v;;#bd))####qs2v;;!qs2v;;!qs2v;;#s1uRx==As1uRx==As1uRx==As1uRx==Cs1uRx==C1II%%%%s1uRx==As1uRx==As1uRx==Cs1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM)))) qs2v;;!qs2v;;!qs2v;;!qs2v;;#qs2v;;!qs2v;;!qs2v;;!qs2v;;#s1uRx==As1uRx==As1uRx==As1uRx==Cs1uRx==As1uRx==As1uRx==As1uRx==Cs1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))qs2v;;!qs2v;;!qs2v;;!qs2v;;#qs2v;;"qs2v;;!qs2v;;!qs2v;;#s1uRx==As1uRx==As1uRx==As1uRx==Cs1uRx==Bs1uRx==As1uRx==As1uRx==Cs1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM)))) qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%qs2v;;#ad1f++%%%%s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))s1uRx==CBqMM))))))r   c                     t          t          d            t          t          d            t          t                                                    t
          k    sJ t          t                                                    t          k    sJ t          t          d            t          t          d            t          t                                                    t          k    sJ t          t                                                    t          k    sJ t          t                                                    t          k    sJ t          t                                                    t          k    sJ d S )Nc                  N    t          t                                                    S r  )r.   r   inverser   r   r   r   ztest_inverses.<locals>.<lambda>      3q66>>#3#3 r   c                  N    t          t                                                    S r  )r*   r   r  r   r   r   r   ztest_inverses.<locals>.<lambda>  r  r   c                  N    t          t                                                    S r  )r,   r   r  r   r   r   r   ztest_inverses.<locals>.<lambda>  r  r   c                  N    t          t                                                    S r  )r-   r   r  r   r   r   r   ztest_inverses.<locals>.<lambda>  r  r   )rG   AttributeErrorr0   r   r  r(   r+   r$   r'   r.   r#   r*   r   r   r   test_inversesr    s   
>33444
>33444q66>>t####q66>>t####
>33444
>3344477??####77??####77??####77??######r   c            	      
   t          dd          \  } }| |t          z  z   }dD ]}t          |                              |          t          |           t	          |          z  t          |           t          |          z  fk    sJ t          |                              |          t          |           t	          |          z  t          |            t          |          z  fk    sJ t          |                              |          t          d| z            t          d| z            t	          d|z            z   z  t          d|z            t          d| z            t	          d|z            z   z  fk    sJ t          |                              |          t          d| z             t          d| z            t	          d|z            z
  z  t          d|z            t          d| z            t	          d|z            z
  z  fk    sJ t          |                               |          t          |           dfk    sJ t          |                               |          t          |           dfk    sJ t          |                               |          t          |           dfk    sJ t          |                               |          t          |           dfk    sJ d S )Nza bTrI   )TF)deeprk   r   )	r   r   r.   as_real_imagr   r*   r    r0   r+   )r`   r  re   r  s       r   test_real_imagr    s   5t$$$DAq	AaCA = = ||&&3q66$q''>3q66$q''>*JK K K K ||&&3q66$q''>CFF7477?*KL L L L1vv"""--#ac((C!HH1II= 3QqS		3qs88d1Q3ii#782: : : : :1vv"""--3qs88)S1XX1II> 3QqS		3qs88d1Q3ii#782: : : : :1vv"""--#a&&!<<<<1vv"""--#a&&!<<<<1vv"""--#a&&!<<<<1vv"""--#a&&!<<<<<= =r   c                      t          t                    t          j        u sJ t	          t                    t          j        u sJ d S r  )r.   r   r   r1  r*   r   r   r   test_sin_cos_with_infinityr    s<     r77aer77aer   c                  (   dD ]} dD ]}|| z  }t          dt          |dz   dz  dz   d                    D ]}dt          ||          k    ri|t          z  |z  }t	          |                              t                    }t          |                              t                    }|                    t          t                    rJ d||fz              |                    t          t                    rJ d||fz              dt          t	          |
                    d                    |
                    d          z
            k    sJ d||fz              dt          t          |
                    d                    |
                    d          z
            k    sJ d||fz              t          t          d	z                                t                    t          t          t          d
z            dz  t          j        z             k    sJ t          t          t          dd          z  dz  d                              t                    t          t          t          t          dd          z             dz  t          j        z              k    sJ t          t          dt          t          j        d          d                              t                    dk    sJ t          t          dz  dz            }dt          t          d           dz             z  t          t          d          dz             z  dz  dt          d          z  t          t          d          dz             z  dz  z
  t          t          d          dz             t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z
  t          t          d           dz             t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z
  t          dd          z
  t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   dt          d          z  t          t          d          dz             z  dz  z   t          d          t          t          d           dz             z  dz  z   dt          d          z  t          t          d           dz             z  dz  z   t          d          t          t          d           dz             z  t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   dt          d          z  dz  z   t          d          t          t          d           t          t          d          dz             z  t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  dz  dt          d          z  t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z
  dt          d          z  t          t          d           dz             z  t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  dz  z
  t          d          t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             dz  z   t          j        z   t          t          d           dz             t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          d          t          t          d           dz             z  t          t          d          dz  t          d          t          t          d           dz             z  dz  z   t          d          t          dt          d          z  t          t          d          dz             z  t          d          t          t          d           dz             z  z
  t          d          t          t          d           dz             z  z   dt          d          z  z   dz             z  dz  z   t          dd          z             z  dz  z             z  dz  z   }|                    t                    |k    sJ |                                |                                k    sJ t          t          dz  dz                                t                    t	          t          dz            t	          t          t          dd          z            z  t          t          dz            t          t          t          dd          z            z  z   k    sJ d S )Nrh   ry   rl   rz   rh   r|   rh   rk   rp   r   MbP?rl   r   rr   r   r   Fr   rm   ri   ry   rz   ro   @   r      r   rn       r   r   r|   r   )r   minr6   r   r.   r   r"   r*   hasr   r  r   r   r   r   rP   )	rM   r  rP   r   r   s1c1rw   r`   s	            r   test_sincos_rewrite_sqrtr    s     d d 	d 	dA!A 1c1q51*q."5566 d dAq		>>"QAQ--BQ--B!vvc3//NN1EA1NNNN!vvc3//NN1EA1NNNN#c!''!**oo&C"D"DDDDFZ^_ab]cFcDDD#c!''!**oo&C"D"DDDDFZ^_ab]cFcDDDd	d$ r"u::d##tC1IIaK!&,@'A'AAAAAr(3"""2%666>> Bx2.///1AF:;;;< < < <s1b!&5111EBBBJJ    BqDGA
4b	BT"XX] 3 33B6	$r((
4R2&&&s*	+-1$r((
3 . .DGGDbB///$q''$Ry2~:N:N2NN
r((4b	B''
'(*+DHH*579: ; ;.;;=.>	> AEd2hhY
F A A2d1gg:d488b=111DGGD$r((
B = = 5 2hhtT"XXIN+++,./Rj9;=> ? ?A??BAC	C
 FNaQS__	U 	QRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	B	B 	
$q''	$tBxx"}%%%c)	* -1HHT488)b.5I5I,I#,M	N T!WW*T488)b.))
)#
-		. 15RtBxxi
? : : 1DGGDbB///$q''$Ry2~:N:N2NN
r((4b	B''
'(*+DHH*579: ; ;1;;>1?	? BC488B	O q''$QxT"XX] 3 33Db"Qd2hhY^$$$R':(QRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	B:B EMRQSDTDT:U 5V 5V V WXX 	
$q''	$tBxx{T!WWT488)b.-A-A%A"%DDQRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	BB 	R   	 r$q''z$tBxx"}*=*==QdSUhhY
N I I A  2hhtT"XXIN+++ ,./Rj 9;= > ? ?	? @B		B	B 	
$q''	$Ry2~&&&tDHHRKQd2hhY^$$$R'-(QRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	B-B EMRQSDTDT-U (V (V 	V WY	YY r((4Rd1ggdDHH9r>.B.B&B2&EEQRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	BB 	R    r$q''z$tBxx"}*=*==QdSUhhY
N I I A  2hhtT"XXIN+++ ,./Rj 9;= > ? ?? @B	BB$ 	T"XXb[4774b	B#7#77::QRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	BBDLRQSDTDTU 	V 	VVW	X%X* 	
+* tBxxi"n%%d488B;atBxxi
G B B :: ,abajd2hhm)<)<<Qd2hhY^$$$%'+Bxxd2hhY^0D0D'DE	$r((
   , 'r2..,/ '0 '0 0 15RQZT"XXPR]@S@S5SQd2hhY^$$$6%'+Bxxd2hhY^0D0D'D6E	$r((
66 1 1
 +4 #2hhtT"XXIN';';;Db"Qd2hhY^$$$R'B(QRQZT"XX] 3 33d1ggdDHH9
D ? ? 7 2hhtT"XXIN+++,./Rj9;=> ? ? 	??A	BBB 	R	B = =  	5   <  = *	  X 99T??a3355ACCEE>>>> r!tBw<<%%BqD		#b!R()))C1IIc"Xa__:L6M6M,MMN N N N N Nr   c                      t          t          dz                                t                                        d          t          t          dz                                d          k    sJ d S )Ni  r  )r*   r   r   r"   r  r   r   r   test_sincos_rewrite_sqrt_257r  c  sW    r#v;;t$$**2..#bf++2C2CB2G2GGGGGGGr   c                     dD ]} dD ]}|| z  }t          dt          |dz   dz  dz   d                    D ]}dt          ||          k    r|t          z  |z  }d|z  |k    rd|z  d|z  k    rt	          |                              t                    }|                    t          t                    rJ d||fz              dt          t	          |
                    d	                    |
                    d
          z
            k    sJ d||fz              |dk    r||k    rt          |                              t                    }|                    t          t                    rJ d||fz              dt          t          |
                    d	                    |
                    d
          z
            k    sJ d||fz              Րd S )Nr  r  rh   rk   rp   ry   r   r  rr   rm   r   )r   r  r6   r   r0   r   r"   r  r+   r   r  )rM   r  rP   r   r   t1r  s          r   test_tancot_rewrite_sqrtr  h  s     j j 	j 	jA!A1c1q51*q."5566 
j 
jAq		>>"QA!qQqSAaCZZ VV^^D11#%66#s#3#3RR5IQPQF5RRRR#c3qwwqzz??RXXa[[+H&J&JJJJL`deghciLiJJJQ166 VV^^D11#%66#s#3#3RR5IQPQF5RRRR#c3qwwqzz??RXXa[[+H&J&JJJJL`deghciLiJJJ
j	jj jr   c                     t          dd          } t          d          }t          j        t          d          k    sJ t          t                    t
          u sJ t          d          dk    sJ t          t                    dk    sJ t          t          dz            t          u sJ t          t           dz            t          u sJ t          t          d	z            dt          d
          z  d
z  k    sJ t          t          d
z            dk    sJ t          t          t          dd          z            t          u sJ t          t          t          dd          z            t          t          t          dd          z             k    sJ t          t          t          d
d          z            t          d           k    sJ t          t                    dt          d          z  k    sJ t          | t          z            dt          |           z  k    sJ t          |            t          |           k    sJ t          t          |                     | k    sJ t          |                                          t          t          |                    k    sJ t          |                                          t          t          |                    t          t!          |                    z  t#          t          |                    dz  t%          t!          |                    dz  z  t          t          |                    dz  t          t!          |                    dz  z  z   z  t#          t          |                    t%          t!          |                    z  t#          t          |                    dz  t%          t!          |                    dz  z  t          t          |                    dz  t          t!          |                    dz  z  z   z  fk    sJ t          |                               d          dt          |           z  k    sJ t          d| z                                d          ddt          |           dz  z  dz
  z  k    sJ t          |           j        dk    sJ t          |          j        d k    sJ t          t,                    j        J t          t0                    j        du sJ t          |                                           t          |           k    sJ t          dd          j        dk    sJ t          |           j        d k    sJ t          t          dz  d          j        dk    sJ t7          t          |           | dd	          d| dz  dz  z   d| dz  z  dz  z   t9          | d	z            z   k    sJ t7          t          t          |                               d| dz  dz  z   d| dz  z  dz  z   t9          | d	z            z   k    sJ t7          t          t          |                     | t          d
z  dz  d          dt          | t          t          d
d          z  z
            z  | t          t          d
d          z  z
  t          d
d          z  dz  z   | t          t          d
d          z  z
  t          dd          z  dz  z   t9          | t          t          d
d          z  z
  dz  | t          t          d
d          z  f          z   k    sJ t          |                               |           t=          |           t          |           z  k    sJ t          |                              d|          d|dz  z  dz  k    sJ t          |                              d	|          d|d	z  z  dz  k    sJ t          |                              d|          dk    sJ d S )Nr   TrI   re   rh   r   ri   rk   rn   ry   rl   r   rr   rm   r   Fr   x0rP   r   `   r~      =   r   ) r   r-   r   r;   r   r   r   r"   r   r   r   r&   r   r  r*   r   r   r.   r    r   r   r   r`   r   rb   r   r   r9   r8   r   r0   r  )r   re   s     r   test_secr  {  s   $AA9	!$$$$s88s????q66Q;;;;r77b====r!t99s1u::r!t99$q''	!####r!t99>>>>r(1a.. !!S((((r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!d1ggX----q66QtAwwYqs88qay    r77c!fftAww<<1q66Yq\\!2!22222FF!!AZZRUUSAZZ]41;;>9 AZZ]41;;>9: ;AZZRUUSAZZ]41;;>9 AZZ]41;;>9: ;<< < < < q66==d=##qQx////qs88???%%Ac!ffaiK!O)<<<<<q66"d****q66>T!!!!q66&&&r775((((q66!!##s1vv----q5!!!+t3333q66t####r!te$$$.%7777#a&&!Q'''1q!tAv:!Q$r	+AAadGG+KKKKK $s1vv,,1q!tAv:!Q$r	#9AadGG#CCCCC 4A<<r!tAv333d1r(1a..(()))QHQNN1B-BXaQR^^,STV,VVHQNN""Xa^^3C78:;QHQPQNNAR=RUV<VYZ\^_ghikl_m_m\mXn:o:opp p p p q66;;q>>SVVCFF]**** q66a##qAvby0000q66a##r!Q$ws{2222q66a##q((((((r   c            	      L   t          t                                        t                    dt          t          t          z            dz  t          t           t          z            dz  z   z  k    sJ t          t                                        t
                    dt          t                    z  k    sJ t          t                                        t                    t          t          dz            dz  dz   t          t          dz            dz   dz   z  k    sJ t          t                                        t                    t          t                    k    sJ t          t                                        t                    t          t                    k    sJ t          t                                        t                    t          t          dz            dz  dz   t          t          dz            dz  dz
  z  k    sJ t          t                                        t                    dt          t          t          dz  z   d          z  k    sJ t          t                                        t                    t          t          dz            dz  dz   t          t          dz            dz   dz   z  k    sJ t          t                                        t                    t          t           t          dz  z   d          k    sJ t          t                                        t                    t          t          d          t          t          t          z            t          t           j         t                    z  z  t%          t          d          fd          k    sJ t          t                                        t                                        t          d          t          d          k    sJ d S )Nrh   rk   Fr   r   r   )r-   r   r   r   r   r*   r0   r   r"   re   r+   r.   r   r,   r1   rC   r   r   rA   r   r   r   r   test_sec_rewriter    s   q66>>#!S1XXaZ#qbd))A+%=">>>>>q66>>#!CFF(****q66>>#3qs88Q;?c!A#hhk\A5E"FFFFFq66>>##a&&((((q66>>$3q66))))q66>>#3qs88Q;?S1XXq[1_"EEEEEq66>>#!c!b1f*u&E&E&E"EEEEEq66>>#3q1u::q=1#4#a!e**a-!9K"LLLLLq66>>##qb2a4i%"@"@"@@@@@q66>>'""ia$r!t**WafWa%8%8892a88D' '     q66>>'""''1--Q777777r   c                      t          t                                                    t          t                    t          t                    z  k    sJ t	          t
          d            d S )Nc                  P    t          t                                        d          S r   )r-   r   r   r   r   r   r   z test_sec_fdiff.<locals>.<lambda>  r   r   )r-   r   r   r0   rG   r?   r   r   r   test_sec_fdiffr    sL    q66<<>>SVVCFF]****
6677777r   c            
         t          dd          t          d          } t          d          }dt          d          z  }|                    |          dk    sJ |                    |          dk    sJ t          j        t          d          k    sJ t          d          t          u sJ t          t                    t          u sJ t          t                    t          u sJ t          t          dz            dk    sJ t          t           dz            dk    sJ t          t          d	z            dk    sJ t          t          d
z            dt          d
          z  d
z  k    sJ t          t          t          dd          z            dk    sJ t          t          t          dd          z            t          t          t          dd          z             k    sJ t          t          t          d
d          z            t          d          k    sJ t          t                    t           t          d          z  k    sJ t          t          z            t           t                    z  k    sJ t                     t                     k    sJ t          t                              k    sJ t          |                                           t          t          |                     k    sJ t          |                                           t          t!          |                     t#          t%          |                     z  t          t!          |                     dz  t#          t%          |                     dz  z  t'          t!          |                     dz  t          t%          |                     dz  z  z   z  t'          t!          |                      t          t%          |                     z  t          t!          |                     dz  t#          t%          |                     dz  z  t'          t!          |                     dz  t          t%          |                     dz  z  z   z  fk    sJ t                                        d          dt                    z  k    sJ t          dz                                d          ddt                    z  t'                    z  z  k    sJ t                    j        dk    sJ t          |           j        d k    sJ t          t.                    j        J t          t2                    j        du sJ t                                                    t                    k    sJ t          dd          j        dk    sJ t                    j        d k    sJ t          t          dz  d          j        dk    sJ t9          t                    t          dz  d	          dt          dz  z
  dz  dz  z   dt          dz  z
  dz  z  dz  z   t;          t          dz  z
  d	z  t          dz  f          z   k    sJ t9          t                    dd	          dz  d	z  z   dd
z  z  dz  z   ddz  z  dz  z   t;          d	z            z   k    sJ t                                                  t?                     t                    z  k    sJ t                                         d          dk    sJ t                                         d
          dd
z  z  dz  k    sJ t                                         d          ddz  z  dz  k    sJ tC          tD          fd           d S )Nr   TrI   re   rh   r   rk   ri   rn   ry   rl   r   rr   rm   r   Fr   r  r   ih     i;  c                  H    t                                         d          S r   )r,   r   r   s   r   r   ztest_csc.<locals>.<lambda>  s    s1vv||A r   )#r   r,   r.   ro  r   r;   r   r   r   r"   r   r   r    r%   r   r  r   r   r   r*   r   r   r   r`   r   rb   r   r   r9   r8   r   r+   r  rG   r?   )re   cosecant	alternater   s      @r   test_cscr    s   $AA 3xxH#c((
I??9%%----H%%----9	!$$$$q66S====r77c>>>>s88s????r!t99>>>>s1u::r!t99>>>>r!t99$q''	!####r(1a.. !!Q&&&&r(1a.. !!c"Xa^^*;&<&<%<<<<<r(1a.. !!T!WW,,,,q66aRQZqs88r$q''z!!!!r77s1vvgtAww<<1q66Yq\\!2!22222FF!!AZZRUU#SAZZ]41;;>%A%(AZZ]41;;>%A&B C"Q%%jj[bee$c"Q%%jj!mDAKKN&Bbee**a-RUUQ6'7 899 9 9 9 q66==d=##qQx////qs88???%%Ac!ffHSVVO)<<<<<q66"d****q66>T!!!!q66&&&r775((((q66!!##s1vv----q5!!!+u4444q66t####r!te$$$.$6666#a&&!1***	QAXM!OaRTAob001a"Q$h]Q1I3N3NNO O O O#a&&!Q'''aC!A#I!Q$s
"R1WU]2Qq!tWW<= = = = q66;;q>>c!ffWSVV^++++q66a##q((((q66a##qAvcz1111q66a##r!Q$wu}4444
666677777r   c            
      P   t          dd          } t          |           t          u sJ t          t                    t          u sJ t          d          dk    sJ t          d          t          k    sJ t          t
                    t          dz  k    sJ t          t
                     t          dz  k    sJ t          t                    t          dz  k    sJ t          t          t          t          dd	          z                      t          t          d
d	          z  k    sJ t          dt          d          z             t          t          dd          z  k    sJ t          dt          d
          z            t          dz  k    sJ t          t          d	dt          d          z  z
                      t          dz  k    sJ t          t          d	dt          d          z  z                        t          t          dd          z  k    sJ t          t          ddt          d          z  dz  z                       t          t          d
d          z  k    sJ t          t          ddt          d          z  dz  z                        t          t          dd          z  k    sJ t          t          d          t          d          z
            t          t          dd          z  k    sJ t          t                    
                    t                    dt          dz  t          ddt          dz  z  z
            z  z  k    sJ t          t                                        t                    t          t          t          ddt          dz  z  z
            t          t          z  z             z  t          dz  z   k    sJ t          t                                        t                    t          dt          z             t          dz  z   k    sJ t          t                                        t                    t          dt          z            k    sJ t          t                                        t                     t          dt          t          dz            t          z  z
  z  dz  t          t          dz            t!          t          t          dz  dz
                      z  t          z  z   k    sJ t          t                                        t"                    t          dt          t          dz            t          z  z
  z  dz  t          t          dz            t#          dt          t          dz  dz
            z            z  t          z  z   k    sJ t          t                                        t$                    t%          t                     t          dz  z   k    sJ t'          t(          d            d S )Nre   Tr+  rh   r   ri   rk   r   rm   ry   rl   rn   r|   rp   rr   r   r~   c                  P    t          t                                        d          S r   )r&   r   r   r   r   r   r   ztest_asec.<locals>.<lambda>.  rF  r   )r   r&   r   r   r   r   r-   r   r"   r   r   r   r   r   r'   r#   r(   r$   r%   rG   r?   re   s    r   	test_asecr    s   sA77c>>>>9977a<<<<88r>>>>88r!t991991BxA&''((Bx1~~,=====DGG8Aq>> 11111$q''	??bd""""Q477]##$$1,,,,a!DGG)m$$$%%HQNN):::::Q4771_%%&&"Xa__*<<<<<a!DGG)A+o&&&''2hq"oo+=====Q$q''!""b"b)9)9&9999977<<??aAd1qAv:&6&6!67777777??31Sa!AqD&j)9)9AaC)?%@%@#@2a4#GGGGG77??4  T!A#YYJA$5555577??4  D1II----77??4  
AQT

1a$q!t**T$q!tax..-A-A"A!"CCD D D D77??4  
AQT

1a$q!t**T!DANN2B-C-C"CA"EEF F F F77??4  T!WWHr!tO3333
7788888r   c                  ^   t          t          j                  j        du sJ t	          ddd          } t          |           j        du sJ t          t                    j        J t          t                    j        J t	          ddd          }t          |          j        du sJ d S )NFrP   T)rO   rL   r  rJ   finite)r&   r   r   r   r   r   r   rH   )rP   r  s     r   test_asec_is_realr  1  s    <<5((((sT4000A77#t++++77?"""77?"""st,,,A77?e######r   c            	         t          dt          z                                t                    t          dz  k    sJ t          t          dz                                 t                    t	          d          t	          t                    z  k    sJ t          t          dz
                                t                    t          k    sJ t          t                                        t          d          t
           t          t                    z  t
          t          d          z  z   k    sJ t          t                                        t          d          t
          t          t                    z  dt          z  z   t
          t          d          z  z
  k    sJ t          t
          t          z  dz                                 t          d          t          d          k    sJ t          t
           t          z  dz                                 t          d          t          d           k    sJ t          t
          t          z  dz
                                t          d          dt          z  t          d          z
  k    sJ t          t
           t          z  dz
                                t          d          t          d          k    sJ t          t
           t          dz  z  t          z   t          d          dz  z
                                t          d          t          t
          t          dt	          d          z
            z  z   k    sJ t          t
           t          dz  z  t          z   t          d          dz  z
                                t          d          t          t
          t          dt	          d          z
            z  z   k    sJ d S )Nrh   rk   r?  ri   rP        ry   )r&   r   r   r   r"   r   r   r   r   r   r   test_asec_leading_termr  ;  s   !99$$Q''2a4////A;;&&q))T!WWT!WW_<<<<A;;&&q))R////77""11"--!CFFQs1vvX1EEEEE77""12"..!CFF(QrT/Ac!ffH2LLLLL!c	??**11*55cBBBB1s
++AA+66499*DDDD!c	??**11*552T

9JJJJJ1s
++AA+66$t**DDDD1a4!add1f$%%55aa5@@B3qSWXYSZSZ{K[K[I[D[[[[[1a4!add1f$%%55ab5AAR!CPQTXYZT[T[P[L\L\J\E\\\\\\\r   c                     t          t                                        t          dd          t          t	          d          z  t          t	          t                    z  z
  t          t          dz  z  dz  z
  dt          z  t          dz  z  dz  z
  dt          z  t          dz  z  d	z  z
  d
t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t                                        dt                    } | dt          z  t          dz  z  dz  k    sJ t          t                                        dt          | d          dt          z  t          dz  z  d	z  k    sJ d S )Nr   r   rk   rm   ry   r  rl   rn   r  #   r|   r  ro   r{   )r&   r   r9   r   r   r8   r  )t4s    r   test_asec_seriesr  L  s2   77>>!Q""	#a&&1SVV8a1fQh&1QT"4
A#ad(2+	1QT	$	')*1a4	11 1 1 1 
a		Q	"	"BAad277q!R++r!tAqDy|;;;;;;r   c            
         t          t                    t          u sJ t          d          t          dz  k    sJ t          d          t           dz  k    sJ t          t                    dk    sJ t          t                     dk    sJ t          t                    dk    sJ t          d          t          u sJ t          t          d                    dt          z   k    sJ t          t          d                    dt          z   k    sJ t          t          d	                    d	dt          z  z
  k    sJ t          t           t          t                              sJ t          t           t          t                              sJ t          dt          d          z            t          dz  k    sJ t          t          t          t          d
d          z                      t           dz  k    sJ t          t          ddt          d          z  dz  z                       t          dz  k    sJ t          t          ddt          d          z  dz  z                        t           dz  k    sJ t          d          t           d	z  k    sJ t          t          ddt          d          z  z                        t           dz  k    sJ t          t          ddt          d          z  z
                      t          t          dd          z  k    sJ t          dt          d          z             t          dz  k    sJ t          t          d          t          d	          z
            t          t          dd          z  k    sJ t          t                                        t                    dt          dz  t          ddt          dz  z  z
            z  z  k    sJ t          t                                        t                    t           t          t          ddt          dz  z  z
            t          t          z  z             z  k    sJ t          t                                        t                    t          dt          z            k    sJ t          t                                        t                     t!          dt          z             t          dz  z   k    sJ t          t                                        t"                    t#          t          t          dz  dz
                       t          dz  z   t          t          dz            z  t          z  k    sJ t          t                                        t$                    t%          dt          t          dz  dz
            z             t          dz  z   t          t          dz            z  t          z  k    sJ t          t                                        t&                    t'          t                     t          dz  z   k    sJ t)          t*          d            d S )Nrh   rk   ri   r   ry   ro   rm   r   rn   r   rl   rj   r|   rp   r{   r~   c                  P    t          t                                        d          S r   )r%   r   r   r   r   r   r   ztest_acsc.<locals>.<lambda>w  rF  r   )r%   r   r   r   r   r,   r>   r   r-   r"   r   r   r   r   r   r'   r#   r(   r$   r&   rG   r?   r   r   r   	test_acscr  U  s   9977bd????88s1u88q====99>>>>99>>>>77c>>>>A<<27""""A<<27""""A<<1qt8####T3q66"""""T3q66"""""$q''	??bd""""BxA&''((RCE1111Q4771_%%&&"Q$....a!DGG)A+o&&&''B3q5000088s1ua!DGG)m$$$%%"Q....Q477]##$$8Aq>>(99999DGG2%%%%Q$q''!""b"b)9)9&9999977<<??b!Q$tA!Q$J'7'7"78888877??3A2c$q1QT6z*:*:QqS*@&A&A#AAAAA77??4  D1II----77??4  T!A#YYJA$5555577??4  
tAqD1H~~

	A	%tAqDzz1!34 4 4 477??4  d1T!Q$(^^+;&<&<%<r!t%CT!Q$ZZ$OPQ$QQQQQ77??4  T!WWHr!tO3333
7788888r   c                     t          t                                        t                    t          t                    k    sJ t          t                                        t                    t          t                    k    sJ t          t                                        t
                    dt          z  t          t          t          z            t          t           t          z            z
  z  k    sJ t          t                                        t                    dt          t                    z  k    sJ t          t                                        t                    t          t          dz            dz  dz   dt          t          dz            z  z  k    sJ t          t                                        t                    t          t          dz            dz  dz   dt          t          dz            z  z  k    sJ t          t                                        t                    dt          t          t          dz  z
  d          z  k    sJ t          t                                        t                    t          t           t          dz  z   d          k    sJ t          dt          t          t          t                               z
                                t                    dt          t           dz  dz
  t          t          t          t          t                    z            z   t          t          t           dz  t          t          t          t                    z  z   d          z  z   d          z  k    sJ t          t                                        t                    t	          d          t	          t          t          z            t          t          j        t                    z  z  k    sJ t          t                                        t                                        t          d          t          d          k    sJ d S )Nrk   rh   Fr   ri   r   )r,   r   r   r   r"   r   r   r.   r0   r+   r*   r   r-   r1   r   r   r   r   r   r   test_csc_rewriter  z  s   q66>>##a&&((((q66>>$3q66))))q66>>#!A#s1Q3xx#qbd))';"<<<<<q66>>#!CFF(****q66>>#3qs88Q;?Qs1Q3xxZ"@@@@@q66>>#3qs88Q;?Qs1Q3xxZ"@@@@@q66>>#!CBqD5$A$A$A"AAAAAq66>>##qb2a4i%"@"@"@@@@@ q31~&&&''//44c2#a%!)c!GAqMM/222CA'!Q--/%@@@@AKPR R R RR R R R q66>>'""d1ggtBqDzz'!&!:L:L/L&MMMMMq66>>'""''1--Q777777r   c                     t          dt          z                                t                    t          k    sJ t          t          dz                                 t                    t          dz  k    sJ t          t          dz
                                t                    t           dz  k    sJ t          t                                        t          d          t          t          t                    z  t          dz  z   t          t          d          z  z
  k    sJ t          t                                        t          d          t           t          t                    z  dt          z  dz  z
  t          t          d          z  z   k    sJ t          t          t          z  dz                                 t          d          t          d          k    sJ t          t           t          z  dz                                 t          d          t          t          d          z
  k    sJ t          t          t          z  dz
                                t          d          t           t          d          z
  k    sJ t          t           t          z  dz
                                t          d          t          d           k    sJ t          t           t          dz  z  t          z   t          d          dz  z
                                t          d          t           dz  t          t          t          d          dz             z  z   k    sJ t          t           t          dz  z  t          z   t          d          dz  z
                                t          d          t           dz  t          t          t          d          dz             z  z   k    sJ d S )Nrh   rk   r?  ri   ry   rP  r  )r%   r   r   r   r   r   r   r"   r   r   r   test_acsc_leading_termr    s   !99$$Q''1,,,,A;;&&q))RT1111A;;&&q))bSU222277""11"--3q66BqD1SVV81KKKKK77""12"..1"SVV)ad1f2DqQx2OOOOO!c	??**11*55cBBBB1s
++AA+66"tCyy.HHHH!c	??**11*55"tDzz9IIIII1s
++AA+66499*DDDD1a4!add1f$%%55aa5@@RCEAcRVWXRYRY\]R]N^N^L^D^^^^^1a4!add1f$%%55ab5AAbSUQsSWXYSZSZ]^S^O_O_M_E_______r   c                     t          t                                        t          dd          t           t	          d          z  t
          dz  z   t          t	          t                    z  z   t          t          dz  z  dz  z   dt          z  t          dz  z  dz  z   dt          z  t          dz  z  d	z  z   d
t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t                                        dt                    } | dt          z  t          dz  z  d	z  k    sJ t          t                                        dt          | d          d
t          z  t          dz  z  dz  k    sJ d S )Nr   r   rk   rm   ry   r  rl   rn   r  r  r|   r  )r%   r   r9   r   r   r   r8   r  )t6s    r   test_acsc_seriesr    s@   77>>!Q""	
3q66	BqD1SVV8#a1fQh.
A#ad(2+	!AqD	$&(d1a4in	578Aww	?? ? ? ? 
a		Q	"	"B1QT"77q!R++r!tAqDy~======r   c                     t          t          dz                                 t          dd t                    t          d           t          z   t          d          t          z  t          z  dz  z   t          d          t          z  t          dz  z  dz  z
  t          d          t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dz                                 t          dd t                     t          d          t          d          t          z  t          z  dz  z
  t          d          t          z  t          dz  z  dz  z   t          d          t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          dz
                                t          dd t                    t          d           t          d          t          z  t          z  dz  z
  t          d          t          z  t          dz  z  dz  z
  t          d          t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          dz
                                t          dd t                     t          d          t          z
  t          d          t          z  t          z  dz  z   t          d          t          z  t          dz  z  dz  z   t          d          t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          dt          z                                 t          dd           t          dz  t          d          t          t                     z  z
  t          d          t           t          d          dz  z  z  dz  z
  dt          d          z  t           t          d          dz  z  z  d	z  z
  t          t          dz            z   k    sJ t          d
t          z                                 t          dd           t           dz  t          d          t          t                    z  z   t          d          t          t          d          dz  z  z  dz  z   dt          d          z  t          t          d          dz  z  z  d	z  z   t          t          dz            z   k    sJ t          t          t                                                  t          dd           t          dz  t          d          t          t                     z  z
  t          d          t           t          d          dz  z  z  dz  z   t          d          t           t          d          dz  z  z  dz  z
  t          t          dz            z   k    sJ t          t          t                                                   t          dd           t           dz  t          d          t          t                     z  z   t          d          t           t          d          dz  z  z  dz  z
  t          d          t           t          d          dz  z  z  dz  z   t          t          dz            z   k    sJ d S )Nrk   rm   ry   r   r   rh   r~   rl   r  ri   rn   r   )	r'   r   _eval_nseriesr   r   r"   r8   r   r   r   r   r   test_asin_nseriesr    s   A;;$$Q433Qx"}GGAIaKM8GGAIadN1$8%'+AwwqyA~b'889;<QT778C C C C CA;;$$Q4!44QGGAIaKM9GGAIadN1$9%'+AwwqyA~b'899;<QT779C C C C CA;;$$Q433QxGGAIaKM8GGAIadN1$8%'+AwwqyA~b'889;<QT778C C C C CA;;$$Q4!44Q"GGAIaKM9GGAIadN1$9%'+AwwqyA~b'899;<QT779C C C C C A;;$$Q400BqD477488;K4KGGaR1Q446N25 !$q''	A21a. 8 <5=?@Aww5G G G G GQ<<%%aD11bSUT!WWT!WW_5LGGA!QK6tAwwYq1Q446{236679:1a46A A A A AA<<%%aD11RTDGGD!HH<L5LGGaR1Q446N16#Awwadd1f~5c96:<=adGG6D D D D DQ==&&q!T22rc!ed1ggdA2hh>N6NGGaR1Q446N17#Awwadd1f~5c97:<=adGG7D D D D D D Dr   c                  |   t          t          dz                                 t          dd t                    t          d           t	          d          t          z  t          z  dz  z
  t	          d          t          z  t          dz  z  dz  z   t	          d          t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          dz                                 t          dd t                     t          d          t	          d          t          z  t          z  dz  z   t	          d          t          z  t          dz  z  dz  z
  t	          d          t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dz
                                t          dd t                    t          d          t	          d          t          z  t          z  dz  z   t	          d          t          z  t          dz  z  dz  z   t	          d          t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dz
                                t          dd t                     t          d           dt          z  z   t	          d          t          z  t          z  dz  z
  t	          d          t          z  t          dz  z  dz  z
  t	          d          t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          dt          z                                 t          dd           t	          d          t	          t                     z  t	          d          t           t          d          dz  z  z  dz  z   dt	          d          z  t           t          d	          dz  z  z  d
z  z   t          t          dz            z   k    sJ t          dt          z                                 t          dd           t          t	          d          t	          t                    z  z
  t	          d          t          t          d          dz  z  z  dz  z
  dt	          d          z  t          t          d	          dz  z  z  d
z  z
  t          t          dz            z   k    sJ t          t          t                                                  t          dd           t	          d          t	          t                     z  t	          d          t           t          d          dz  z  z  dz  z
  t	          d          t           t          d	          dz  z  z  dz  z   t          t          dz            z   k    sJ t          t          t                                                   t          dd           t          t	          d          t	          t                     z  z
  t	          d          t           t          d          dz  z  z  dz  z   t	          d          t           t          d	          dz  z  z  dz  z
  t          t          dz            z   k    sJ d S )Nrk   rm   ry   r   r   rj   rh   r~   rl   r  ri   rn   r   )	r#   r   r  r   r"   r8   r   r   r   r   r   r   test_acos_nseriesr    s   A;;$$Q433Qx$q''!)A+a-7OGGAIadN18AwwqyA~b(8)+,QT7783 3 3 3 3A;;$$Q4!44Q$q''!)A+a-8OGGAIadN19AwwqyA~b(9)+,QT7793 3 3 3 3A;;$$Q433tBxx$q''!)A+a-7OGGAIadN18AwwqyA~b(8)+,QT7783 3 3 3 3A;;$$Q4!44b	AbD8HGGAIaKM9GGAIadN1$9%'+AwwqyA~b'899;<QT779C C C C C A;;$$Q400DGGD!HH4DGGaR1Q446N25 !$q''	A21a. 8 <5=?@Aww5G G G G GQ<<%%aD11R$q''$q''/5IGGA!QK6tAwwYq1Q446{236679:1a46A A A A AA<<%%aD11T!WWT1"XX5EGGaR1Q446N16#Awwadd1f~5c96:<=adGG6D D D D DQ==&&q!T22b477488;K6KGGaR1Q446N17#Awwadd1f~5c97:<=adGG7D D D D D D Dr   c                  	   t          t          dt          z  z                                 t          dd d          t          t	          d          z  t          dz  z
  dt          z  t          dz  z  dz  z
  dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dt          z  z                                 t          dd d          t          t	          d          z  t          z
  t          dz  z
  dt          z  t          dz  z  dz  z
  dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dt          z  z
                                t          dd d          t           t	          d          z  t          z   t          dz  z
  dt          z  t          dz  z  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          dt          z  z
                                t          dd d          t           t	          d          z  t          dz  z
  dt          z  t          dz  z  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ t          dt          z                                t          dd d          t          dz  t          z
  t          t          dz            z   k    sJ t          dt          z                                t          dd d          t           dz  t          z
  t          t          dz            z   k    sJ t          t          t          z                                 t          dd           t          t          d          z  dz  t          dz  z   t          t          t                    z  dz  z
  t          dz  z   t          t          dz  z  d	z  z   t          dz  d
z  z
  t          t          dz            z   k    sJ t          t          t          z
                                t          dd           t           t          d          z  dz  t          dz  z   t          t          t                    z  dz  z   t          dz  z   t          t          dz  z  d	z  z
  t          dz  d
z  z
  t          t          dz            z   k    sJ d S )Nrk   rm   rh   ry   r   r   Q   ri      0   )r(   r   r   r  r   r8   r   r   r   r   r   test_atan_nseriesr    s'   AaC==&&q!T155588ac9IaC1HQJ:AqD:1gg:& & & & &AaC==&&q!T266!E!HH*r/aC;
A#ad(1*;!Q$wrz;"$%adGG;, , , , ,AaC==&&q!T155!E!HHr9IaC:
A#ad(1*:!Q$wrz:"$%adGG:, , , , ,AaC==&&q!T2661"U1XX+!:KaC1HQJ;AqD;1gg;& & & & &!99""1aq11RTAX!Q$5GGGGG!99""1ar22rc!eai!AqD''6IIIIIA;;$$Q400Ac!ffHQJA4Ec!ffHQJ515Avby5!#$a475+-.q!tWW55 5 5 5 5A;;$$Q400QBs1vvIaK"Q$4Fc!ffHQJ515Avby5!#$a475+-.q!tWW55 5 5 5 5 5 5r   c                  
   t          t          t          d          dz  t          z  z                                 t          dd d          t           t          t          d          dz            z  t          z   dt          z  dz  z
  dt          z  t          dz  z  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  t          z  z                                 t          dd d	          t           t          t          d          dz            z  dt          z  dz  z
  dt          z  t          dz  z  dz  z   dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  t          z  z
                                t          dd d          t          t          t          d          dz            z  dt          z  dz  z
  dt          z  t          dz  z  dz  z
  dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  t          z  z
                                t          dd d	          t          t          t          d          dz            z  t          z
  dt          z  dz  z
  dt          z  t          dz  z  dz  z
  dt          dz  z  dz  z   t          t          dz            z   k    sJ t          t                                        t          dd d          t          dz  t          z
  t          t          dz            z   k    sJ t          t                                        t          dd d	          t           dz  t          z
  t          t          dz            z   k    sJ t          t          t          z                                 t          dd           t           t          d          z  dz  t          dz  z   t          t          t                    z  dz  z   t          dz  z
  t          t          dz  z  d
z  z
  t          dz  dz  z   t          t          dz            z   k    sJ t          t          t          z
                                t          dd           t          t          d          z  dz  t          dz  z   t          t          t                    z  dz  z
  t          dz  z
  t          t          dz  z  d
z  z   t          dz  dz  z   t          t          dz            z   k    sJ d S )Nrh   rk   rm   ry   r|   r   r:  r	  ri   r
  r  )	r$   r   r   r   r  r   r   r8   r   r   r   r   test_acot_nseriesr    s   AaDDF1H++Aq$::qbqttAv>N?	
1Q?1QT!?!!Q$hrk?*,-adGG?4 4 4 4 4AaDDF1H++Aq$;;r%!Q--?OaCE@
aC1HQJ@QT"@%'(Aww@/ / / / /AaDDF1H++Aq$::aadd1foaCE?
aC1HQJ?QT"?%'(Aww?/ / / / /AaDDF1H++Aq$;;qqttAv@	
1Q@1QT!@!!Q$hrk@*,-adGG@4 4 4 4 477  AtQ//2a4!8a1gg3EEEEE77  AtR00RCEAI!Q$4GGGGGA;;$$Q400QBs1vvIaK"Q$4Fc!ffHQJ515Avby5!#$a475+-.q!tWW55 5 5 5 5A;;$$Q400Ac!ffHQJA4Ec!ffHQJ515Avby5!#$a475+-.q!tWW55 5 5 5 5 5 5r   c                     t          t          t          d          dz  z                                 t          dd t                    t          t          d          dz            dt          d          z  t          z  t          z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z   dt          d          z  t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          t          d          dz  z                                 t          dd t                     t          t          d          dz             dt          d          z  t          z  t          z  dz  z   dt          d          z  t          z  t          dz  z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  z
                                t          dd t                    t          t          d           dz             dt          z  z   dt          d          z  t          z  t          z  dz  z   dt          d          z  t          z  t          dz  z  dz  z   dt          d          z  t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  z
                                t          dd t                     t          t          d           dz            dt          d          z  t          z  t          z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          dt          z                                 t          dd           t          d          t          t                    z  dt          d          z  t          t          d          dz  z  z  d	z  z
  d
t          d          z  t          t          d          dz  z  z  dz  z   t          t          dz            z   k    sJ t          dt          z                                 t          dd           t          t          d          t          t                     z  z
  dt          d          z  t           t          d          dz  z  z  d	z  z   d
t          d          z  t           t          d          dz  z  z  dz  z
  t          t          dz            z   k    sJ t          t          t                                                  t          dd           t          d          t          t                    z  t          d          t          t          d          dz  z  z  dz  z
  t          d          t          t          d          dz  z  z  dz  z   t          t          dz            z   k    sJ t          t          t                                                   t          dd           t          t          d          t          t                    z  z
  t          d          t          t          d          dz  z  z  dz  z   t          d          t          t          d          dz  z  z  dz  z
  t          t          dz            z   k    sJ d S Nrh   rk   rm   ry   r|   r   r
  rl   r~   +   r  ri   rn   r   )	r&   r   r   r  r   r"   r8   r   r   r   r   r   test_asec_nseriesr    s%   AaDDF
))!Qa88D1aLLd1ggIaKM!O=Qik!Q$&q(=)+-d1gg:a<1+<Q+>=?AB1a4=I I I I IAaDDF
))!Qqb99d1Q446ll]d1ggIaKM!O>Qik!Q$&q(>)+-d1gg:a<1+<Q+>>?AB1a4>I I I I IAaDDF
))!Qa88T1Q44%']]NbD=	T!WW9Q;q=?=tAwwYq[A-a/=024T!WW*Q,q!t2CA2E=FHI!Q$=P P P P PAaDDF
))!Qqb99T1Q44%']]d1ggIaKM!O>Qik!Q$&q(>)+-d1gg:a<1+<Q+>>?AB1a4>I I I I I A;;$$Q400DGGDGGOd1ggIa!A$$q&k"5!$q''z!add1f+5c95:<=adGG5D D D D DQ<<%%aD11R$q''$r((:J5Jd1ggIrQqTT!VnR6 "$T!WW*qbAaDDF^";C"?6@BCAqD''6J J J J JA<<%%aD11T!WWT!WW_GGA!QK6 GGA!QK/364671gg6> > > > >Q==&&q!T22b477477?6JGGA!QK7 GGA!QK/374671gg7> > > > > > >r   c                  
   t          t          t          d          dz  z                                 t          dd t                    t          t          d          dz            dt          d          z  t          z  t          z  dz  z   dt          d          z  t          z  t          dz  z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          t          t          d          dz  z                                 t          dd t                     t          t          d          dz             t          z   dt          d          z  t          z  t          z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z   dt          d          z  t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          t          d          dz  z
                                t          dd t                    t          t          d          dz            t          z
  dt          d          z  t          z  t          z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z
  dt          d          z  t          z  t          dz  z  dz  z
  t          t          dz            z   k    sJ t          t          t          d          dz  z
                                t          dd t                     t          t          d          dz             dt          d          z  t          z  t          z  dz  z   dt          d          z  t          z  t          dz  z  dz  z   dt          d          z  t          z  t          dz  z  dz  z   t          t          dz            z   k    sJ t          dt          z                                 t          dd           t          dz  t          d          t          t                    z  z
  dt          d          z  t          t          d          dz  z  z  d	z  z   d
t          d          z  t          t          d          dz  z  z  dz  z
  t          t          dz            z   k    sJ t          dt          z                                 t          dd           t           dz  t          d          t          t                     z  z   dt          d          z  t           t          d          dz  z  z  d	z  z
  d
t          d          z  t           t          d          dz  z  z  dz  z   t          t          dz            z   k    sJ t          t          t                                                  t          dd           t          dz  t          d          t          t                    z  z
  t          d          t          t          d          dz  z  z  dz  z   t          d          t          t          d          dz  z  z  dz  z
  t          t          dz            z   k    sJ t          t          t                                                   t          dd           t           dz  t          d          t          t                    z  z   t          d          t          t          d          dz  z  z  dz  z
  t          d          t          t          d          dz  z  z  dz  z   t          t          dz            z   k    sJ d S r  )	r%   r   r   r  r   r"   r8   r   r   r   r   r   test_acsc_nseriesr    s@   AaDDF
))!Qa88D1aLLd1ggIaKM!O=Qik!Q$&q(=)+-d1gg:a<1+<Q+>=?AB1a4=I I I I IAaDDF
))!Qqb99d1Q446ll]>	
4771Qq>T!WW9Q;q!t+A->.02477
1QT0A!0C>DFG1gg>N N N N NAaDDF
))!Qa88D1aLL2<Md1ggIaKM!O=Qik!Q$&q(=)+-d1gg:a<1+<Q+>=?AB1a4=I I I I IAaDDF
))!Qqb99d1Q446ll]d1ggIaKM!O>Qik!Q$&q(>)+-d1gg:a<1+<Q+>>?AB1a4>I I I I I A;;$$Q400BqD477477?4Jd1ggIa!A$$q&k"5!$q''z!add1f+5c95:<=adGG5D D D D DQ<<%%aD11bSUT!WWT1"XX=M5Md1ggIrQqTT!VnR6 "$T!WW*qbAaDDF^";C"?6@BCAqD''6J J J J JA<<%%aD11RTDGGDGGO5KGGA!QK6 GGA!QK/364671gg6> > > > >Q==&&q!T22rc!ed1ggd1ggo6MGGA!QK7 GGA!QK/374671gg7> > > > > > >r   c                      t          dd          } t          |           j        J t          |           j        J t	          |           j        J d S )NrP   TrK   )r   r.   is_irrationalr*   r0   rP   s    r   test_issue_8653r    sY    sD!!!Aq66'''q66'''q66'''''r   c                  `    t          ddd          } t          | dz
            j        du sJ d S )NrP   T)rL   rO   rh   )r   r(   r]  r  s    r   test_issue_9157r  "  s:    sD4000AA;;%------r   c                  `   t          d          \  } t                                                    dt          z  k    sJ t	                                                    dt          z  k    sJ t                                                    t          k    sJ t                                                    t          k    sJ t                                                    dt          z  k    sJ t                                                    dt          z  k    sJ t          dz                                            t          k    sJ t          dz  dz
                                            t          dz  k    sJ t	          dz                                            t          t          dd          z  k    sJ t	          | z                                          dt          z  t          |           z  k    sJ t          dz  | z  dt          z  z                                 |           dt          z  t          dz            z  k    sJ t          dz                                |           t          j        u sJ t          t          fd           d S )Nzx, yrk   rm   rn   ro   ry   c                  N    t           dz                                           S r   )r.   periodr  s   r   r   z"test_trig_period.<locals>.<lambda>6  s    AqD		(8(8(;(; r   )r   r.   r  r   r*   r0   r+   r-   r,   r   r   r   r   rG   NotImplementedError)r   r   s    @r   test_trig_periodr  '  s,   6??DAqq66==??ad""""q66==??ad""""q66==??b    q66==??b    q66==??ad""""q66==??ad""""qs88??""""qsQw<<  BqD((((Av;;2hq!nn#44444qs88??12c!ff,,,,qs1uqt|##A&&!B$s1Q3xx-7777qs88??1''''
 ; ; ; ;<<<<<r   c                     t          t                                        t                    t          t                    k    sJ t          t                                        t                    t          t                    k    sJ d S r  )r.   r   r   r"   r   r   r   r   test_issue_7171r!  9  sZ    q66>>$3q66))))q66>>##a&&((((((r   c                     t          dd          \  } }t          dt          dt          z  |z  d          ft	          t          |z            t          |z  z  df          }t          dt          dt          z  |z  d          ft          t          |z            df          }|                    t
                    |k    sJ d S )Nzw, kTrI   rh   rk   r   )r   rC   rB   r   r.   r/   r   )wr   Fsolns       r   test_issue_11864r&  >  s    6%%%DAq1b2amm$s2a4yy"Q$'7&>??AaAbDFA'$r!t**d);<<D99T??d""""""r   c                     t          ddd          } t          |           j        J t          |           j        J t	          |           j        du sJ t          |           j        J t          |           j        J t          |           j        du sJ t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        J t          t                    j        du sJ t          t                    j        du sJ t#          t                    j        du sJ t#          t                    j        du sJ d S )Nre   FTr  )r   r.   r   r*   r0   r-   r,   r+   r'   rM   rP   r&   r#   r%   r(   r7  r[  r$   r  s    r   test_real_assumptionsr(  D  s   st,,,Aq66>!!!q66>!!!q66>U""""q66>!!!q66>!!!q66>U""""77?"""77?"""77?"""77?"""77?"""77?"""77?"""77?"""77$&&&&77$&&&&77$&&&&77$&&&&&&r   c            	      B   t          t          d                    dt          z   k    rQt           dz  dt          z   cxk    rt          dz  k    r+n n(t          d          t          dt          z             k    sJ t          t          d                    dt          dz  z   k    rWt           dz  dt          dz  z   cxk    rt          dz  k    r.n n+t          d          t          dt          dz  z             k    sJ t	          t          d                    t           dz  dz   k    rMdt           dz  dz   cxk    rt          k    r/n n,t          d          t          t           dz  dz             k    sJ t	          t          d                    dt          z  dz   k    rKddt          z  dz   cxk    rt          k    r.n n+t          d          t          dt          z  dz             k    sJ t	          t          d                    ddt          z  z   k    rKdddt          z  z   cxk    rt          k    r.n n+t          d          t          ddt          z  z             k    sJ t          t          d	                    d
t          z  d	z   k    rWt           dz  d
t          z  d	z   cxk     rt          dz  k     r.n n+t          d	          t          d
t          z  d	z             k    sJ t          t          d                    d
t          z  dz   k    rWt           dz  d
t          z  dz   cxk     rt          dz  k     r.n n+t          d          t          d
t          z  dz             k    sJ t          t          d                    dt          t          dd          z  z   k    rst           dz  dt          t          dd          z  z   cxk     rt          dz  k     r<n n9t          d          t          dt          t          dd          z  z             k    sJ t          t          d                    d
t          z  dz   k    rWt           dz  d
t          z  dz   cxk     rt          dz  k    r.n n+t          d          t          d
t          z  dz             k    sJ t          t          d                    dt          t          dd          z  z   k    rst           dz  dt          t          dd          z  z   cxk     rt          dz  k    r<n n9t          d          t          dt          t          dd          z  z             k    sJ t          t          d                    ddt          z  z   k    rKdddt          z  z   cxk    rt          k    r.n n+t          d          t          ddt          z  z             k    sJ t          t          d                    dt          t          dd          z  z   k    rgddt          t          dd          z  z   cxk    rt          k    r<n n9t          d          t          dt          t          dd          z  z             k    sJ t          t          d                    dt          z  dz   k    rWt           dz  dt          z  dz   cxk    rt          dz  k    r.n n+t          d          t          dt          z  dz             k    sJ t          t          d                    t          t          dd          z  dz   k    rst           dz  t          t          dd          z  dz   cxk    rt          dz  k    r<n n9t          d          t          t          t          dd          z  dz             k    sJ d S )Nrk   rj   r   r   r   irp   rz   r{   r   r~   irr   r   ir   r   r   rm   ir   r   r   r   )r'   r.   r   r*   r#   r(   r0   r+   r   r$   r&   r-   r,   r%   r   r   r   test_issue_14320r+  Y  s0   A<<27""Ab(@(@(@(@BqD(@(@(@(@(@c!ffPSTVY[T[P\P\F\F\F\F\A<<219$$2#a%219*D*D*D*D1*D*D*D*D*D#a&&TWXZ]_`a]aXaTbTbJbJbJbJbA<<B3q519$$!s1uqy*>*>*>*>B*>*>*>*>*>CFFcSURUVWRWZ[R[nnD\D\D\D\B==BrEBJ&&AB,A,A,A,Ar,A,A,A,A,As2wwRUVXY[V[^`V`RaRaGaGaGaGaB==C"R%K''Q#2+-C-C-C-C-C-C-C-C-CRTWX[^`ac^cXcTdTdIdIdIdIdB==BrEBJ&&RCEBrEBJ,E,E,E,EA,E,E,E,E,E3r77VYZ\]_Z_bdZdVeVeKeKeKeKeB==BrEBJ&&RCEBrEBJ,E,E,E,EA,E,E,E,E,E3r77VYZ\]_Z_bdZdVeVeKeKeKeKeB==C"Xa^^"3333"Qr(STVW..GXAX9_9_9_9_[]^_[_9_9_9_9_9_ehikelelpstwz|  ~F  GH  JK  ~L  ~L  {L  uL  qM  qM  fM  fM  fM  fMB==BrEBJ&&RCEBrEBJ,F,F,F,F"Q$,F,F,F,F,FCPRGGWZ[]^`[`ce[eWfWfLfLfLfLfB==C"Xb!__"44442#a%#8TVXY??HZBZ:b:b:b:b^`ab^b:b:b:b:b:bhklnhohosvwz}  AI  JL  NO  AP  AP  ~P  xP  tQ  tQ  iQ  iQ  iQ  iQB==C!B$J&&Aqt,A,A,A,Ar,A,A,A,A,As2wwRUVY\]^`\`V`RaRaGaGaGaGaB==C"Xa^^"3333cBxPQST~~DU>U9[9[9[9[Y[9[9[9[9[9[adegahahlopsvx  zB  CD  FG  zH  zH  wH  qH  mI  mI  bI  bI  bI  bIB==BrEBJ&&RCERURZ,G,G,G,G2a4,G,G,G,G,GSQSWWX[\^_a\adf\fXgXgMgMgMgMgB==BxA.333"Q"XbRS__BTWYBY9a9a9a9a]_`a]a9a9a9a9a9agjkmgngnruvx  zB  CE  GH  zI  zI  wI  LN  wN  sO  sO  hO  hO  hO  hO  hO  hOr   c                  ,   t          dt          z  dz             t          d          k    sJ t          dt          z  dz
            t          d          k    sJ t          t          dz             t          d           k    sJ t          t          dz
            t          d           k    sJ t          dt          z  dz             t          d          k    sJ t          dt          z  dz
            t          d           k    sJ t          t          dz             t          d           k    sJ t          t          dz
            t          d          k    sJ t          d          } t          t          dz  | z             t          |           k    sJ t          t          dz  | z
            t          |           k    sJ t          t          t	          dd          z  | z             t          |            k    sJ t          t          t	          dd          z  | z
            t          |            k    sJ t          t          dz  | z
            t          |           k    sJ t          t          dz  | z             t          |            k    sJ t          t          t	          dd          z  | z             t          |           k    sJ t          t          t	          dd          z  | z
            t          |            k    sJ d S )Nrk   r   rz   r   ry   )r-   r   r,   r   r   r  s    r   test_issue_14543r-  k  s   qtby>>SWW$$$$qtby>>SWW$$$$rBw<<CGG8####rBw<<CGG8####qtby>>SWW$$$$qtby>>c"ggX%%%%rBw<<CGG8####rBw<<3r77""""sAr!tax==CFF""""r!tax==CFF""""r(1a.. 1$%%#a&&0000r(1a.. 1$%%#a&&0000r!tax==CFF""""r!tax==SVVG####r(1a.. 1$%%Q////r(1a.. 1$%%#a&&000000r   c                      t          t          t          t          t          d          z  z   z            } |                                 | dfk    sJ d S )Nrh   r   )r(   r   r0   r  )r  s    r   test_as_real_imagr/    sK     1qQx< !!D4)++++++r   c                      t          t          j        t          dz  dz   z            } |                                 dk    sJ d S )Nrm   g      ?r|   )r*   r   r   r   r  )e3s    r   test_issue_18746r2    s=    	QT1Q39		B99;;!r   c            	         t          t          t          dz            t          t                    t          dz  k    sJ t          t          t          dz  dz
            t          t                    t          dz  k    sJ t          t          t          dt          z            t          dt          z            z            t          t                    t          dz  k    sJ d S )Nrk   rh   )r7   r(   r   r   r   r   r   r   r   test_issue_25833r4    s    adQ##r!t++++adQhB''2a4////c!Q$iiAaC())1b11RT999999r   c                     t          t          t                    t          z                                t                    t          dz  k    sJ t          t          d            t          t          t                    t          z                                t                    t          dz  k    sJ t          t          d            t          t          t                    t          z                                t                    dk    sJ t          t          d            t          t          t                    t          z                                t                    t          dz  k    sJ t          t          d            t          t          t                    t          z                                t                    dk    sJ t          t          d            t          t          t                    t          z                                t                    t          dz  k    sJ t          t          d	            d S )
Nrm   c                  z    t          t          dt          z                                          t                    S r  )r(   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  $    d3qs88nn<<Q?? r   rk   c                  z    t          t          dt          z                                          t                    S r  )r'   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  r7  r   r   c                  z    t          t          dt          z                                          t                    S r  )r#   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  r7  r   c                  z    t          t          dt          z                                          t                    S r  )r$   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  r7  r   c                  z    t          t          dt          z                                          t                    S r  )r&   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  r7  r   c                  z    t          t          dt          z                                          t                    S r  )r%   r   r   r   r   r   r   r   z"test_issue_25847.<locals>.<lambda>  r7  r   )r(   r.   r   r   r   rG   r@   r'   r#   r$   r&   r%   r   r   r   test_issue_25847r=    s   Aq>>))!,,14444
9??@@@ Aq>>))!,,14444
9??@@@ Aq>>))!,,1111
9??@@@ Aq>>))!,,14444
9??@@@ Aq>>))!,,1111
9??@@@ Aq>>))!,,14444
9??@@@@@r   c                     t          t          t          z                                 t          t                    ddt          dz  z  z  dt          z  t          dz  z  z
  ddt          dz  z  z  z   t          t          dz  z  z   dt          z  z
  t
          dz  z   t          t          dz  t          t          f          z   k    sJ t          t          t          z                                 t          t                     ddt          dz  z  z  dt          z  t          dz  z  z
  ddt          dz  z  z  z   t          t          dz  z  z   dt          z  z
  t
          dz  z
  t          t          dz  t          t           f          z   k    sJ t          t          t          z
                                t          t                    ddt          dz  z  z  dt          z  t          dz  z  z   ddt          dz  z  z  z   t          t          dz  z  z
  dt          z  z
  t
          dz  z   t          t          dz  t          t          f          z   k    sJ t          t          t          z
                                t          t                     ddt          dz  z  z  dt          z  t          dz  z  z   ddt          dz  z  z  z   t          t          dz  z  z
  dt          z  z
  t
          dz  z
  t          t          dz  t          t           f          z   k    sJ t          t          t          z                                 t          t                    ddt          dz  z  z  dt          z  t          dz  z  z   ddt          dz  z  z  z
  t          t          dz  z  z
  dt          z  z   t          t          dz  t          t          f          z   k    sJ t          t          t          z                                 t          t                     ddt          dz  z  z  dt          z  t          dz  z  z   ddt          dz  z  z  z
  t          t          dz  z  z
  dt          z  z   t          t          dz  t          t           f          z   k    sJ t          t          t          z
                                t          t                    ddt          dz  z  z  dt          z  t          dz  z  z
  ddt          dz  z  z  z
  t          t          dz  z  z   dt          z  z   t          t          dz  t          t          f          z   k    sJ t          t          t          z
                                t          t                     ddt          dz  z  z  dt          z  t          dz  z  z
  ddt          dz  z  z  z
  t          t          dz  z  z   dt          z  z   t          t          dz  t          t           f          z   k    sJ d S )	Nr   rl   rk   rm   ry   rh   r*  r
  )r(   r   r   r9   r   r   r8   r$   r   r   r   test_issue_23843r?    s   A;;a$$Qq!tVqs1a4x(?!Qq!tV*(LqQRTUQUv(UXYZ[X[([^`ab^b(befghkmgnqrtvpwexex(xxxxxA;;a"%%a1f!AqD)@1a1f:)MPQRSUVRVPV)VYZ[\Y\)\_abc_c)cfghilnhorsvxuxqyfzfz)zzzzzA;;a$$Qq!tVqs1a4x(?!Qq!tV*(LqQRTUQUv(UXYZ[X[([^`ab^b(befghkmgnqrtvpwexex(xxxxxA;;a"%%a1f!AqD)@1a1f:)MPQRSUVRVPV)VYZ[\Y\)\_abc_c)cfghilnhorsvxuxqyfzfz)zzzzz A;;a$$AadFac!Q$h(>AadF(KaPQSTPTf(TWXYZWZ(Z]^_`ce_fijlnho]p]p(pppppA;;a"%%Qq!tVqs1a4x)?!Qq!tV*)LqQRTUQUv)UXYZ[X[)[^_`adf`gjknpmpiq^r^r)rrrrrA;;a$$AadFac!Q$h(>AadF(KaPQSTPTf(TWXYZWZ(Z]^_`ce_fijlnho]p]p(pppppA;;a"%%Qq!tVqs1a4x)?!Qq!tV*)LqQRTUQUv)UXYZ[X[)[^_`adf`gjknpmpiq^r^r)rrrrrrrr   N)!sympy.calculus.accumulationboundsr   sympy.core.addr   r   r   r   sympy.core.modr   sympy.core.mulr   sympy.core.numbersr	   r
   r   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   r   r   r   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   r   r   r   r   r    r!   (sympy.functions.elementary.miscellaneousr"   (sympy.functions.elementary.trigonometricr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   sympy.functions.special.besselr1   r2   'sympy.functions.special.delta_functionsr3   sympy.matrices.denser4   sympy.polys.polytoolsr5   r6   sympy.series.limitsr7   sympy.series.orderr8   sympy.series.seriesr9   sympy.sets.fancysetsr:   sympy.sets.setsr;   r<   sympy.simplify.simplifyr=   sympy.core.exprr>   r?   r@   sympy.core.relationalrA   rB   $sympy.functions.elementary.piecewiserC   sympy.sets.setexprrD   sympy.testing.pytestrE   rF   rG   r   r   re   rH   r   r   rM   rP   rV  rW  rV   rX   rZ   rX  rY  r^   r`   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r   r#  r%  r(  r3  r8  r=  rA  rC  rG  rJ  rL  rN  rQ  rT  rc  rf  ri  rk  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r&  r(  r+  r-  r/  r2  r4  r=  r?  r   r   r   <module>r\     s   9 9 9 9 9 9       . . . . . . . .             H H H H H H H H H H H H H H H H H H H H             " " " " " " / / / / / / / / I I I I I I I I I I I I = = = = = = = = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 9 9 9 9 9 9Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z 8 8 8 8 8 8 8 8 = = = = = = ' ' ' ' ' ' / / / / / / / / % % % % % %             & & & & & & ) ) ) ) ) ) 1 1 1 1 1 1 1 1 , , , , , , % % % % % % = = = = = = = = ( ( ( ( ( ( ( ( : : : : : : & & & & & & 4 4 4 4 4 4 4 4 4 4 ''

1a
F3Twud###1
F3
F3VCT"""VCT"""VD$VDD)))VDD)))fT---fT---fUT***
F3$VD$$///|K |K |K~K K K4 4 4
8 8 8>% % %2 2 2I I I8 8 8
"$ "$ "$Jf f fR0 0 0? ? ?
8 8 8D
1 
1 
1U U U8 8 8
e2 e2 e2P7 7 7
8 8 80 = = =6 6 6
D 
D 
DU U U8 8 8
X1 X1 X1vn n n d d d
	0 	0 	08 8 84 I I I' ' 'E E E(U U U8 8 8
1& 1& 1&h.# .# .#b: : :[ [ [". . .9 9 9
)5 )5 )5XX X X"/ / /6 6 69 9 9
4L 4L 4Ln	I 	I 	I9 9 9
T T T&G= G= G=R	A 	A 	A? ? ?:	I 	I 	I9 9 9T T T&  " " "% % %! ! !$ $ $
# # #(, , ,( ( (	6 	6 	6  j* j* j*Z
$ 
$ 
$= = =$    LN LN LN^ H H H j j j$<) <) <)~8 8 8"8 8 8
>8 >8 >8B9 9 9@$ $ $] ] ]"< < <"9 "9 "9J8 8 8&` ` `"> > >D D D(D D D(5 5 5$5 5 5$> > >(> > >(( ( (. . .
= = =$) ) )
# # #' ' '*O O O$1 1 1., , ,  
: : :A A A2s s s s sr   