
    oVh                        d dl 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
 d dlmZmZmZmZmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlmMZM d dlNmOZO d dlPmQZQ d dlmRZRmSZS d dlTmUZUmVZVmWZW d dlXmYZY d ZZd Z[d Z\d Z]d Z^eVd        Z_d Z`d Zad Zbd Zcd  Zdd! Zed" Zfd# Zgd$ Zhd% Zid& Zjd' ZkeVd(        Zld) Zmd* Znd+ Zod, Zpd- Zqd. Zrd/ Zsd0 Ztd1 Zud2 Zvd3 Zwd4 Zxd5 Zyd6 Zzd7 Z{d8 Z|d9 Z}d: Z~d; Zy)<    N)Product)Sum)diffexpand_func)
EulerGammaTribonacciConstant)FloatIRationaloopi)S)DummySymbolsymbols)
carmichael)imre)floor)cancel)limitLimit)O)'	bernoulliharmonicbell	fibonacci
tribonaccilucaseulercatalangenocchiandre	partitiondivisor_sigmaudivisor_sigmalegendre_symboljacobi_symbolkronecker_symbolmobiusprimenu
primeomegatotientreduced_totientprimepimotzkinbinomialgammasqrtcbrthyperlogdigammatrigamma	polygamma	factorialsincoscotpolylogzetadirichlet_eta)_nT)	factorint)	unchanged)GoldenRatioInteger)raisesnocache_failwarns_deprecated_sympyxc                  x    t               5  t        j                  d      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Ni  F)rH   r   is_prime     e/home/dcms/DCMS/lib/python3.12/site-packages/sympy/functions/combinatorial/tests/test_comb_numbers.pytest_carmichaelrP   !   s6    		! 2""4(E1112 2 2s   09c                  2   t        d      dk(  sJ t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        d      dk(  sJ t        d      t        dd      k(  sJ t        d	      dk(  sJ t        d      t        dd
      k(  sJ t        d      dk(  sJ t        d      t        dd      k(  sJ t        d      t        d	d      k(  sJ t        d      dk(  sJ t        dt              dk(  sJ t        dt              t        t        j                  z
  k(  sJ t        dt              t        dz  t        z
  t        dd      z   k(  sJ t        dt              t        dz  dt        dz  z  dz  z
  t        dz  z   k(  sJ t        d      } | j
                  dz  dk(  sJ | j                  dk(  sJ t        dd      j                         } t        |       dk(  sJ t        dd      }t        ddd      }t        ddd      }t        t        d|z  dz         t               sJ t        t        d|z  dz         t               sJ t        d|z  dz         dk(  sJ t        t        d      t        t              k(  sJ t        t        dd       j                  d!            d"k(  sJ t        t        d#      j                  d!            d$k(  sJ t        t        d%      j                  d!            d&k(  sJ t        t        d%d'      j                  d!            d(k(  sJ t        t        d%d)      j                  d!            d*k(  sJ t        t        d+d,      j                  d!            d-k(  sJ t        t        t              j                  d!            d.k(  sJ t        t        t        t              j                  d!            d/k(  sJ t        t              j                         t        t              k(  sJ y )0Nr                        *         
   B   iAB   l    d(	 l   kL3 iqi@B Fevaluatez-2.23799235765713e+4767529lTintegermrd   nonnegativenrd   positiveg        ffffff@rh   1.000000000      ?z0.5000000000333333?z0.4195995367g?z0.2144830348gz-1.158865646 - 0.6745558744*Ig      @y              ?z1.5 - 0.5*Iz0.9268485643 - 0.5821580598*Iz0.1267792071 + 0.01947413152*I)r   r   rJ   r   Halfpqevalfstrr   
isinstancer
   )brb   re   rh   s       rO   test_bernoullirw   &   s   Q<1Q<8Aq>)))Q<8Aq>)))Q<1Q<8B++++Q<1Q<8Ar?***Q<1Q<8B++++R=HQO+++W"""Q?aQ?a!&&j(((Q?adQh!Q7777Q?ada1faZ/!A#5555 	$A33<:%%%33)%%(..0Aq61111 	sD!AsDd3AsD40AiA	*I666iA	*I666QUQY1$$$Q?il***yc"((2(./=@@@y~##b#)*n<<<y~##b#)*n<<<yc"((2(./>AAAyd#))B)/04SSSSyb!''"'-.-???y|!!B!'(,KKKKyA$$r$*+/OOOOQ<9Q<///rN   c                     ddl m}  t        ddd      }t        d      j	                  t
              t        dz  dz  k(  sJ t        d	      j	                  t
              dt        d
      z  k(  sJ t        |d      j	                  t
              j                  t              rJ t        dt              j	                  t
              dt        dt              z  k(  sJ t        t        |t              j	                  t
              |       sJ t        |dz   t              j	                  t
              |dz    t        | t              z  k(  sJ y )Nr   	Piecewiserh   Trf   rW   rS   rT   rU   rV   rY   rR   )$sympy.functions.elementary.piecewiserz   r   r   rewriter?   r   hasr   rJ   ru   )rz   rh   s     rO   test_bernoulli_rewriter   U   s   >sDd3AR=  &"a%'111R=  &!DG)333B''-11(;;;R##D)QtAqz\999i1o--d3Y???QqS!$$T*!ftQB{.BBBBrN   c                  r   t        dd      D  cg c]  } t        |        c} g dk(  sJ t        d      dk(  sJ t        dd      D  cg c]  } t        |        c} g dk(  sJ t        d      dk(  sJ t        dt              dk(  sJ t        d	t              t        k(  sJ t        d
t              t        d	z  dz   k(  sJ t        dt              t        d
z  d	t        z  z   k(  sJ t	        d      } t        |       j                  | t        j                        t        j                  u sJ t        |       j                  | t        j                        t        j                  u sJ t        |       j                  t              d	|  z  t        d      z  dt        d      z   | z  t        d       dz   | z  z
  z  dz  k(  sJ t        |       j                  t              j                  | d      j                         t        d      k(  sJ t        |       j                  t              j                  | d      j                         t        t        d            k(  sJ t        |       j                  t              t        | dz
        j                  t              t        | dz         j                  t              z   j                         k(  sJ t        |       j                  t              j                  | d      j                         t        d      k(  sJ t!        t"        d        y c c} w c c} w )Nr|   rY   )rS   rW   rR   r   rR   rR   rS   rU   d   l   ?)Z3)r}   rU   rW   rS   rR   rU   rV   r[   l   17!rR   rS   rU   rV   rh   r]   c                  "    t        dt              S Nr|   )r   rJ   rM   rN   rO   <lambda>z test_fibonacci.<locals>.<lambda>y   s    yQ/ rN   )ranger   r   rJ   r   r   r   Infinityr   r3   subsexpandrD   rs   r	   simplifyrF   
ValueErrorrl   s    rO   test_fibonaccir   a   s   "'A,/QIaL/3LLLLS>2222#Bl+E!H+/IIII:....Q?aQ?aQ?adQh&&&Q?adQqSj((( 	c
AQ<a,

:::8>>!QZZ(AJJ666Q<%	QBQ!d1g+)d1gX\A,==>BC C CQ<%**1b188:imKKKQ<,11!B7==?im  8D!	1Q3			%	!A#(>(>t(D	DNNPQ Q Q8D!&&q"-446%)CCC
:/0/ 0+s   L/	L4c            
         t        d      D  cg c]  } t        |        c} g dk(  sJ t        d      dk(  sJ t        dt              dk(  sJ t        dt              dk(  sJ t        dt              t        dz  k(  sJ t        dt              t        d	z  t        z   k(  sJ t        d	t              t        d
z  dt        dz  z  z   dz   k(  sJ t        dt              t        dz  dt        dz  z  z   dt        dz  z  z   k(  sJ t        d      } t        |       j	                  | t
        j                        t
        j                  u sJ dt
        j                  t        d      z  z   dz  }dt        ddt        d      z  z         z   t        ddt        d      z  z
        z   dz  }d|t        ddt        d      z  z         z  z   |dz  t        ddt        d      z  z
        z  z   dz  }d|dz  t        ddt        d      z  z         z  z   |t        ddt        d      z  z
        z  z   dz  }t        |       j                  t              || dz   z  ||z
  ||z
  z  z  || dz   z  ||z
  ||z
  z  z  z   || dz   z  ||z
  ||z
  z  z  z   k(  sJ t        |       j                  t              j                  | d	      j                         t        d	      k(  sJ t        |       j                  t              j                  | d      j                         t        t        d            k(  sJ t        |       j                  t               t#        dt         | z  z  dt        d      z  dz   t%        dd      z  z  ddt        d      z  dz   t%        dd      z  z  d	z   dt        d      z  dz   t%        dd      z  z   z  t
        j&                  z         k(  sJ t)        t*        d        y c c} w )Nr\   )r   rR   rR   rS   rV   r[         r   l   TM(`_$
r   rR   rS   rU   rV   rT   rY   rh   rW      !   r]   f   iJ  r{   c                  "    t        dt              S NrW   )r   rJ   rM   rN   rO   r   z!test_tribonacci.<locals>.<lambda>   s    z"a0 rN   )r   r   rJ   r   r   r   r   ImaginaryUnitr3   r4   r   r   r   rD   rs   r	   r   r   r   rp   rF   r   )rh   warv   cs        rO   test_tribonaccir   |   s   #(8,aJqM,0JJJJc?8888aq   aq   aq!t###aq!tax'''aq!ta1f}q0000aq!ta1f}qAv5555c
Aa=q!**-;;;	aooQ'	'1,A	
T"qbz/"	"T"qbz/%:	:a?A	
QtB48O$$	$q!tDaRj,A'A	AQFA	
QT$rAd2hJ''	'!DaRj,A*A	AQFAa=  &1q5zAEAE?#	AE
QUQUO$%	AE
QUQUO$%& & & a=  &++Aq1::<
1MMMa=  -221R8>>@jn  a=  !34 !##Sb\C%7(1a.$HHT"X#hq!n44q8CRL=QN<# #$&'ff-9. . . . :019 -s   O(c                     t        d      D  cg c]  } t        |        c} g dk(  sJ t        dt              dk(  sJ t        dt              t        k(  sJ t        dt              t        dz  t        z   k(  sJ t        dt              t        dz  dt        dz  z  z   d	t        d
z  z  z   dt        dz  z  z   t        z   k(  sJ t        t              t        j
                  u sJ t        t        d        t        t        d        t        t        d        t        d      }t        dd|dd        d|d   z  |d   z  d|d   z  |d   z  z   d|d
   dz  z  z   k(  sJ t        dd
|dd        d|d   z  |d   dz  z  d|d
   z  |d   z  |d   z  z   d|d   d
z  z  z   k(  sJ d}t        dd|      dk(  sJ d}t        dd|      dk(  sJ d}t        dd
|      dk(  sJ t        ddd      } dD ]N  }t        |      j                         t        |       j                  t              j                  | |i      k(  rNJ  t        d      }t        |      j                  t              t        |      k(  sJ t        | |      j                  t              t        | |      k(  sJ t        d      } t        |       j                  | t        j
                        t        j
                  u sJ y c c} w )Nr\   )rR   rR   rS   rY      4      im  r   rR   rS   rY   r]   rV      rU   r   c                  *    t        t        t              S N)r   r   rJ   rM   rN   rO   r   ztest_bell.<locals>.<lambda>   s    tB{ rN   c                      t        d      S r   )r   rM   rN   rO   r   ztest_bell.<locals>.<lambda>   s
    tBx rN   c                  4    t        t        j                        S r   )r   r   rp   rM   rN   rO   r   ztest_bell.<locals>.<lambda>   s    tAFF| rN   zx:6rT   <   )rR   r]   r   r_   i'  i )rR   rS   rU   rU   rY      )rR   rS   rU   rY   i+  rh   Trf   )r   rS   rU   r[   r   rZ   7   )r   re   )r   r   rJ   r   r   r   rF   r   r   r   rs   r   r   r   r   )rh   Xire   s       rO   	test_bellr      s   "1X&DG&*HHHH1:??1:??1:A!!!1:A1a4"QT'1Bq!tG;a????8qzz!!!
:*+
:'(
:+,A
 1ae!A$qtb1gadl :R!aZ GGGG	1ae1Q4!a"QqT'!A$,qt*;;b1qjHI I I 	"A1a=////A1a=2222A1a=3333 	sDd3A & J Aw}}$q'//#"6"<"<1a&"<"IIIIJ
 	sA7??347***1:c"d1aj000c
A7==AJJ'1::555Y 's   K.c                  ^   t        d      } t        d      }t        | d      | k(  sJ t        |       j                         t        |       k(  sJ t        | d      t        |       k(  sJ t        d|       dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      t        dd      k(  sJ t        dd      t        dd      k(  sJ t        d	d      t        d
d      k(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      t        dd	      k(  sJ t        dd      t        dd      k(  sJ t        d	d      t        dd      k(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      t        dd      k(  sJ t        dd      t        dd      k(  sJ t        d	d      t        dd      k(  sJ t        t        d      t
        j                  u sJ t        t        d      t        u sJ t        t        t
        j                        t        u sJ t        t        d      t        u sJ t        t        d      t        dz  dz  k(  sJ t        t        d      t        d      k(  sJ t        t        t        d            t
        j                  u sJ t        dd      }d|z  dk  du rJ d       t        dd      }t        t        d|z        t        u sJ t        t        d|z         t        d|z         u sJ t        d|      dk(  sJ t        dd      dk(  sJ t        dd      dk(  sJ t        dd      t
        j                  u sJ t        dd      t
        j                  u sJ t        dd      dk(  sJ t        dd      dk(  sJ y ) Nrh   re   r   rR   rS   rU      rT   rV   r      rY   1   $         	   r\         i  i  rW   Tnegativeri   z&delete this if-block and the next line)evenrj   r|   r{   )r   r   rs   r   r   r   NaNrp   r   r?   r   ComplexInfinity)rh   re   ips      rO   test_harmonicr      s   sAsAAq>QA;(1+---Aq>Xa[(((Aq>QAq>QAq>QAq>Xa^+++Aq>Xb!_,,,Aq>Xb"----Aq>QAq>QAq>Xa^+++Aq>Xb"----Aq>Xc3////Aq>QAq>QAq>Xa^+++Aq>Xc3////Aq>XdD1111Bquu$$$B?b   B2%%%B?b   B?r1uai'''B?d1g%%%Bt,-666	td	+B	"	d===t	D4	(BB"###BB4B<///Aq>QBq   B?b   B?a/////B?aee###Br!!!Bq   rN   c                     t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        | ||z  z         }t        d       dt        dd	      t	        d      d	z  z   z  t        t	        t	        d       dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z
  z  t        t	        t	        d      dz  t        dd      z               z  z   t
        t	        dt	        d      z  dz  d
z         z  dz  z   t        dd      z   }t        | ||z  z         }t        d       dt        t        t
        t        dd      z              z  t        t
        t        d	d      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z
  dt        t        t
        t        d	d      z              z  t        t
        dz        z  z
  t
        t        t
        t        dd      z        z  dz  z   dt        t        t
        dz              z  t        t
        t        dd      z        z  z
  t        dd      z   }	t        | ||z  z         }
t        d       dt        d
d	      t	        d      d	z  z   z  t        t        dd	      t	        d      d	z  z         z  z   dt        dd	      t	        d      d	z  z   z  t        t	        t	        d       dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z
  z  t        t	        t	        d      dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z   z  t        t        d
d	      t	        d      d	z  z         z  z   t        dd      z   t
        t	        dt	        d      z  dz         z  dz  z   }t        | ||z  z         }t        d       dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        d	d      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        dz        z  z
  dt        t        t
        dz              z  t        t
        t        dd      z        z  z
  t
        t        t
        t        d	d      z        z  dz  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z
  t        dd      z   }t        |||z  z         }t        d       dt        dd	      t	        d      d	z  z   z  t        t	        t	        d       dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z
  z  t        t	        t	        d      dz  t        dd      z               z  z   t
        t	        dt	        d      z  dz  d
z         z  dz  z   t        dd      z   }t        |||z  z         }t        d       dt        t        t
        t        dd      z              z  t        t
        t        d	d      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z
  dt        t        t
        t        d	d      z              z  t        t
        dz        z  z
  t
        t        t
        t        dd      z        z  dz  z   dt        t        t
        dz              z  t        t
        t        dd      z        z  z
  t        dd      z   }t        |||z  z         }t        d       dt        d
d	      t	        d      d	z  z   z  t        t        dd	      t	        d      d	z  z         z  z   dt        dd	      t	        d      d	z  z   z  t        t	        t	        d       dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z
  z  t        t	        t	        d      dz  t        dd      z               z  z   dt	        d       d	z  t        d
d	      z   z  t        t        d
d	      t	        d      d	z  z         z  z   t        dd      z   t
        t	        dt	        d      z  dz         z  dz  z   }t        |||z  z         }t        d       dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        d	d      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        t        dd      z        z  z   dt        t        t
        t        dd      z              z  t        t
        dz        z  z
  dt        t        t
        dz              z  t        t
        t        dd      z        z  z
  t
        t        t
        t        d	d      z        z  dz  z   dt        t        t
        t        dd      z              z  t        dt
        z  dz        z  z
  t        d d!      z   }|||
|||||g}||	||||||g}t        ||      D ]`  \  }}t        |      j                         }t        ||z        d
k(  sJ t        |j                         |j                         z
        d"k  r`J  y )#NrT   rY   r\   r   r]   r   rS   rW   rV   rR   iQ iH	H    rU       P   l     i)   l   f@  l   c  6   l   l   [bo
 l   PI0 i i< i+5i(3 ihiiiMug-q=)r   r   r6   r   r3   r   r;   r<   r=   zipr   doitr   absrh   )nenopepoqeqoHeeeAeeeHeeoAeeoHeoeAeoeHeooAeooHoeeAoeeHoeoAoeoHooeAooeHoooAoooHAhr   es                              rO   test_harmonic_rationalr      ss   	
1B	
1B	
1B	
1B	
2B	
2BBBJDWHq(2q/DGAI56s4a
XVWYZ^@[;\7]]]47(1*x1~-.s4Q	HQPQN8R3S/TTU$qay{Q'')*,4Xw,GHD BBJDWHqSHQO!3455c"Xa_:L6MMMPQRUVYZ\]efgik]lZlVmRnPnorsuv~  @B  DF  wG  tG  pH  QH  HSHQO+,--c"Xb"5E2E.FFGIJ3sSUV^_`bdVeSeOfKgIghklnowxy{}o~l~hI@SHQO+,--c"R%j89;=c"XaQS_BT>U;UVW;WXZ[\_`cdfgidi`j\kZkloprs{|}  @B  tC  qC  mD  [DD 
I./D
 BBJDWHq(1a.471945c(2q/DQRGTUI:U6VVV(2q/DGAI-.s4a
XaQR^8S3T/UUV47(1*x1~-.s4Q	HQPQN8R3S/TTU 47(1*x1~-.s8Aq>DGAI3M/NNO Z0	1 46d1T!W9q=6I3I!3K	LD BBJDWHqSHQO!3455c"Xb"=M:M6NNNQRSVWZ[]^fghjl^m[mWnSoQopstvw  AB  DF  xG  uG  qH  RH  HSHQO+,--c"Xc25F2F.GGHJKCPSTVW_`aceWfTfPgLhJhilmoprmrisJstSBZ RB%7!889;=c"XaQS_BT>U;UVW;WX SHQO+,--c"Xa_2D.EEF IQQ\^hHijD
 BBJDWHq(2q/DGAI56s4a
XVWYZ^@[;\7]]]47(1*x1~-.s4Q	HQPQN8R3S/TTU$qay{Q'')*,4VV,DED BBJDWHqSHQO!3455c"Xa_:L6MMMPQRUVYZ\]efgik]lZlVmRnPnorsuv~  @B  DF  wG  tG  pH  QH  HSHQO+,--c"Xb"5E2E.FFGIJ3sSUV^_`bdVeSeOfKgIghklnowxy{}o~l~hI@SHQO+,--c"R%j89;=c"XaQS_BT>U;UVW;WX SBZ RB%7!889 <DHh;WXD
 BBJDWHq(1a.471945c(2q/DQRGTUI:U6VVV(2q/DGAI-.s4a
XaQR^8S3T/UUV47(1*x1~-.s4Q	HQPQN8R3S/TTU 47(1*x1~-.s8Aq>DGAI3M/NNO 	9-	. 134$q'	A3F0Fq0H	ID BBJDWHqSHQO!3455c"Xb"=M:M6NNNQRSVWZ[]^fghjl^m[mWnSoQopstvw  AB  DF  xG  uG  qH  RH  HSHQO+,--c"Xc25F2F.GGHJKCPSTVW_`aceWfTfPgLhJhilmoprmrisJstSBZ RB%7!889;=c"XaQS_BT>U;UVW;WX SHQO+,--c!B$r'l:; >FiQZ=[\D
 
tT4tT48A	tT4tT48AAq	 *1N!ac{a13351335=!E)))*rN   c                     t        t        d      j                  d            dk(  sJ t        t        dd      j                  d            dk(  sJ t        t        dd      j                  d            d	k(  sJ t        t        d
d      j                  d            dk(  sJ t        t        dt              j                  d            dk(  sJ t        t        dt              j                  d            dk(  sJ t        t        dt              j                  d            dk(  sJ t        t        t              j                  d            dk(  sJ t        t        t        t              j                  d            dk(  sJ t        dd      j                         t
        j                  u sJ t        dd      j                         t
        j                  u sJ y )Ng      ?r]   rl   z1.280372306rS   z1.154576311      @r|   z100.0000000g      @rn   z2.592857143rR   rm   z1.113314732g     @@z1.176241563z0.6718659855 + 1.076674047*Iz-0.3970915266 + 1.9629689*Ig      g       g       @)rt   r   rs   r   r
   r   r   rM   rN   rO   test_harmonic_evalfr   =  s   x}""R"()]:::xQ%%%+,===xR &&&,->>>xS!''"'-.-???x2$$r$*+}<<<x2$$r$*+}<<<x#))B)/0MAAAx{  2 &'+IIIIx1~##b#)*.KKKKD!""$---D#$$&!%%///rN   c                     ddl m}  t        d      }t        ddd      }t        dd      }t        d	d
      }t        |      j	                  t
              t        d|dz         t        z   k(  sJ t        |      j	                  t              t        d|dz         t        z   k(  sJ t        |      j	                  t              t        d|dz         t        z   k(  sJ t        |d      j	                  t              t        d|dz         dz  t        dd      dz  z
  k(  sJ t        t        ||      j	                  t              |       sJ t        t        |dz               t        |      d|dz   z  z   d|dz   z  z   d|dz   z  z   d|dz   z  z   k(  sJ t        t        |dz
              t        |      d|dz
  z  z
  d|dz
  z  z
  d|dz
  z  z
  d|z  z
  k(  sJ t        ||      j	                  d      t        ||      j	                  t              k(  sJ t        ||      j	                  d      t        ||      k(  sJ t        ||dz         j	                  d      t        |dz         t        |dz   |dz         z
  k(  sJ t        ||      j	                  d      t        |      t        ||dz         z
  k(  sJ t        d      }t        |      j	                  t              j                  t        d|z  |d|f            sJ t        ||      j	                  t              j                  t        || z  |d|f            sJ y )Nr   ry   rh   re   Tri   x1rj   x2r   rR   rU   rS   rV   	tractablek)r~   rz   r   r   r   r7   r9   r   r8   ru   r   r?   r   r   dummy_eq)rz   rh   re   r   r   _ks         rO   test_harmonic_rewriter   K  s   >sAsD40A	t	$B	t	$BA;w'9QA+>+KKKKA;x(IaQ,?*,LLLLA;y)Yq!a%-@:-MMMMAa=  +yAE/B1/DyQRTUWXGX/XXXXhqm++I6	BBBx!}%!q!a%y)@1a!e9)LqRSVWRWy)X[\^_bc^c[d)ddddx!}%!q!a%y)@1a!e9)LqRSVWRWy)X[\]^[^)^^^^Aq>!!+.(1a.2H2H2SSSSAr?"";/8Ar?BBBArAv&&{3tBF|d2PQ6STWXSXFY7YYYYAr?"";/48d2q1uo3MMMM	sBA;s#,,S2Aqz-BCCCAq>!!#&//B!Hr1aj0IJJJrN   c                     t        dd      } t        dd      }t        t        d      j                  t        d      dk(  sJ t        t        |       j                  t        d      dk(  sJ t        t        d      j	                  t        | d      t        |       t        | z
  t        d| dz         z  z   t        t        | z
  dz  t        | f      z   k(  sJ t        t        t        |       t        t              t        t        |       k(  sJ t        t        t        | dz         t        t              t        | dz         k(  sJ t        t        t        | dz
        t        t              t        t        | dz
        k(  sJ t        t        t        |      t        t              t        t        t        |      t        t        d	
      k(  sJ t        t        t        |dz         t        t              t        k(  sJ t        t        t        |dz         t        t              t        t        |dz         k(  sJ t        t        t        |dz
        t        t              t        t        t        |dz
        t        t        d	
      k(  sJ y )NyTr   zr   rR   r   rS   -)dir)	r   r   rJ   r   seriesr?   r   r   r   )r   r   s     rO   test_harmonic_calculusr   f  s   sT"AsT"AAq>1%***Aq>1%***Aq>  Aq)QK1q5$q!a%.001a!eaZ!Q3HHI I I!QB'8B?:::!QU#Q+tAE{:::!QU#Q+xAE/BBBB!QB'5!QBC+PPPP!QU#Q+r111!QU#Q+xAE/BBBB!QU#Q+uXaQ5GBTW/XXXXrN   c                     t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      d	k(  sJ t        d
      dk(  sJ t        dd      dk7  sJ t        dd      } t        |       dk7  sJ t        |       j                  | d      dk(  sJ t        d      t        j                  dz  k(  sJ t        dd      dt        d      z  k(  sJ t        d      j                         dt        j                  z  j                         k(  sJ t        d      j                         t        j                  dz  dz  j                         k(  sJ t        t        d      j                  d            dk(  sJ t        t        dd      j                  d            dk(  sJ t        t        t              j                  d            dk(  sJ t        t        t        t              j                  d            dk(  sJ t        d      j                         dk(  sJ t        dd      j                         dk(  sJ t        |       j                  t              t        |       k(  sJ t        ddd       } t        d| z  dz         j                  t              dk(  sJ t        d!      }t        d"      }t        d| z        j                  t              j                  t        t        d|z  d| z  z  t        | z  z  d|z  |z   d| z  dz   z  z  t        ||      z  |z  |d|f|dd| z  dz   f      z        sJ y )#Nr   rR   rS   rW   rU   rV   rY   rT   ir\   i  r   Fr`   l   $8gC
 rh   Trc   r{   r|      rk   r]   rl   z-1.052850274ro   g333333@z3.575613489z1.248446443 - 0.7675445124*Iz0.04812930469 + 0.01052411008*IgPM1Brf   jr   )r    r   r   r   Pir6   rs   Catalanrt   r
   r   r   r   r   r1   )rh   _jr   s      rO   
test_eulerr   v  s,   8q==8q==8r>>8q==8q==8s??8te$777sD!A8r>>8==A"$$$9q   Q<1SV8###9??199 3 3 55559??q2 4 4 6666uSz"%&.888uS#$$r$*+}<<<uQx~~~#$(FFFFuQ{  2 &'+LLLL9?? 1111e$**,0AAAA8C E!H,,,sDd3A1q>!!#&!+++	sB	sB1:c"++c2(1s8#AH,bebjAaC!G-DD2r"##%&(*Ar{RAaC!G4DF FG G GrN   c                  z    t        ddd      } t        |       dk(  sJ t        dd      } t        |       dk7  sJ y )Nrh   T)oddrj   r   r   )r   r    rl   s    rO   test_euler_oddr     s<    st,A8q==sA8q==rN   c                     t        dt              dk(  sJ t        dt              t        t        j                  z
  k(  sJ t        dt              t        dz  t        z
  k(  sJ t        dt              t        dz  dt        dz  z  dz  z
  t	        dd      z   k(  sJ t        d      } t        t        | t              t               sJ ddlm}  |d      }t        d	t        j                        j                  d
      }t        ||z
  |z        dk  sJ  |d       |d      t        z  z   } |d       |d      t        z  z   }t        t        d|      |z
        dk  sJ y )Nr   rR   rS   rU   rV   re   )r	   z(-0.46237208575048694923364757452876131e8r   r   ghe99g?g?gu,mgGY㭁@r   g|=)r    rJ   r   rp   r   r   ru   sympy.core.numbersr	   r   rs   r   r
   )re   r	   r   Br   expecteds         rO   test_euler_polynomialsr    s2   A;!A;!aff*$$$A;!Q$("""A;!Q$!AqD&!+hq!n<<<<sAeAqk5)))(89Ab!$$b!AAqy>E!!!c
U3Z\!A&(51A+BQ+FFHuR|h&'%///rN   c                      t        d      } t        | t              j                  d      }|j	                  | dt        di      j                         t        dd      k(  sJ y )Nre   r   rU   rY   )r   r    rJ   r   r   r   )re   r   s     rO   test_euler_polynomial_rewriter    sO    sAaE"A661Q!*""$a333rN   c                  	   t        dd      } t        ddd      }t        ddd      }t        dd	      }g d
}t        |      D ]  \  }}t        |      |k(  sJ t        |       j                  t              j                  | |      |k(  sJ t        |       j                  t              j                  | |      j                         |k(  rJ  t        t        t              sJ t        dt        z        j                  t              t        dt        z  dt        z        dt        z  dz   z  k(  sJ t        t        j                        j                  t              ddt        z  z  k(  sJ t        t        j                        j                  t              j                  t              ddt        z  z  k(  sJ t        dt        z        j                  t              ddt        z  z  t        dt        z  t        j                  z         z  t        t              t        dt        z  dz         z  z  k(  sJ t        t              j                  t               t!        t         dz   t         fdd      k(  sJ t        |       j                  t              t	        d| z        t	        | dz         t	        |       z  z  k(  sJ t#        t        |       j                  t              t              sJ t#        t        |      j                  t              t              sJ t%        t        t              t              t'        dt        t        j                  z         t'        dt        dz         z
  t)        d      z   t        t              z  k(  sJ t        t              j+                         t        t              k(  sJ t        t        j                        j+                         }t-        |      dk(  sJ t        t.              j+                  d      }t-        t1        |      t3        |      f      dk(  sJ t        |      j4                  du sJ t        |      j6                  du sJ t        |dz         j8                  du sJ y )Nrh   Trc   re   ri   r   rf   rq   )rg   )rR   rR   rS   rY      rZ      i  i  i  iA  i  rS   rV   rR   r\   rU   )rS   r   z0.848826363156775z(0.398, -0.0209))r   	enumerater!   r   r:   r   r   r   rC   rJ   r1   r   rp   r2   r   r3   r5   ru   r   r9   r6   rs   rt   r
   r   r   is_positive
is_integeris_composite)rh   re   r   rq   catalansr   r   s          rO   test_catalanr    s   sD!AsD40AsDd3As%AGH(# B1qzQqz!!),11!Q71<<<qz!!'*//15::<AAAB
 Wa   1Q3<)Xac1Q3-?1q-IIII166?""5)Q"X555166?""9-55e<	QV  1Q3<&!	!+1Q3< +!"&r(51q>"9+; ; ; ;1:e$rAvrlD!(DDDD1:i(IacNiA>N@I!?M -N N N Ngaj((17;;;gaj((17;;;
A9	1qvv:$"1a!e,$-/21v$67>qz#B B B B 1:+++Aq6((((
A1r!u~"4444 1:!!T)))1:  D(((1Q3<$$,,,rN   c                  	   g d} t        |       D ]  \  }}t        |      |k(  rJ  t        dd      }t        ddd      }t        t        |      sJ t        d|z  dz         d	k(  sJ ddd|z  z
  z  t	        |      z  }t        |      j                  t              j                         |j                         k(  sJ dt	        |t              d|z  t	        |t        dz   dz        z  z
  z  }t        |t              j                  t              j                         |j                         k(  sJ t        d|z        j                  sJ t        d|z        j                  d
u sJ t        d|z  dz         j                  sJ t        |      j                  sJ t        d|z        j                  sJ t        dd
      j                  t        d      j                  k(  sJ t        dd
      j                  sJ t        d|z  dz         j                  sJ t        d|z  dz         j                  d
u sJ t        d|z  dz
        j                  sJ t        d	d
      }|j                  d
u sJ |j                  d
u sJ |j                  du sJ |j                  d
u sJ t        d	t              d	k(  sJ t        dt              dk(  sJ t        dt              ddt        z  z
  k(  sJ t        dt              dt        z  dt        dz  z  z
  k(  sJ t        dt              ddt        dz  z  z   dt        dz  z  z
  k(  sJ t        d      }t        dt        |z   dz        dt        |z   dz  z  dt        |z   dz  z  z   dt        |z   dz  z  z
  k(  sJ t        t        dd      j!                  d            dk(  sJ t        t        t#        dd            j!                  d            dk(  sJ t        t        d      j!                  d            dk(  sJ t        t        d d!      j!                  d            d"k(  sJ t        t        t$        d#      j!                  d            d$k(  sJ t        d      }t        |t              j                  t&              d|z  t'        d|z
  t              z  k(  sJ y )%N)	r   rW   rW   r   rR   r   r|   r      re   Trc   rh   ri   rS   rR   r   FrV   rT   r`   r|   r\   rW   rU   r   rY   r   r     r]   i,  g      @r   rl   z-660.0000000z-1.104286457r{   z3.606170709g?g@z-1.847375373rn   z-0.3161917278 - 1.45311955*I)r
  r"   r   rC   r   r   factorrJ   is_oddis_evenr  r  rL   r   is_negativert   rs   r   r
   r@   )	genocchisrh   gre   gngnxg0r   s           rO   test_genocchir    sg   /I)$  1{a  	sD!AsD40AXq!!!AaC!G!!!	
a!Q$h)A,	&BA;y)002biikAAA
yAA	!acQY(?!??
@CAq>!!),335EEEAE?!!!!AE?""e+++AEAI&&&&A;!!!!AE?&&&&A&//1R5>>AAAA&////AEAI****AEAI**e333AEAI****	!e	$B>>U""">>U"""::99Aq>QAq>RAq>Q1W$$$Aq>QqS1QT6\)))Aq>R!AqD&[1QT61111sAA!cz"b!A#mb!A#m&Ca1s
l&RRRRxS!''"'-..@@@xA'---34FFFx|!!B!'(M999xS!''"'-..@@@x3%%%+,0NNNNsAAq>!!-0BqD=1a;P4PPPPrN   c                  D   g d} t        |       D ]  \  }}t        |      |k(  rJ  t        t        j                        t        j                  k(  sJ t        d      t	        d       k(  sJ t        d      dt        j
                  z  k(  sJ t        d      dt        d      z  dz  k(  sJ t        d      d	t        d
      z  dz  k(  sJ t        t        d      sJ t        ddd      }t        t        |      sJ t        |      j                  du sJ t        |      j                  du sJ t        t        dd      j                  d            dk(  sJ t        t        dd      j                  d            dk(  sJ t        t        dd      j                  d            dk(  sJ t        t        dd      j                  d            dk(  sJ t        t        t        d      j                  d            dk(  sJ t        t              j                  t               t         t        dz   z  t!        t         t              z  t        t        dz   z  t!        t         t               z  z   k(  sJ t        t              j                  t              dt#        t        dz         z  dt$        z  t        dz   z  z  t        t        dz   t'        dd            t)        t$        t        z        t        t        dz   t'        dd            z  z
  z  k(  sJ y )N)rR   rR   rR   rS   rY   r   =   i  r   i   iY  rW   rS   r{   r|   rU   r   r   rY      r}   rh   Trf   r]   Fr`   rl   z50521.00000z-0.6931471806z-1.831931188z1.977889103z2.378417833 + 0.6343322845*IrR   rV   )r
  r#   r   r   r6   r   r?   rC   r   r  r  rt   rs   r
   rJ   r   r>   r2   r   r   r<   )numsrh   r   s      rO   
test_andrer"    s   :D$ 1Qx1}}

***9Q9199$$$9$q'	"$$$9DGC''' UBsDd3AUA8$&&&84'''uR%(...45FFFuR%(...45HHHuR%(...45GGGuR%(...45FFFuQ'---348VVVV8G$R1Q3K'1"a.(1qs8gqb1"o+EEF F F8D!ac
Nadac]*!A#x!}%BqD	D1hqm4L(LLNN N NrN   c                  p   g d} t        |       D ]  \  }}t        |      |k(  rJ  t        d      }t        dd      }t        dd      }t        ddd	      }t        d
dd      }t        |      j                  sJ t        |      j                  rJ t        |      j
                  sJ t        |      j                  sJ t        |      j                  sJ t        |      j                  |d      dk(  sJ t        |      j                  |d      dk(  sJ t        t        d        t        dd      dz  dk(  sJ t        d|z  dz         dz  dk(  sJ t        dd      dz  dk(  sJ t        d|z  dz         dz  dk(  sJ t        dd      dz  dk(  sJ t        d|z  dz         dz  dk(  sJ y )N)	rR   rR   rS   rU   rY   r[   r   r      rJ   r   Trealre   rc   rh   rd   r   rq   rf   r[   r   r\   r$  c                  ,    t        t        dd            S )NrY   rV   )r$   r   rM   rN   rO   r   z test_partition.<locals>.<lambda>C  s    iA7 rN   r   Fr`   rY   r   rV   /   2   r   rT   )r
  r$   r   r  r  is_nonnegativeis_zeror  r   rF   	TypeError)partition_numsrh   rq   rJ   r   re   s         rO   test_partitionr/  1  s   3N.) !1|q   ! 	sAsAsD!AsD40AsDd3AQ<""""|''''Q<&&&&Q<Q<####Q<Q"b(((Q<Q"b(((
978Q'!+q000QqS1W!Q&&&R%(1,111QqS1W!Q&&&R%(2-222RTAX#q(((rN   c                     t        dd      t        t        fd       t        t        d        t        t        fd       t        t        d        t        dd      t        t        fd	       t        t        d
        t        dd      t        t        fd       t        t        d        t        dd      } t        dd      }t	        | d      | dz   k(  sJ t	        | |      | |z  dz   k(  sJ t        ddd      }t	        |      j
                  du sJ t	        |      j                  du sJ t        ddd      }t	        d|      dd|z  z  d|z  z   dz   k(  sJ t	        d|      d|z  dz   d|z  dz   z  k(  sJ t	        d      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ y ) Nre   Frc   c                      t               S r   r%   re   s   rO   r   z$test_divisor_sigma.<locals>.<lambda>O  s    mA. rN   c                      t        d      S N      @r2  rM   rN   rO   r   z$test_divisor_sigma.<locals>.<lambda>P  s    mC0 rN   c                      t        d       S NrR   r2  r3  s   rO   r   z$test_divisor_sigma.<locals>.<lambda>Q      mAq1 rN   c                      t        dd      S NrR   r6  r2  rM   rN   rO   r   z$test_divisor_sigma.<locals>.<lambda>R      mAs3 rN   r   c                      t               S r   r2  r3  s   rO   r   z$test_divisor_sigma.<locals>.<lambda>T  s    }Q/ rN   c                      t        d      S Nr   r2  rM   rN   rO   r   z$test_divisor_sigma.<locals>.<lambda>U  s    }Q/ rN   Tr   c                      t        d       S r8  r2  r3  s   rO   r   z$test_divisor_sigma.<locals>.<lambda>W      }Q2 rN   c                      t        dd      S NrR   rW   r2  rM   rN   rO   r   z$test_divisor_sigma.<locals>.<lambda>X      }Q3 rN   rq   primer   rR   rh   ri   )rd   zerorV   rS   rT   rU   i[  i  r   r   ilR+l   ` A[5)r   rF   r-  r   r%   r  r  rq   r   rh   re   s      @rO   test_divisor_sigmarI  L  s   sE"A
9./
901
912
934sU#A
:/0
:/0sT"A
:23
:34 	s$AsD!AA!a%'''A!Q$(*** 	sD40A&&$...''4/// 	sDu-AA!ac(QT/A"5555A1a4!81q"9999 5((("b((("e+++"i///"n444rN   c                  t   t        dd      t        t        fd       t        t        d        t        t        fd       t        t        d        t        dd      t        t        fd	       t        t        d
        t        dd      t        t        fd       t        t        d        t        dd      } t        dd      }t	        | d      | dz   k(  sJ t	        | |      | |z  dz   k(  sJ t        ddd      }t	        |      j
                  du sJ t	        |      j                  du sJ g d}t        |d      D ]  \  }}t	        |d      |k(  rJ  g d}t        |d      D ]  \  }}t	        |d      |k(  rJ  g d}t        |d      D ]  \  }}t	        |d      |k(  rJ  y )Nre   Frc   c                      t               S r   r&   r3  s   rO   r   z%test_udivisor_sigma.<locals>.<lambda>u  s    nQ/ rN   c                      t        d      S r5  rL  rM   rN   rO   r   z%test_udivisor_sigma.<locals>.<lambda>v  s    nS1 rN   c                      t        d       S r8  rL  r3  s   rO   r   z%test_udivisor_sigma.<locals>.<lambda>w  s    nQ2 rN   c                      t        dd      S r;  rL  rM   rN   rO   r   z%test_udivisor_sigma.<locals>.<lambda>x  s    nQ4 rN   r   c                      t               S r   rL  r3  s   rO   r   z%test_udivisor_sigma.<locals>.<lambda>z  s    ~a0 rN   c                      t        d      S r?  rL  rM   rN   rO   r   z%test_udivisor_sigma.<locals>.<lambda>{  s    ~a0 rN   Tr   c                      t        d       S r8  rL  r3  s   rO   r   z%test_udivisor_sigma.<locals>.<lambda>}  s    ~a3 rN   c                      t        dd      S rC  rL  rM   rN   rO   r   z%test_udivisor_sigma.<locals>.<lambda>~  s    ~a4 rN   rq   rE  r   rR   rh   ri   )<rR   rS   rS   rS   rS   rV   rS   rS   rS   rV   rS   rV   rS   rV   rV   rS   rS   rV   rS   rV   rV   rV   rS   rV   rS   rV   rS   rV   rS   r\   rS   rS   rV   rV   rV   rV   rS   rV   rV   rV   rS   r\   rS   rV   rV   rV   rS   rV   rS   rV   rV   rV   rS   rV   rV   rV   rV   rV   rS   r\   r   )/rR   rU   rV   rY   rT   r   r\   r   r]      r   r   r  r   r   r  rT  rX   r   rX   r   r   r   r   r   rZ      (   rX   H   r   r   0   r   rX  r*  &   r   8   r   rZ   `   ,   r   r   rW  rX  )%rR   rY   r]   r  r   r*  r*  A   R      z      ra     i  i  i"  i  ij  i  i  ib  i  i  ir  R  i  rc  iJ    i  i  i  i  rd  ir  iZ  rS   )r   rF   r-  r   r&   r  r  r
  )rq   r   rh   A034444valA034448A034676re   s          @rO   test_udivisor_sigmari  r  s   sE"A
9/0
912
923
945sU#A
:01
:01sT"A
:34
:45 	s$AsD!A!Q1q5(((!Q1a4!8+++ 	sD40A!''4///!((D000KG GQ' +3a#s***+KG GQ' +3a#s***+MG GQ' +3a#s***+rN   c                  0   t        dd      t        t        fd       t        t        d        t        t        fd       t        t        d        t        dd      t        t        fd	       t        t        d
        t        dd      t        t        fd       t        t        d        t        dd      } t        dd      }t	        | |z  |       dk(  sJ t	        d|       dk(  sJ t        d      }t        d      t	        |      j
                  du sJ t	        |      j                  du sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ y )Nre   Frc   c                      t         d      S NrU   r'   r3  s   rO   r   z&test_legendre_symbol.<locals>.<lambda>      oa3 rN   c                      t        dd      S Nr6  rU   rm  rM   rN   rO   r   z&test_legendre_symbol.<locals>.<lambda>  s    oc15 rN   c                      t        d       S r8  rm  r3  s   rO   r   z&test_legendre_symbol.<locals>.<lambda>  rn  rN   c                      t        dd      S r;  rm  rM   rN   rO   r   z&test_legendre_symbol.<locals>.<lambda>  s    oa5 rN   rE  c                      t        d       S r8  rm  r3  s   rO   r   z&test_legendre_symbol.<locals>.<lambda>      q!4 rN   c                      t        dd      S )NrR   rT   rm  rM   rN   rO   r   z&test_legendre_symbol.<locals>.<lambda>      q!4 rN   r   c                      t        d       S r8  rm  r3  s   rO   r   z&test_legendre_symbol.<locals>.<lambda>  rt  rN   c                      t        dd      S NrR   rS   rm  rM   rN   rO   r   z&test_legendre_symbol.<locals>.<lambda>  rv  rN   rq   Tr   r   rR   rh   rY   r   r   )   C   e   rW   r   r   rU   )r   rF   r-  r   r'   r  rL   rH  s      @rO   test_legendre_symbolr}    s|   sE"A
934
956
934
956s% A
:45
:45sA
:45
:45 	s$AsD!A1Q3"a'''1a A%%% 	sAsA1a ++t3331a ))U222 1b!Q&&&2r"a'''2s#r)))1b!Q&&&1a A%%%rN   c                     t        dd      t        t        fd       t        t        d        t        t        fd       t        t        d        t        dd      t        t        fd	       t        t        d
        t        dd      t        t        fd       t        t        d        t        dd      } t        dd      }t	        | |z  |       dk(  sJ t	        d|       dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t        d      }t        d      t	        |      j
                  du sJ t	        |      j                  du sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ t	        dd      dk(  sJ y ) Nre   Frc   c                      t         d      S rl  r(   r3  s   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  r9  rN   c                      t        dd      S rp  r  rM   rN   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  s    mC3 rN   c                      t        d       S r8  r  r3  s   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  r9  rN   c                      t        dd      S r;  r  rM   rN   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  r<  rN   r   c                      t        d       S r8  r  r3  s   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  rA  rN   c                      t        dd      S )NrR   r  rM   rN   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  rD  rN   r   c                      t        d       S r8  r  r3  s   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  rA  rN   c                      t        dd      S ry  r  rM   rN   rO   r   z$test_jacobi_symbol.<locals>.<lambda>  s    }Q2 rN   rq   Tr   r   rR   rh   r   rz  iS   rW   rU   r   rZ   a   rY   r[   rS   )r   rF   r-  r   r(   r  rL   rH  s      @rO   test_jacobi_symbolr    s   sE"A
912
934
912
934sU#A
:23
:34sA
:23
:23 	sD!AsD!A1a A%%%A!###A!###A!### 	sAsAA))T111A''5000 R A%%%b!R'''A!###R B&&&A"$$$A!###A!###A!###A!###A!###rN   c                  ^   t        dd      t        t        fd       t        t        d        t        t        fd       t        t        d        t        dd	      } t        d
|       d
k(  sJ t        d
d
      d
k(  sJ t        dd
      d
k(  sJ t        d      }t        d      t        |      j                  d	u sJ t        |      j
                  du sJ t        ddd      D ]  }t        | |      D ]v  }t        ||      }|t        ||      k(  sJ t        ||       }|dk  r| |k(  s	J ||k(  sJ t        |d|z        }|dz  dk(  r|dk(  r^J |dz  dv r||k(  rmJ | |k(  rvJ   t        d
d      t        dd      cxk(  rd
k(  sJ  J t        dd      dk(  sJ y )Nre   Frc   c                      t         d      S rl  r)   r3  s   rO   r   z'test_kronecker_symbol.<locals>.<lambda>      .q!4 rN   c                      t        dd      S rp  r  rM   rN   rO   r   z'test_kronecker_symbol.<locals>.<lambda>  s    .sA6 rN   c                      t        d       S r8  r  r3  s   rO   r   z'test_kronecker_symbol.<locals>.<lambda>  r  rN   c                      t        dd      S r;  r  rM   rN   rO   r   z'test_kronecker_symbol.<locals>.<lambda>  s    .q#6 rN   rq   TrR   r   rh   rU   r]   rS   r\   )rR   r[   rW   )r   rF   r-  r)   r  rL   r   r(   )rq   rh   r   rf  minusr   re   s         @rO   test_kronecker_symbolr    s   sE"A
945
967
945
967 	sD!AAq!Q&&&Aq!Q&&&Aq!Q&&& 	sAsAAq!,,444Aq!**e333 1b!_ $r1 	$A"1a(C-1----$Q+E1uv}$}|#|#Aq1u-D1uzqy yQ&s{"{u|#|	$$  Aq!%5b!%<AAAAAAAq!Q&&&rN   c                     t        dd      t        t        fd       t        t        d        t        dd      t        t        fd       t        t        d        t        d	d
      } t	        |       dk(  sJ t        dd
d
      }t	        |      j
                  d
u sJ t	        |      j                  du sJ t        dd
d
      }t        dd
d
      }t	        |dz        dk(  sJ t	        d|z        dk(  sJ t        t	        ||z        t              sJ t	        ||dz   z        dk(  sJ t        t	        d|z        t              sJ t	        d|dz   z        dk(  sJ t        d      t        t	        dz        t              sJ t	        d      dk(  sJ t	        d      dk(  sJ t	        d      dk(  sJ t	        d      dk(  sJ g d}t        |d      D ]  \  }}t	        |      |k(  rJ  y )Nre   Frc   c                      t               S r   r*   r3  s   rO   r   ztest_mobius.<locals>.<lambda>  s    fQi rN   c                      t        d      S r5  r  rM   rN   rO   r   ztest_mobius.<locals>.<lambda>  s
    fSk rN   r   c                      t               S r   r  r3  s   rO   r   ztest_mobius.<locals>.<lambda>  s    vay rN   c                      t        d      S r   r  rM   rN   rO   r   ztest_mobius.<locals>.<lambda>  s
    vbz rN   rq   TrE  rW   rh   ri   r   rS   r   rV   rR   rU   [   i     )8rR   rW   rW   r   rW   rR   rW   r   r   rR   rW   r   rW   rR   rR   r   rW   r   rW   r   rR   rR   rW   r   r   rR   r   r   rW   rW   rW   r   rR   rR   rR   r   rW   rR   rR   r   rW   rW   rW   r   r   rR   rW   r   r   r   rR   r   rW   r   rR   r   )	r   rF   r-  r   r*   r  rL   ru   r
  )rq   rh   r   A008683rf  re   s        @rO   test_mobiusr    s   sE"A
9'(
9)*sU#A
:()
:)* 	s$A!9?? 	sD40A!94'''!9&&& 	sD40AsD40A!Q$<1!A#;!fQTlF+++!ac(q   fQTlF+++!ac(q   sAfQqSk6*** $<1!9>>&>R%=AMG GQ'  3ayC rN   c                  4   t        dd      t        t        fd       t        t        d        t        dd      t        t        fd       t        t        d        t        d	d
      } t	        |       dk(  sJ t        dd
d
      }t	        |      j
                  d
u sJ t	        |      j                  d
u sJ t	        d      dk(  sJ t	        d      dk(  sJ t	        d      dk(  sJ g d}t        |d      D ]  \  }}t	        |      |k(  rJ  y )Nre   Frc   c                      t               S r   r+   r3  s   rO   r   ztest_primenu.<locals>.<lambda>>      gaj rN   c                      t        d      S r5  r  rM   rN   rO   r   ztest_primenu.<locals>.<lambda>?  
    gcl rN   r   c                      t               S r   r  r3  s   rO   r   ztest_primenu.<locals>.<lambda>A      wqz rN   c                      t        d      S r?  r  rM   rN   rO   r   ztest_primenu.<locals>.<lambda>B  
    wqz rN   rq   TrE  rR   rh   ri   r  rS     rU   ȿ  )$r   rR   rR   rR   rR   rS   rR   rR   rR   rS   rR   rS   rR   rS   rS   rR   rR   rS   rR   rS   rS   rS   rR   rS   rR   rS   rR   rS   rR   rU   rR   rR   rS   rS   rS   rS   )r   rF   r-  r   r+   r  r+  r
  )rq   rh   A001221rf  re   s       @rO   test_primenur  ;  s   sE"A
9()
9*+sU#A
:)*
:)* 	s$A1:?? 	sD40A1:  D(((1:$$,,, 4=A7q   $%***EGGQ' !3qzS   !rN   c                  4   t        dd      t        t        fd       t        t        d        t        dd      t        t        fd       t        t        d        t        d	d
      } t	        |       dk(  sJ t        dd
d
      }t	        |      j
                  d
u sJ t	        |      j                  d
u sJ t	        d      dk(  sJ t	        d      dk(  sJ t	        d      dk(  sJ g d}t        |d      D ]  \  }}t	        |      |k(  rJ  y )Nre   Frc   c                      t               S r   r,   r3  s   rO   r   z!test_primeomega.<locals>.<lambda>Z  s    jm rN   c                      t        d      S r5  r  rM   rN   rO   r   z!test_primeomega.<locals>.<lambda>[  s
    jo rN   r   c                      t               S r   r  r3  s   rO   r   z!test_primeomega.<locals>.<lambda>]  s    z!} rN   c                      t        d      S r?  r  rM   rN   rO   r   z!test_primeomega.<locals>.<lambda>^  s
    z!} rN   rq   TrE  rR   rh   ri   r  rS   r  rU   r  rT   )$r   rR   rR   rS   rR   rS   rR   rU   rS   rS   rR   rU   rR   rS   rS   rV   rR   rU   rR   rU   rS   rS   rR   rV   rS   rS   rU   rU   rR   rU   rR   rY   rS   rS   rS   rV   )r   rF   r-  r   r,   r  r+  r
  )rq   rh   A001222rf  re   s       @rO   test_primeomegar  W  s   sE"A
9+,
9-.sU#A
:,-
:,- 	s$Aa=A 	sD40Aa=##t+++a=''4/// dq   g!###'(A---EGGQ' $3!}###$rN   c                     t        dd      t        t        fd       t        t        d        t        dd      t        t        fd       t        t        d        t        d	d
      } t	        |       | dz
  k(  sJ t        dd
d
      }t	        |      j
                  d
u sJ t	        |      j                  d
u sJ t	        d      t	        t        d            cxk(  rdk(  sJ  J t	        d      t	        t        d            cxk(  rdk(  sJ  J t	        d      t	        dddd      cxk(  rdk(  sJ  J g d}t        |d      D ]  \  }}t	        |      |k(  rJ  y )Nre   Frc   c                      t               S r   r-   r3  s   rO   r   ztest_totient.<locals>.<lambda>v  r  rN   c                      t        d      S r5  r  rM   rN   rO   r   ztest_totient.<locals>.<lambda>w  r  rN   r   c                      t               S r   r  r3  s   rO   r   ztest_totient.<locals>.<lambda>y  r  rN   c                      t        d      S r?  r  rM   rN   rO   r   ztest_totient.<locals>.<lambda>z  r  rN   rq   TrE  rR   rh   ri   r  rW  r  i   r  rU   rS   rS   r  r   iU  ).rR   rR   rS   rS   rV   rS   rT   rV   rT   rV   r]   rV   r   rT   r\   r\   r   rT   rT  r\   r   r]   r$  r\   r   r   rT  r   rU  r\   rX   r   r   r   r   r   r   rT  r   r   rV  r   rZ   r   r   r$  )	r   rF   r-  r   r-   r  r  rB   r
  )rq   rh   A000010rf  re   s       @rO   test_totientr  s  s]   sE"A
9()
9*+sU#A
:)*
:)* 	s$A1:Q 	sD40A1:  D(((1:!!T))) 4=GIdO4DDDDDD7wy'9:KmKKKKK$%QA11E)FcJccccccGG GQ' !3qzS   !rN   c                     t        dd      t        t        fd       t        t        d        t        dd      t        t        fd       t        t        d        t        d	d
      } t	        |       | dz
  k(  sJ t        dd
d
      }t	        |      j
                  d
u sJ t	        |      j                  d
u sJ t	        d      t	        t        d            cxk(  rdk(  sJ  J t	        d      t	        t        d            cxk(  rdk(  sJ  J t	        d      t	        ddd      cxk(  rdk(  sJ  J t	        d      t	        dddd      cxk(  rdk(  sJ  J g d}t        |d      D ]  \  }}t	        |      |k(  rJ  y )Nre   Frc   c                      t               S r   r.   r3  s   rO   r   z&test_reduced_totient.<locals>.<lambda>  s    oa0 rN   c                      t        d      S r5  r  rM   rN   rO   r   z&test_reduced_totient.<locals>.<lambda>  s    oc2 rN   r   c                      t               S r   r  r3  s   rO   r   z&test_reduced_totient.<locals>.<lambda>  s    q1 rN   c                      t        d      S r?  r  rM   rN   rO   r   z&test_reduced_totient.<locals>.<lambda>  s    q1 rN   rq   TrE  rR   rh   ri   r  r   r  r   r\  rS   )rS   r   r]   r  rU   r  i
  )1rR   rR   rS   rS   rV   rS   rT   rS   rT   rV   r]   rS   r   rT   rV   rV   r   rT   rT  rV   rT   r]   r$  rS   r   r   rT  rT   rU  rV   rX   r\   r]   r   r   rT   r   rT  r   rV   rV  rT   rZ   r]   r   r$  .   rV   rZ   )	r   rF   r-  r   r.   r  r  rB   r
  )rq   rh   A002322rf  re   s       @rO   test_reduced_totientr    s   sE"A
901
923sU#A
:12
:12 	s$A1Q&&& 	sD40A1((D0001))T111 4 OIdO$DJJJJJJ7#y7I'JQcQQQQQ9%QA)GM2MMMMM,-QASTAU1V^Z^^^^^^GG GQ' )3q!S((()rN   c                  (   t        dd      t        t        fd       t        t        d        t        ddd      } t        |       j                  du sJ t        |       j
                  du sJ t        t              t        k(  sJ t        t               d	k(  sJ t        d
      }t        t        |      t              sJ t        d	      d	k(  sJ g d}t        |d      D ]*  \  } }t        |       t        | dz         cxk(  r|k(  r'J  J  y )Nr   Fr%  c                      t               S r   )r/   )r   s   rO   r   ztest_primepi.<locals>.<lambda>  r  rN   c                       t        t              S r   )r/   r
   rM   rN   rO   r   ztest_primepi.<locals>.<lambda>  s
    gaj rN   rh   Tri   r   rJ   )2r   rR   rS   rS   rU   rU   rV   rV   rV   rV   rY   rY   rT   rT   rT   rT   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   rR   g      ?)	r   rF   r-  r/   r  r+  r   ru   r
  )rh   rJ   A000720rf  r   s       @rO   test_primepir    s   sA
9()
9() 	sD40A1:  D(((1:$$,,, 2;"B3<1 	sAgaj'*** 1:??GG GQ' 53qzWQW-4444445rN   c            	         t        d      D  cg c]!  } t        | dz         D ]  }t        | |       # c}} g dk(  sJ t        d      D  cg c]  } t        d|        }} |g dk(  sJ t        d |D              sJ t        dd      dk(  sJ t        d	d
      dk(  sJ t        d	d	      dk(  sJ t        dd      dk(  sJ y c c}} w c c} w )NrY   rS   )rR   r   r   rR   r   r   rR   rR   r   r   rR   rR   rR   r   r   rR   rS   rR   rR   r   r   r]   )r   rR   rY   r\   r   r[   rY   rU   rS   rR   rR   c              3   >   K   | ]  }t        |      t        u   y wr   )typeint.0r   s     rO   	<genexpr>ztest__nT.<locals>.<genexpr>  s     -!tAw#~-s   r[   r   b   rR   rU   r\   )r   rA   all)r   r   checks      rO   test__nTr    s    $Qx>!q1u>AC1I>I> CH H H H!&r+ASQZ+E+5555-u----r1:??sB<1sC=Ar1:?? ?+s   &CC
c                     ddl m} m}m}m}mm} ddlm}m	m
}mm}m}mm ddlm ddlm t(        j*                  t-        d      D ]  dj/                  fdt-        d	      D              }	t1        |	      t1        t3        |	            k(  }
	 d}t-        d
      D ]J   ||	      }||z  }t1        t5         | |	                  |k(  sJ |
s4 |t1        |	            |k(  rJJ   ||	      |k(  sJ  t-        d      D ]  dj/                  fdt-        d	      D              }	t1        |	      t1        t3        |	            k(  }
	 d}t-        d
      D ]J   |	      }||z  }t1        t5         ||	                  |k(  sJ |
s4 t1        |	            |k(  rJJ   |	      |k(  sJ |
r t1        |	            |k(  sJ  t-        dd      D ]c  d}t-        ddz         D ]@   |      }|j<                  sJ ||z  }t?        fd |d      D              |k(  r@J   |      |k(  rcJ  t-        dd      D ]w  d}t-        ddz         D ]K   |t-                    }||z  }t1        t5         |t5        t-                                      |k(  rKJ   |t-                    |k(  rwJ  t-        d      D ]  dj/                  fdt-        d	      D              }	t1        |	      t1        t3        |	            k(  }
	 d}t-        dd
      D ]S   ||	      }||z  }t1        t5         ||	                  |k(  sJ |
s4 |t-        t1        |	                  |k(  rSJ  |
r |t-        t1        |	                  |k(  sJ  ||	      |k(  sJ  t-        d      D cg c]  } d|d       c}g dk(  sJ t5         |t-        d                  }t-        d      D cg c]  t?        fd|D               c}g dcxk(  r&t-        d      D cg c]  } d|d       c}k(  sJ  J t-        d      D cg c]!  }t-        d|dz         D ]  } ||d       # c}}g dk(  sJ t-        d      D cg c]   }t-        |dz         D ]  } ||d       " c}}g d k(  sJ t-        d      D cg c]   }t-        |dz         D ]  } ||d       " c}}g d!k(  sJ  d"dd       d"dd      cxk(  rdk(  sJ  J tA        t:        fd#       tC         |d$d"      tD              sJ tC         |d$d"      tD              sJ fd% |t-        d      d"      }dt?        fd&|D               dd"'      cxk(  rd	k(  sJ  J  d(d       d)d      cxk(  rdk(  sJ  J  |d"d"d*       |d+d"d*      cxk(  rd,k(  sJ  J  |d"d      dk(  sJ  |d+d      dk(  sJ  ddd*       d-dd*      cxk(  r%t1        t5         |d.d                  cxk(  rdk(  sJ  J  d-      t?        fd/t-        d$      D              cxk(  rd0k(  sJ  J  t5        d-      d      dk(  sJ  |d1       |d      cxk(  r$t1        t5         |d                  cxk(  rdk(  sJ  J  |d2      t1        t5         |d2                  cxk(  rd	k(  sJ  J  d3d"      dk(  sJ tG         d4            ddd	d
d
d	ddd5k(  sJ d6t?        fd7t-        d8      D              d9k(  sJ tA        t:        fd:       y # t6        $ r t9        |	d       t;               w xY w# t6        $ r t9        |	d       t;               w xY w# t6        $ r t9        |	d       t;               w xY wc c}w c c}w c c}w c c}}w c c}}w c c}}w );Nr   )multiset_permutationsmultiset_combinationsmultiset_partitions
partitionssubsetspermutations)nPnCnTstirling
_stirling1
_stirling2_multiset_histogram_AOP_product)Permutation)choicer    c              3   .   K   | ]  }         y wr   rM   r  r   r   r  s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>       0!F1I0   r[   r\   zfailed perm testc              3   .   K   | ]  }         y wr   rM   r  s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>  r  r  zfailed combo testrR   r]   rS   c              3   4   K   | ]  }|d    k(  sd  ywr   rR   NrM   )r  rq   r   s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>	  s     KQ1qKs   T)sizec              3   .   K   | ]  }         y wr   rM   r  s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>  r  r  zfailed partition testr   r   )kind)r   逝   l  W    "  r   rR   r   rV   rY   c              3   N   K   | ]  } |      j                   k(  sd   yw)rR   N)cycles)r  rq   r  r   s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>+  s"     ?aKN$9$9Q$>?   %%)r   rT   r   rT   rR   )signed)-rR   rW   rR   rS   r|   rR   r  r   r  rR   r   i#   irR   i  iU   r  rR     iX  i!   irR   iP3  iq  iXB  irR   r  iSr  i,r  iHr  irR   )7rR   r   rR   r   rR   rR   r   rS   rU   rR   r   rT   r   rT   rR   r   r   r*  r  r]   rR   r   x   r     r   r   rR   r   r  i  r  i  r     rR   r   i  r  iL3  r  i  r  rU  rR   r   r  r  r  r  r  r  r  r   rR   )7rR   r   rR   r   rR   rR   r   rR   rU   rR   r   rR   r[   rT   rR   r   rR   r   r   r]   rR   r   rR      Z   r]  r   rR   r   rR   ?   i-  i^     r	  rR   r   rR      i  i  i  i
  rU  rR   r   rR      i  iZ  i'  iV
  i  r   rR   rU   c                        dd      S )Nr{   rS   rM   )r  s   rO   r   ztest_nC_nP_nT.<locals>.<lambda>T  s    xA rN   rT   c                 ^    t        |       dk(  rt        S t        d  | d      D              S )NrR   c              3   D   K   | ]  }t        |d    |d   z
          ywr  )r   r  s     rO   r  z/test_nC_nP_nT.<locals>.delta.<locals>.<genexpr>]  s!     ;3qtad{#;s    rS   )lenr   min)rq   r  s    rO   deltaztest_nC_nP_nT.<locals>.deltaZ  s*    q6Q;I;WQ];;;rN   c              3   N   K   | ]  }t        fd |D              sd  yw)c              3   4   K   | ]  } |      k\    y wr   rM   )r  r   dr  s     rO   r  z*test_nC_nP_nT.<locals>.<genexpr>.<genexpr>`  s     'A!aA'A   rR   N)r  )r  rq   r  r  s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>`  s     BaC'Aq'A$ABr  )r  abbaab)replacementaabc   abcddaabbccddc              3   0   K   | ]  } d |        yw)r  NrM   )r  r   r  s     rO   r  z test_nC_nP_nT.<locals>.<genexpr>j  s     ?b!n?s   r   aaaaaaabaabbaabbaabb)rV   rR   rR   rR   )r   rR   rS   rU   rV   rY   rT   r[   )
rU   r   rV   rT   rT   rY   rY   rS   r]   rV   c              3   4   K   | ]  }       |     y wr   rM   )r  r   r  ts     rO   r  z test_nC_nP_nT.<locals>.<genexpr>t  s     5a|Aq!5r  r   i>xc                        ddi      S )NrR   r   rM   )r  s   rO   r   ztest_nC_nP_nT.<locals>.<lambda>u  s    2Ac7; rN   )$sympy.utilities.iterablesr  r  r  r  r  r  %sympy.functions.combinatorial.numbersr  r  r  r  r  r  r  r   sympy.combinatorics.permutationsr  sympy.core.randomr  stringascii_lowercaser   joinr  setlistAssertionErrorprintr   
is_IntegersumrF   ru   rE   dict)r  r  r  r  r  r  r  r  r  sutotr  r   permsrh   r   partsr  r  r  r   r  r  r  r   r  r  r  r&  s                `    @@@@@@@@@@@@rO   test_nC_nP_nTr;    s   + +Y Y Y =(A3Z GG0uQx00Fc#a&k!	C1X 21au4 5a ;<=FFFc!fa=E1112 a5C<<  3Z GG0uQx00Fc#a&k!	C1X 21au4 5a ;<=FFFc!fa=E1112 a5C<<#a&zS((($ 1b\ q!a% 	UAq!HE####5LCK*Q"=KKuTTT		U
 !u|| 1b\ #q!a% 	NAuQxOE5LCt/U1XBCDMMM	N %(|s"""# 3Z GG0uQx00Fc#a&k!	C1a[ 91au4 3Aq 9:;uDDDeCFmQ/58889 %A-(C///a5C<<( -2"I6qHQ"6 ;E E E EeAh'(E1X ?5?? "26,1!H76'(HQ"766 6 6 6 6
 r5E!QUO5  Q!$ 5$ 59J	J 	J 	J r0E!A#J0  a# 0# 0
4FF F F r0E!A#J0  Q" 0" 0
4;; ; ; Aqq!Xa%;@q@@@@@
:./ jA&000jA&000<  a!,E	AB5BBQQ%#$% & % & % eQ<2eQ<,1,,,,,a%FA4)HNBNNNNNa8q==fa=Aa%GQD)I >D&z1567>;=> > > > >g;#?eAh??E2EEEEEd7mQ1$$$f:A?#d:a=&9":?a?????f:T"5f"=>?D1DDDDDh?aY'(qQ1qQ-8 8 8 8 	(A55955AAA
:;<Q  	!Q*+,	$  	!Q+,,	F  	!Q/0,	 776500so   !A ]7"]78]7A ^^4(^)A^?+^?
1^?
_#_(_-+&_2*%_8(%_>7!^!^<?!_ c                  t    ddl m}  dg fD ]+  }dD ]$  }|dk(  r | ||      dk(  rJ  | ||      dk(  r$J  - y )Nr   )r  )rW   r   rR   rR   )r)  r  )r  rh   r   s      rO   test_PR_14617r=  x  sR    8W % 	%AAv!Qx1}$}!Qx1}$}		%%rN   c                  \     t        d      t        d       t        t         fd       y )Nrh   r   c                      t               S r   )r!   r   rh   s   rO   r   z!test_issue_8496.<locals>.<lambda>  s    gam rN   )r   rF   r-  r@  s   @@rO   test_issue_8496rA    s     sAsA
9+,rN   c                     t        ddd      } t        | dz
        t        j                  u sJ t        t	        dd            t        j
                  u sJ t        t        j                         t	        dd      k(  sJ t        d      j                         }t        |      dk(  sJ t        d	      j                         }t        |      d
k(  sJ y )Nrh   Tr'  rR   rW   rS   gffffffz6.93334070531408e-5g33333Az-4.14189164517449e-24)	r   r!   r   Zeror   r   Oners   rt   )rh   c1c2s      rO   test_issue_8601rG    s    sD40A1q5>QVV###8B?#q'8'8888AEE6?hr1o---				Br7++++				Br7----rN   c                     t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  d      dk(  sJ t        j                  dd      g dk(  sJ t        j                  dd      g d	k(  sJ t        j                  dd
      g dk(  sJ t        j                  d      g dk(  sJ t        j                  d      g dk(  sJ t        j                  d      g dk(  sJ t	        t
        d        t	        t
        d        t	        t
        d        t	        t
        d        t	        t
        d        y )NrV   Tr   r]   F   )r	  3   r  r  )r	  rJ  r  C  i@  )r	  rJ  r  rK  C  rY   )rR   rR   rS   rV   r   r[   )rR   rR   rS   rV   r   r	  rJ  )
rR   rR   rS   rV   r   r	  rJ  r  rK  rL  c                  ,    t        j                  d      S )NgQeS@r0   evalrM   rN   rO   r   ztest_motzkin.<locals>.<lambda>  s    w||E2 rN   c                  ,    t        j                  d      S )NirN  rM   rN   rO   r   ztest_motzkin.<locals>.<lambda>  s    w||B/ rN   c                  .    t        j                  dd      S )Nr{   r[   r0   find_motzkin_numbers_in_rangerM   rN   rO   r   ztest_motzkin.<locals>.<lambda>      wDDRJ rN   c                  .    t        j                  dd      S )Nr   r[   rR  rM   rN   rO   r   ztest_motzkin.<locals>.<lambda>  rT  rN   c                  ,    t        j                  d      S )Ng333333\@)r0   find_first_n_motzkinsrM   rN   rO   r   ztest_motzkin.<locals>.<lambda>  s    w<<UC rN   )r0   
is_motzkinrS  rW  rF   r   rM   rN   rO   test_motzkinrY    s$   a D(((a D(((b!U***00C8MIII00C8<NNNN00D9=TTTT((+>>>((+/FFFF((,0VVVV
:23
:/0
:JK
:JK
:CDrN   c                     ddl m} m}m}m} ddlm g } | dd      D ]  }g d}|j                         D ]/  \  }}t        |      D ]  }j                  |g|z         |dz  } 1  |      }	t        fd |      D              }
|
 |	      cxk(  r |	d      cxk(  r |	d      k(  sJ  J  |      D cg c]  }t        |       }}t        |      }|t        t        |            k(  sJ |
|k(  sJ |j                  |
        |g d	k(  sJ  d
d       d
      cxk(  rdk(  sJ  J  d       g       cxk(  r i       cxk(  rdk(  sJ  J  ddi      dk(  sJ t        t         fd        d      dk(  sJ  d      dk(  sJ t        d      D cg c]  } |       c}g dk(  sJ  d t        d      D               d      cxk(  rdk(  sJ  J  d t        d      D              dk(  sJ  ddddd      dk(  sJ  g d      dk(  sJ t        t"        fd       t        t"        fd        ddd      dk(  sJ  ddi      dk(  sJ t        t         fd       t        t         fd        t        t         fd!       t        t         fd"       t        t         fd#       t        t         fd$       t        t         fd%       t        t"        fd&       t        t"        fd'       t        t"        fd(       y c c}w c c}w ))Nr   )r  multisetmultiset_derangementsr  nDr\   rV   )r   rR   c              3   Z   K   | ]"  }t        d  t        |      D              rd $ yw)c              3   ,   K   | ]  \  }}||k7    y wr   rM   )r  r   r   s      rO   r  z1test_nD_derangements.<locals>.<genexpr>.<genexpr>  s     -41aQ-s   rR   N)r  r   )r  r   r6  s     rO   r  z'test_nD_derangements.<locals>.<genexpr>  s,      /q-3q!9--  /s   (+)rR   rV   rT   r   r   r   r  ~   i;  i  i)  i  i  i6  i9  
1112233456T)brutei?  r  c                        ddi      S rC  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>      r1b'{ rN   112)r   rT   rl   )r   r   rR   rS   r   r\  c              3       K   | ]  }|  y wr   rM   r  s     rO   r  z'test_nD_derangements.<locals>.<genexpr>  s     #Qq#   0123r   c              3       K   | ]  }|  y wr   rM   r  s     rO   r  z'test_nD_derangements.<locals>.<genexpr>  s     %q%rh  r3  rU   )r   rR   rS   rU   c                        d      S )Nr   r3  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    b1g rN   c                        d      S r   rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    bf rN   )rW   r{   c                        dd      S )N123rU   )r   rh   rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rEQ/ rN   c                        dd      S )Nrn  rR   rS   )r   re   rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rEU3 rN   c                        dd      S )Nr   rp  )rh   re   rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rA/ rN   c                        ddi      S rC  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  re  rN   c                        ddd      S )NrR   )rW   rS   r3  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rqM2 rN   c                        ddd      S )NrW   rR   rp  r3  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rqM2 rN   c                        ddg      S )NrW   rS   r3  rM   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    rRG} rN   c                         dt         i      S r8  rI   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    b!Qj rN   c                  "      dt         i      S NrR   r3  rI   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    bAq6l rN   c                  "      t         di      S rx  rI   r]  s   rO   r   z&test_nD_derangements.<locals>.<lambda>  s    bAq6l rN   )r(  r  r[  r\  r  r)  r^  itemsr   extendr4  tupler  r/  appendrF   r   r-  )r  r[  r\  r  gotr   itr   vmsrE  rF  r^  r6  s               @@rO   test_nD_derangementsr    s!   6 68
CQ GGI 	DAq1X "a a	 a[ /1!4 / /RV5r"ay5Br1I555554Q78!U1X88VSQ[   Rxx

2       l$'2l+;DuDDDDDb6RV*r"v******q!f:??
:*+e9>>;!"1X&BG&*====#%(#$6
7a77777%E!H%&!+++A!a()Q..."""
9o&
9n%1!n"""A<1
:/0
:34
:/0
:*+
:23
:23
:,-
9()
9*+
9*+A 9 's    L7+L<c                  P   ddl m}   |        5  t        j                  d      rJ 	 d d d         |        5  t        j                  dd      g k(  sJ 	 d d d         |        5  t        j
                  d      sJ 	 d d d        y # 1 sw Y   ^xY w# 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   rH   rU   r]   r   rR   )sympy.testing.pytestrH   r   is_carmichael find_carmichael_numbers_in_rangefind_first_n_carmichaelsr  s    rO   *test_deprecated_ntheory_symbolic_functionsr    s    ;		! /++A..../		! I::2rBbHHHI		! 62215556 6	/ /I I6 6s"   BB"BBBB%)r,  sympy.concrete.productsr   sympy.concrete.summationsr   sympy.core.functionr   r   
sympy.corer   r   r  r	   r
   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   r   r)  r   $sympy.functions.elementary.complexesr   r   #sympy.functions.elementary.integersr   sympy.polys.polytoolsr   sympy.series.limitsr   r   sympy.series.orderr   sympy.functionsr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   sympy.ntheory.factor_rB   sympy.core.exprrC   rD   rE   r  rF   rG   rH   	sympy.abcrJ   rP   rw   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r/  rI  ri  r}  r  r  r  r  r  r  r  r  r  r;  r=  rA  rG  rY  r  r  rM   rN   rO   <module>r     s    + ) 3 7 ; ; " 6 6 < 9 5 ( ,  Q Q Q Q Q Q Q Q Q Q Q 6 + % 3 M M 2
,0^	C162@ -6 -6`-!`=*@0K6Y "GJ0 4&-R.QbN> ) )4#5L(+V&D&$R&'R' T!8$8!:)<58	_=D%-	.E"1,h6rN   