
    MZd                     @   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@mAZA d dlmBZB d dlCmDZD d dlmEZEmFZF d dlGmHZHmIZImJZJ d dlKmLZL d ZMd ZNd ZOd ZPd ZQeId        ZRd ZSd ZTd ZUd ZVd ZWd  ZXd! ZYd" ZZd# Z[d$ Z\d% Z]d& Z^eId'        Z_d( Z`d) Zad* Zbd+ Zcd, Zdd- Zed. Zfy)/    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motzkinbinomialgammasqrtcbrthyperlogdigammatrigamma	polygamma	factorialsincoscotpolylogzetadirichlet_eta)_nT)	unchanged)GoldenRatioInteger)raisesnocache_failwarns_deprecated_sympyxc                     t        j                  dd      g k(  sJ t        j                  dd      dgk(  sJ t        j                  dd      t        j                  dd      k(  sJ t        j                  d      g dk(  sJ t        t        d        t        t        d        t        t        d	        t               5  t        j                  d
      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   1  i2  Q     )r@   rA   i  i	    c                  ,    t        j                  d      S )N)r   is_carmichael     W/usr/lib/python3/dist-packages/sympy/functions/combinatorial/tests/test_comb_numbers.py<lambda>z!test_carmichael.<locals>.<lambda>#   s    z77; rH   c                  .    t        j                  dd      S NrE      r    find_carmichael_numbers_in_rangerG   rH   rI   rJ   z!test_carmichael.<locals>.<lambda>$       zJJ2qQ rH   c                  .    t        j                  dd      S )N   rM   rN   rG   rH   rI   rJ   z!test_carmichael.<locals>.<lambda>%   rP   rH   rC   F)r   rO   find_first_n_carmichaelsr:   
ValueErrorr<   is_primerG   rH   rI   test_carmichaelrV      s    66q#>"DDD66sC@SEIII66sDAZEpEpqtqtFv v v v..q15RRRR
:;<
:QR
:QR		! 2""4(E1112 2 2s    C%%C.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      rM               rB   *         
   B   iAB   l    d(	 l   kL3 iqi@B Fevaluatez-2.23799235765713e+4767529lTintegermrh   nonnegativenrh   positiveg        ffffff@rl   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   r>   r   Halfpqevalfstrr   
isinstancer
   )brf   ri   rl   s       rI   test_bernoullir{   *   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<///rH   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   	Piecewiserl   Trj   r\   rM   rY   rE   rZ   r[   rB   rX   )$sympy.functions.elementary.piecewiser~   r   r   rewriter4   r   hasr   r>   ry   )r~   rl   s     rI   test_bernoulli_rewriter   Y   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BrH   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   rB   )rM   r\   rX   r   rX   rX   rM   rZ   d   l   ?)Z3)r   rZ   r\   rM   rX   rZ   r[   r_   l   17!rX   rM   rZ   r[   rl   ra   c                  "    t        dt              S )Nr   )r   r>   rG   rH   rI   rJ   z test_fibonacci.<locals>.<lambda>}   s    yQ/ rH   )ranger   r   r>   r   r   r   Infinityr   r(   subsexpandr8   rw   r	   simplifyr:   rT   rp   s    rI   test_fibonaccir   e   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   rX   rX   rM   r[   r_         r   l   TM(`_$
r   rX   rM   rZ   r[   rY   rB   rl   r\      !   ra   f   iJ  rE   c                  "    t        dt              S Nr\   )r   r>   rG   rH   rI   rJ   z!test_tribonacci.<locals>.<lambda>   s    z"a0 rH   )r   r   r>   r   r   r   r   ImaginaryUnitr(   r)   r   r   r   r8   rw   r	   r   r   r   rt   r:   rT   )rl   warz   cs        rI   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`   )rX   rX   rM   rB      4      im  r   rX   rM   rB   ra   r[      rZ   r   c                  *    t        t        t              S N)r   r   r>   rG   rH   rI   rJ   ztest_bell.<locals>.<lambda>   s    tB{ rH   c                      t        d      S r   )r   rG   rH   rI   rJ   ztest_bell.<locals>.<lambda>   s
    tBx rH   c                  4    t        t        j                        S r   )r   r   rt   rG   rH   rI   rJ   ztest_bell.<locals>.<lambda>   s    tAFF| rH   zx:6rY   <   )rX   ra   r   rc   i'  i )rX   rM   rZ   rZ   rB      )rX   rM   rZ   rB   i+  rl   Trj   )r   rM   rZ   r_   r   r^   7   )r   ri   )r   r   r>   r   r   r   r:   rT   r   r   rw   r   r   r   r   )rl   Xiri   s       rI   	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 ) Nrl   ri   r   rX   rM   rZ      rY   r[   r      rB   1   $         	   r`         i  i  r\   Tnegativerm   z&delete this if-block and the next line)evenrn   r   rE   )r   r   rw   r   r   r   NaNrt   r   r4   r   ComplexInfinity)rl   ri   ips      rI   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   rH   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 )#NrY   rB   r`   r   ra   r   rM   r\   r[   rX   iQ iH	H    rZ       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   r+   r   r(   r   r0   r1   r2   zipr   doitr   absrl   )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                              rI   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)))*rH   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      ?ra   rp   z1.280372306rM   z1.154576311      @r   z100.0000000g      @rr   z2.592857143rX   rq   z1.113314732g     @@z1.176241563z0.6718659855 + 1.076674047*Iz-0.3970915266 + 1.9629689*Ig      g       g       @)rx   r   rw   r   r
   r   r   rG   rH   rI   test_harmonic_evalfr   A  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#$$&!%%///rH   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   r}   rl   ri   Trm   x1rn   x2r   rX   rZ   rM   r[   	tractablek)r   r~   r   r   r   r,   r.   r   r-   ry   r   r4   r   r   dummy_eq)r~   rl   ri   r   r   _ks         rI   test_harmonic_rewriter   O  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JrH   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   rX   r   rM   -)dir)	r   r   r>   r   seriesr4   r   r   r   )r   r   s     rI   test_harmonic_calculusr   j  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XrH   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   rX   rM   r\   rZ   r[   rB   rY   ir`   i  r   Frd   l   $8gC
 rl   Trg   rE   r      ro   ra   rp   z-1.052850274rs   g333333@z3.575613489z1.248446443 - 0.7675445124*Iz0.04812930469 + 0.01052411008*IgPM1Brj   jr   )r    r   r   r   Pir+   rw   Catalanrx   r
   r   r   r   r   r&   )rl   _jr   s      rI   
test_eulerr   z  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rH   c                  z    t        ddd      } t        |       dk(  sJ t        dd      } t        |       dk7  sJ y )Nrl   T)oddrn   r   )r   )r   r    rp   s    rI   test_euler_oddr     s<    st,A8q==sA8q==rH   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 y )Nr   rX   rM   rZ   r[   ri   )r	   z(-0.46237208575048694923364757452876131e8r   r   ghe99)r    r>   r   rt   r   r   ry   sympy.core.numbersr	   r   rw   r   )ri   r	   r   Bs       rI   test_euler_polynomialsr    s    A;!A;!aff*$$$A;!Q$("""A;!Q$!AqD&!+hq!n<<<<sAeAqk5)))(89Ab!$$b!AAqy>E!!!rH   c                      t        d      } t        | t              j                  d      }|j	                  | dt        di      j                         t        dd      k(  sJ y )Nri   r   rZ   rB   )r   r    r>   r   r   r   )ri   r   s     rI   test_euler_polynomial_rewriter    sO    sAaE"A661Q!*""$a333rH   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 )Nrl   Trg   ri   rm   r   rj   ru   )rk   )rX   rX   rM   rB      r^      i  i  i  iA  i  rM   r[   rX   r`   rZ   )rM   r   z0.848826363156775z(0.398, -0.0209))r   	enumerater!   r   r/   r   r   r   r7   r>   r&   r   rt   r'   r   r(   r*   ry   r   r.   r+   rw   rx   r
   r   r   is_positive
is_integeris_composite)rl   ri   r   ru   catalansr   r   s          rI   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<$$,,,rH   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   r\   r\   r   rX   r   r   r      ri   Trg   rl   rm   rM   rX   r   Fr[   rY   rd   r   r`   r\   rZ   r   rB   r   r     ra   i,  g      @r   rp   z-660.0000000z-1.104286457rE   z3.606170709g?g@z-1.847375373rr   z-0.3161917278 - 1.45311955*I)r  r"   r   r7   r   r   factorr>   is_oddis_evenr
  r	  rU   r   is_negativerx   rw   r   r
   r5   )	genocchisrl   gri   gngnxg0r   s           rI   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PrH   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)rX   rX   rX   rM   rB   r   =   i  r   i   iY  r\   rM   rE   r   rZ   r   r   rB      r   rl   Trj   ra   Frd   rp   z50521.00000z-0.6931471806z-1.831931188z1.977889103z2.378417833 + 0.6343322845*IrX   r[   )r  r#   r   r   r+   r   r4   r7   r   r
  r	  rx   rw   r
   r>   r   r3   r'   r   r   r1   )numsrl   r   s      rI   
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rH   c                  \   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        y )N)	rX   rX   rM   rZ   rB   r_   r   r   rR   r>   r   T)realri   rg   rl   rh   r   ru   rj   r_   r   r`   rR   c                  ,    t        t        dd            S )NrB   r[   )r$   r   rG   rH   rI   rJ   z test_partition.<locals>.<lambda>D  s    y!Q8 rH   )r  r$   r   r
  r  is_nonnegativeis_zeror	  r   r:   rT   )partition_numsrl   ru   r>   r   ri   s         rI   test_partitionr(  2  s   3N.) !1|q   ! 	sAsAsD!AsD40AsDd3AQ<""""|''''Q<&&&&Q<Q<####Q<Q"b(((Q<Q"b(((
:89rH   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 )NrB   rM   )rX   r   r   rX   r   r   rX   rX   r   r   rX   rX   rX   r   r   rX   rM   rX   rX   r   r   ra   )r   rX   rB   r`   r   r_   rB   rZ   rM   rX   rX   c              3   >   K   | ]  }t        |      t        u   y wr   )typeint.0r   s     rI   	<genexpr>ztest__nT.<locals>.<genexpr>L  s     0Q$q'S.0s   r_   r   b   rX   rZ   r`   )r   r6   all)r   r   checks      rI   test__nTr3  G  s    "'(AQE!a%LAqs1ayAyA F@ @ @ @$)"I.qB
.u.88880%0000"ajAoo#rla#smq   "ajAoo B.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   rG   r.  r   r   rD  s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>_       0!F1I0   r_   r`   zfailed perm testc              3   .   K   | ]  }         y wr   rG   rG  s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>o  rH  rI  zfailed combo testrX   ra   rM   c              3   4   K   | ]  }|d    k(  sd  ywr   rX   NrG   )r.  ru   r   s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  s     KQ1qKs   T)sizec              3   .   K   | ]  }         y wr   rG   rG  s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  rH  rI  zfailed partition testr   r   )kind)r   逝   l  W    "  r   rX   r   r[   rB   c              3   N   K   | ]  } |      j                   k(  sd   yw)rX   N)cycles)r.  ru   rC  r   s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  s"     ?aKN$9$9Q$>?   %%)r   rY   r   rY   rX   )signed)-rX   r\   rX   rM   r   rX   r   r[  rX   r   i#   irX   i  iU   r  rX     iX  i!   irX   iP3  iq  iXB  irX   rP  iSrR  i,rT  iHrV  irX   )7rX   r   rX   r   rX   rX   r   rM   rZ   rX   r   rY   r   rY   rX   r   r   2   r\  ra   rX   r   x   r]     r^  r   rX   r   r_  i  r`  i  ra     rX   r   i  rb  iL3  rc  i  rd     rX   r   rP  rQ  rR  rS  rT  rU  rV  r   rX   )7rX   r   rX   r   rX   rX   r   rX   rZ   rX   r   rX   r_   rY   rX   r   rX   r   r   ra   rX   r   rX      Z   A   r   rX   r   rX   ?   i-  i^     rh  rX   r   rX      i  i  i  i
  ri  rX   r   rX      i  iZ  i'  iV
  i  r   rX   rZ   c                        dd      S rL   rG   )r>  s   rI   rJ   ztest_nC_nP_nT.<locals>.<lambda>  s    xA rH   rY   c                 ^    t        |       dk(  rt        S t        d  | d      D              S )NrX   c              3   D   K   | ]  }t        |d    |d   z
          ywrL  )r   r-  s     rI   r/  z/test_nC_nP_nT.<locals>.delta.<locals>.<genexpr>  s!     ;3qtad{#;s    rM   )lenr   min)ru   r9  s    rI   deltaztest_nC_nP_nT.<locals>.delta  s*    q6Q;I;WQ];;;rH   c              3   N   K   | ]  }t        fd |D              sd  yw)c              3   4   K   | ]  } |      k\    y wr   rG   )r.  r   drv  s     rI   r/  z*test_nC_nP_nT.<locals>.<genexpr>.<genexpr>  s     'A!aA'A   rX   N)r1  )r.  ru   ry  rv  s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  s     BaC'Aq'A$ABrY  )ry  abbaab)replacementaabc   abcddaabbccddc              3   0   K   | ]  } d |        yw)r  NrG   )r.  r   r<  s     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  s     ?b!n?s   r   aaaaaaabaabbaabbaabb)r[   rX   rX   rX   )r   rX   rM   rZ   r[   rB   rY   r_   )
rZ   r   r[   rY   rY   rB   rB   rM   ra   r[   c              3   4   K   | ]  }       |     y wr   rG   )r.  r   rB  ts     rI   r/  z test_nC_nP_nT.<locals>.<genexpr>  s     5a|Aq!5rz  r   i>xc                        ddi      S )NrX   r   rG   )rA  s   rI   rJ   ztest_nC_nP_nT.<locals>.<lambda>  s    2Ac7; rH   )$sympy.utilities.iterablesr5  r6  r7  r8  r9  r:  %sympy.functions.combinatorial.numbersr;  r<  r=  r>  r?  r@  rA  rB   sympy.combinatorics.permutationsrC  sympy.core.randomrD  stringascii_lowercaser   joinrt  setlistAssertionErrorprintrT   
is_Integersumr:   ry   r9   dict)r5  r6  r7  r8  r:  r;  r=  r?  r@  sutotr2  r   permsrl   r   partsrC  rB  rA  r   rD  ry  rv  r   r<  r>  r9  r  s                `    @@@@@@@@@@@@rI   test_nC_nP_nTr  S  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=  )r\   r   rX   rX   )r  r=  )r=  rl   r   s      rI   test_PR_14617r    sR    8W % 	%AAv!Qx1}$}!Qx1}$}		%%rH   c                  \     t        d      t        d       t        t         fd       y )Nrl   r   c                      t               S r   )r!   r   rl   s   rI   rJ   z!test_issue_8496.<locals>.<lambda>  s    gam rH   )r   r:   	TypeErrorr  s   @@rI   test_issue_8496r    s     sAsA
9+,rH   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 )Nrl   Tr#  rX   r\   rM   gffffffz6.93334070531408e-5g33333Az-4.14189164517449e-24)	r   r!   r   Zeror   r   Onerw   rx   )rl   c1c2s      rI   test_issue_8601r    s    sD40A1q5>QVV###8B?#q'8'8888AEE6?hr1o---				Br7++++				Br7----rH   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 )Nr[   Tr   ra   F   )rh  3   ro  r  )rh  r  ro  C  i@  )rh  r  ro  r  C  rB   )rX   rX   rM   r[   r   r_   )rX   rX   rM   r[   r   rh  r  )
rX   rX   rM   r[   r   rh  r  ro  r  r  c                  ,    t        j                  d      S )NgQeS@r%   evalrG   rH   rI   rJ   ztest_motzkin.<locals>.<lambda>  s    w||E2 rH   c                  ,    t        j                  d      S )Nir  rG   rH   rI   rJ   ztest_motzkin.<locals>.<lambda>  s    w||B/ rH   c                  .    t        j                  dd      S )NrE   r_   r%   find_motzkin_numbers_in_rangerG   rH   rI   rJ   ztest_motzkin.<locals>.<lambda>      wDDRJ rH   c                  .    t        j                  dd      S )Nr   r_   r  rG   rH   rI   rJ   ztest_motzkin.<locals>.<lambda>  r  rH   c                  ,    t        j                  d      S )Ng333333\@)r%   find_first_n_motzkinsrG   rH   rI   rJ   ztest_motzkin.<locals>.<lambda>   s    w<<UC rH   )r%   
is_motzkinr  r  r:   rT   rG   rH   rI   test_motzkinr    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DrH   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   )r8  multisetmultiset_derangementsr5  nDr`   r[   )r   rX   c              3   Z   K   | ]"  }t        d  t        |      D              rd $ yw)c              3   ,   K   | ]  \  }}||k7    y wr   rG   )r.  r   r   s      rI   r/  z1test_nD_derangements.<locals>.<genexpr>.<genexpr>2  s     -41aQ-s   rX   N)r1  r   )r.  r   r  s     rI   r/  z'test_nD_derangements.<locals>.<genexpr>1  s,      /q-3q!9--  /s   (+)rX   r[   rY   r   r   r   r  ~   i;  i  i)  i  i  i6  i9  
1112233456T)brutei?  rE  c                        ddi      S NrX   r\   rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>?      r1b'{ rH   112)r   rY   rp   )r   r   rX   rM   r   ,   c              3       K   | ]  }|  y wr   rG   r-  s     rI   r/  z'test_nD_derangements.<locals>.<genexpr>C  s     #Qq#   0123r   c              3       K   | ]  }|  y wr   rG   r-  s     rI   r/  z'test_nD_derangements.<locals>.<genexpr>D  s     %q%r  ri   rZ   )r   rX   rM   rZ   c                        d      S )Nr   r  rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>G  s    b1g rH   c                        d      S r   rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>H  s    bf rH   )r\   rE   c                        dd      S )N123rZ   )r   rl   rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>K  s    rEQ/ rH   c                        dd      S )Nr  rX   rM   )r   ri   rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>L  s    rEU3 rH   c                        dd      S )Nr   r  )rl   ri   rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>M  s    rA/ rH   c                        ddi      S r  rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>N  r  rH   c                        ddd      S )NrX   )r\   rM   r  rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>O  s    rqM2 rH   c                        ddd      S )Nr\   rX   r  r  rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>P  s    rqM2 rH   c                        ddg      S )Nr\   rM   r  rG   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>Q  s    rRG} rH   c                         dt         i      S )NrX   r=   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>R  s    b!Qj rH   c                  "      dt         i      S NrX   r  r=   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>S  s    bAq6l rH   c                  "      t         di      S r  r=   r  s   rI   rJ   z&test_nD_derangements.<locals>.<lambda>T  s    bAq6l rH   )r  r8  r  r  r5  r  r  itemsr   extendr  tuplert  r  appendr:   rT   r  )r8  r  r  r5  gotr   itr   vmsr  r  r  r  s               @@rI   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<)gr  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   sympy.core.exprr7   r8   r9   sympy.testing.pytestr:   r;   r<   	sympy.abcr>   rV   r{   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r(  r3  r  r  r  r  r  r  rG   rH   rI   <module>r     s*    + ) 3 7 ; ; " 6 6 < 9 5 ( ,  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
"4&-R.QbN> : :(	_=D%-	.E"1,rH   