o
    *ήcq                     @   s@  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 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  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dlm;Z; d dl<m=Z= d dlm>Z>m?Z? d dl@mAZAmBZBmCZCmDZD d dlEmFZF dd ZGdd ZHdd ZIdd ZJeCdd ZKdd ZLd d! ZMd"d# ZNd$d% ZOeAd&d' ZPd(d) ZQd*d+ ZRd,d- ZSd.d/ ZTd0d1 ZUd2d3 ZVeCd4d5 ZWd6d7 ZXd8d9 ZYd:d; ZZd<d= Z[d>d? Z\d@dA Z]dBdC Z^dS )D    N)Product)Sum)diffexpand_func)
EulerGammaTribonacciConstant)IRationaloopi)S)DummySymbolsymbols)
carmichael)imre)floor)cancel)limit)	bernoulliharmonicbell	fibonacci
tribonaccilucaseulercatalangenocchi	partitionmotzkinbinomialgammasqrtcbrthyperlogdigammatrigamma	polygamma	factorialsincoscotzeta_nT)	unchanged)GoldenRatioInteger)XFAILraisesnocache_failwarns_deprecated_sympyxc                   C   s   t ddg ks
J t dddgksJ t ddt ddks#J t dg dks.J ttdd  ttd	d  ttd
d  t  t ddksPJ W d    d S 1 s[w   Y  d S )Nr   1  i2  Q     )r:   r;   i  i	    c                   S   
   t dS N)r   is_carmichael rB   rB   \/tmp/pip-target-vg8gfxp4/lib/python/sympy/functions/combinatorial/tests/test_comb_numbers.py<lambda>#      
 z!test_carmichael.<locals>.<lambda>c                   S      t ddS Nr@      r    find_carmichael_numbers_in_rangerB   rB   rB   rC   rD   $       c                   S   rF   )N   rH   rI   rB   rB   rB   rC   rD   %   rK   r=   F)r   rJ   find_first_n_carmichaelsr5   
ValueErrorr7   is_primerB   rB   rB   rC   test_carmichael   s   
"rP   c                  C   s   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s1J t d	dks9J t dtdd
ksDJ t ddksLJ t dtddksWJ t dtd	dksbJ t ddksjJ t dtdkssJ t dtttj ksJ t dttd t tdd ksJ t dttd dtd  d  td  ksJ t d} | jd dksJ | jdksJ t ddd } t| dksJ t	ddd}t	dddd}t	dddd}t
t d| d t sJ t
t d| d t sJ t d| d dksJ ttdd   d S )!Nr      rH               r<   *         
   B   iAB   l    d(	 l   kL3 iqi@B Fevaluatez-2.23799235765713e+4767529lTintegermra   nonnegativenra   positivec                   S      t dS r?   )r   rB   rB   rB   rC   rD   K       z test_bernoulli.<locals>.<lambda>)r   r	   r9   r   Halfpqevalfstrr   
isinstancer5   rN   )br_   rb   re   rB   rB   rC   test_bernoulli*   s6   $.rq   c                  C   s  dd t ddD g dksJ tddksJ dd t ddD g d	ks(J tdd
ks0J tdtdks9J tdttksBJ tdttd d ksOJ tdttd dt  ks^J td} t| | tjtju spJ t| | tjtju s~J t| t	d|   t	d dt	d |  t	d d |    d ksJ t| t	
| d tdksJ t| t
| d tdksJ t| t	t| d t	t| d t	  ksJ t| t	
| d tdksJ ttdd  d S )Nc                 S      g | ]}t |qS rB   )r   .0re   rB   rB   rC   
<listcomp>O       z"test_fibonacci.<locals>.<listcomp>r<   )rH   rR   rQ   r   rQ   rQ   rH   rT   d   l   ?)Z3c                 S   rr   rB   )r   rs   rB   rB   rC   ru   Q   rv   )rT   rR   rH   rQ   rT   rU   rX   l   17!rQ   rH   rT   rU   re   rZ   c                   S   
   t dtS Nrw   )r   r9   rB   rB   rB   rC   rD   f   rE   z test_fibonacci.<locals>.<lambda>)ranger   r   r9   r   r   r   Infinityrewriter#   subsexpandr2   rm   simplifyr5   rN   re   rB   rB   rC   test_fibonacciN   s.     6&&&r   c                  C   s  dd t dD 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	 ks4J td
ttd t ksAJ tdttd d	td
   d ksTJ tdttd d
td   d
td	   kskJ td} t| | tjtju s}J dtjtd
  d	 }dt	dd
td   t	dd
td   d
 }d|t	dd
td    |d	 t	dd
td    d
 }d|d	 t	dd
td    |t	dd
td    d
 }t| 
t|| d  || ||   || d  || ||    || d  || ||    ksJ t| 
t| d tdks$J t| 
t| d tdks8J t| 
ttd
t|   dtd d tdd
  ddtd d tdd
  d dtd d td	d
   tj ksxJ ttdd  d S )Nc                 S   rr   rB   )r   rs   rB   rB   rC   ru   j   rv   z#test_tribonacci.<locals>.<listcomp>rY   )r   rQ   rQ   rH   rU   rX         rx   l   TM(`_$
r   rQ   rH   rT   rU   rS   r<   re   rR      !   rZ   f   iJ  r@   c                   S   rz   NrR   )r   r9   rB   rB   rB   rC   rD      rE   z!test_tribonacci.<locals>.<lambda>)r|   r   r9   r   r   r   r}   ImaginaryUnitr#   r$   r~   r   r   r2   rm   r   r   r	   rj   r5   rN   )re   warp   crB   rB   rC   test_tribonaccii   sJ   &.0<<
(
$*r   c                  C   s  dd t dD g dksJ tdtdksJ tdttks!J tdttd t ks.J tdttd d	td
   dtd   dtd   t ksMJ tttju sVJ ttdd  ttdd  ttdd  td} tdd| dd  d| d  | d  d| d
  | d   d	| d d   ksJ tdd| dd  d| d
  | d d  d| d  | d  | d   d| d d   ksJ d} tdd| dksJ d} tdd| dksJ d} tdd| dksJ t	dddd}dD ]}t|
 t|tj
||idks
J qt	d }t|tt|ksJ t||tt||ks-J td}t||tjtju s@J d S )!Nc                 S   rr   rB   r   rs   rB   rB   rC   ru      rv   ztest_bell.<locals>.<listcomp>rY   )rQ   rQ   rH   r<      4      im  r   rQ   rH   r<   rZ   rU      rT   r   c                   S   s
   t ttS N)r   r
   r9   rB   rB   rB   rC   rD      rE   ztest_bell.<locals>.<lambda>c                   S   rh   r   r   rB   rB   rB   rC   rD      ri   c                   S   s
   t tjS r   )r   r   rj   rB   rB   rB   rC   rD      rE   zx:6rS   <   )rQ   rZ   rx   r\   i'  i )rQ   rH   rT   rT   r<      )rQ   rH   rT   r<   i+  re   Trc   )r   rH   rT   rX   r   rW   7   )r   rb   )r|   r   r9   r
   r   r}   r5   rN   r   r   rm   r~   r   r   r   )Xre   irb   rB   rB   rC   	test_bell   s<   >PB. "r   c                  C   s  t d} t d}t| d| ksJ t|  t| ksJ t| dt| ks(J td|  td| ks6J tdddks?J tdddksHJ tddtddksTJ tddtddks`J td	dtd
dkslJ tdddksuJ tdddks~J tddtdd	ksJ tddtddksJ td	dtddksJ tdddksJ tdddksJ tddtddksJ tddtddksJ td	dtddksJ ttdtju sJ ttdtu sJ tttjtu sJ ttdtu sJ ttdtd d ksJ ttdt	dksJ ttt
ddtju s&J t
ddd}d| dkdu r9J dt
ddd}ttd| tu sKJ ttd| t	d| u s[J td|dkseJ d S )Nre   rb   r   rQ   rH   rT      rS   rU   r      r<   1   $         	   rY         i  i  rR   T)negativerf   z&delete this if-block and the next line)evenrg   )r   r   rm   r	   r
   r   NaNrj   r   r.   r   )re   rb   iprB   rB   rC   test_harmonic   sF    r   c                  C   sD	  t d} t d}t d}t d}t d}t d}t| ||  }td dtdd	tdd	   tttd d tdd   dtd d	 td
d	  tttdd tdd   ttdtd d d
  d  tdd }t| ||  }td dttttdd  tttd	d   dttttdd  tttdd   dttttdd  tttdd   dttttdd  tttdd   dttttd	d  ttd   ttttdd  d  dtttd  tttdd   tdd }	t| ||  }
td dtd
d	tdd	   ttdd	tdd	    dtdd	tdd	   tttd d tdd   dtd d	 td
d	  tttdd tdd   dtd d	 td
d	  ttd
d	tdd	    tdd ttdtd d  d  }t| ||  }td dttttdd  tttdd   dttttd	d  tttdd   dttttdd  tttdd   dttttdd  ttd   dtttd  tttdd   ttttd	d  d  dttttdd  tttdd   tdd }t|||  }td dtdd	tdd	   tttd d tdd   dtd d	 td
d	  tttdd tdd   ttdtd d d
  d  tdd }t|||  }td dttttdd  tttd	d   dttttdd  tttdd   dttttdd  tttdd   dttttdd  tttdd   dttttd	d  ttd   ttttdd  d  dtttd  tttdd   tdd }t|||  }td dtd
d	tdd	   ttdd	tdd	    dtdd	tdd	   tttd d tdd   dtd d	 td
d	  tttdd tdd   dtd d	 td
d	  ttd
d	tdd	    tdd ttdtd d  d  }t|||  }td dttttdd  tttdd   dttttd	d  tttdd   dttttdd  tttdd   dttttdd  ttd   dtttd  tttdd   ttttd	d  d  dttttdd  tdt d   td d! }|||
|||||g}||	||||||g}t	||D ]%\}}t
| }t|| d
ksJ t| |  d"k sJ qzd S )#NrS   r<   rY   r   rZ   r   rH   rR   rU   rQ   iQ iH	H    rT       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   r+   r,   r-   zipr   doitr   absre   )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   erB   rB   rC   test_harmonic_rational   s   B8`**$$<884`*$$*B8`**$$<884`*$$("r   c                   C   s>   t tdjdddksJ t tddjdddksJ d S )Ng      ?rZ   r   z1.280372306rH   z1.154576311)rn   r   rm   rB   rB   rB   rC   test_harmonic_evalf$  s   "r   c                  C   s  t d} t d}t| ttd| d t ksJ t| ttd| d t ks,J t| ttd| d t ks>J t| dttd| d d tddd  ksXJ t| |td| t|d dt|d | d   t|d  ks|J tt| d t| d| d   d| d   d| d   d| d   ksJ tt| d t| d| d   d| d   d| d   d|   ksJ t| |d	t| |tksJ t	d
}t| t
t
d| |d| fsJ t| |t
t
||  |d| fsJ d S )Nre   rb   r   rQ   rT   rH   rR   rU   	tractablek)r   r   r~   r'   r)   r   r(   r*   r   r   r   dummy_eq)re   rb   _krB   rB   rC   test_harmonic_rewrite)  s   $$$4HLH$(2r   c                  C   s2   t d} t d}tt| || tt|ksJ d S )Nre   rb   )r   r   r   r
   r.   re   rb   rB   rB   rC   test_harmonic_limit_fail>  s   "r   c               
   C   s  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s0J t d
dks8J t ddddksBJ tddd} t | dksPJ t | | ddks\J ttdd  ttdd  ttdd  t d dks{J t ddd dksJ t | tt | ksJ tdddd} t d|  d tdksJ td}td}t d|  t	t
td| d|   t
|   d| | d|  d   t|| | |d|f|dd|  d f sJ d S )Nr   rQ   rH   rR   rT   rU   r<   rS   irY   ii  r   Fr]   l   $8gC
 re   Tr`   c                   S   rh   r?   r   rB   rB   rB   rC   rD   U  ri   ztest_euler.<locals>.<lambda>c                   S   rh   r{   r   rB   rB   rB   rC   rD   V  ri   c                   S   rh   )Ngffffff@r   rB   rB   rB   rC   rD   W  ri   gPM1Brc   jr   r@   )r   r   r   r5   rN   rm   r~   r   r   r   r   r!   )re   _jr   rB   rB   rC   
test_eulerF  s<   6r   c                  C   s>   t dddd} t| dksJ t ddd} t| dksJ d S )Nre   T)oddrg   r   )r   )r   r   r   rB   rB   rC   test_euler_oddf  s   r   c                  C   s   t dtdks	J t dtttj ksJ t dttd t ks"J t dttd dtd  d  tdd ks:J td} tt | tt sHJ ddlm} |d}t d	tj	
d
}t|| | dk sgJ t d	tj	dd
d
}t|| | dk s~J d S )Nr   rQ   rH   rT   rU   rb   )Floatz(-0.46237208575048694923364757452876131e8r   r   ghe99Fr]   )r   r9   r   rj   r	   r   ro   sympy.core.numbersr   Pirm   r   )rb   r   r   BCrB   rB   rC   test_euler_polynomialsm  s   0r   c                  C   s@   t d} t| td}|| dtdi tddksJ d S )Nrb   r   rT   r<   )r   r   r9   r~   r   r   )rb   r   rB   rB   rC   test_euler_polynomial_rewrite|  s   (r   c                  C   s  t ddd} t dddd}t dddd}t ddd	}g d
}t|D ],\}}t||ks.J t| t| ||ks=J t| t| | |ksNJ q"ttt	sVJ tdt	 t
t
dt	 dt	 dt	 d  kspJ ttjtddt  ksJ ttjttddt  ksJ tdt	 tddt	  tdt	 tj  tttdt	 d   ksJ tt	ttt	 d t	 fddksJ t| ttd|  t| d t|   ksJ tt| ttsJ tt|ttsJ ttt	t	tdt	tj tdt	d  td tt	 ks J tt	 tt	ks-J ttj }t|dks=J ttd}tt|t|fdksSJ t|jdu s]J t|jdu sgJ t|d jdu ssJ d S )Nre   Tr`   rb   rf   r   rc   rk   )rd   )rQ   rQ   rH   r<      rW      i  i  i  iA  i  rH   rU   rQ   rY   rT   rH   r   z0.848826363156775z(0.398, -0.0209))r   	enumerater   r~   r*   r   r   r   r1   r9   r!   r   rj   r"   r   r#   r%   ro   r   r)   r&   rm   rn   r   r   r   is_positive
is_integeris_composite)re   rb   r   rk   catalansr   r   rB   rB   rC   test_catalan  sZ   $4 

* 
r   c                  C   s  g d} t | D ]\}}t|d |ksJ qtddd}tdddd}tt|s+J td| d d	ks7J t|tdd|  t| d ksLJ td| jsUJ td| jd
u s`J td| d jskJ t|jsrJ td| j	s{J tdd
dj
tdj
ksJ tdd
dj
sJ td| d jsJ td| d jd
u sJ td| d jsJ ttdd  ttdd  d S )N)rQ   rR   r   rQ   r   rw   r      rQ   rb   Tr`   re   rf   rH   r   FrU   rS   r]   rw   rY   c                   S      t tddS Nr<   rU   )r   r	   rB   rB   rB   rC   rD         ztest_genocchi.<locals>.<lambda>c                   S   rh   r?   )r   rB   rB   rB   rC   rD     ri   )r   r   r   r1   r~   r   is_oddis_evenr   r   rO   r   is_negativer5   rN   )	genocchisre   grb   rB   rB   rC   test_genocchi  s(   *r   c                  C   s   g d} t | D ]\}}t||ksJ qtd}tddd}tddd}tdddd	}td
ddd}t|js:J t|jrAJ t|jsHJ t|jsOJ t|jsVJ t||ddksbJ t||ddksnJ t	t
dd  d S )N)	rQ   rQ   rH   rT   r<   rX   r   r   rL   r9   yT)realrb   r`   re   ra   r   rk   rc   rX   r   rY   rL   c                   S   r   r   )r   r	   rB   rB   rB   rC   rD     r   z test_partition.<locals>.<lambda>)r   r   r   r   r   is_nonnegativeis_zeror   r   r5   rN   )partition_numsre   rk   r9   r   rb   rB   rB   rC   test_partition  s    r   c                  C   s   dd t dD g dksJ dd t dD } | g dks J tdd	 | D s+J td
ddks4J tdddks=J tdddksFJ td
ddksOJ d S )Nc                 S   s(   g | ]}t |d  D ]}t||q
qS r   )r|   r0   rt   r   r   rB   rB   rC   ru     s   ( ztest__nT.<locals>.<listcomp>r<   )rQ   r   r   rQ   r   r   rQ   rQ   r   r   rQ   rQ   rQ   r   r   rQ   rH   rQ   rQ   r   c                 S   s   g | ]}t d |qS )rZ   r/   rt   r   rB   rB   rC   ru         r   )r   rQ   r<   rY   r   rX   r<   rT   rH   rQ   rQ   c                 s   s    | ]	}t |tu V  qd S r   )typeintr   rB   rB   rC   	<genexpr>      ztest__nT.<locals>.<genexpr>rZ   rX   rx   b   rH   rQ   rT   rY   )r|   allr0   )checkrB   rB   rC   test__nT  s   r  c               
      s  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 ]a}	dfdd	td
D }
t|
tt|
k}z6d}tdD ]%}	||
|	}||7 }tt| |
|	|ksqJ |r~|t|
|	|ks~J qY||
|ksJ W q7 ty   t|
|	d t w tdD ]n}	dfdd	td
D }
t|
tt|
k}zBd}tdD ]%}	|
|	}||7 }tt||
|	|ksJ |rt|
|	|ksJ q|
|ksJ |rt|
|ksJ W q ty   t|
|	d t w tddD ]=}	d}td|	d D ]'||	}|js)J ||7 }tfdd	||	ddD |ksBJ q||	|ksMJ qtddD ]8}	d}td|	d D ] |t|	}||7 }tt|tt|	|ks~J q_|t|	|ksJ qTtdD ]{}	dfdd	td
D }
t|
tt|
k}zOd}tddD ]+}	||
|	}||7 }tt||
|	|ksJ |r|tt|
|	|ksJ q|r|tt|
|ksJ ||
|ksJ W q ty   t|
|	d t w 
fddtdD g dksJ t|td	 	fddtdD g d  krI
fddtdD ksLJ  J 
fd dtdD g d!ks^J 
fd"dtdD g d#kspJ 
fd$dtdD g d%ksJ 
d&ddd'
d&ddd'  krdksJ  J t t
fd(d) t!|d*d&t"sJ t!|d*d&t"sJ fd+d,|tdd&}dtfd-d	|D 
dd&d.  krd
ksJ  J d/dd0d  krdksJ  J |d&d&dd1|d2d&dd1  krd3ksJ  J |d&ddks#J |d2ddks-J dddd1d4ddd1  krQtt|d5d  krQdksTJ  J d4tfd6d	td*D   krnd7ksqJ  J td4ddks}J |d8|d  krtt|d  krdksJ  J |d9tt|d9  krd
ksJ  J d:d&dksJ t#d;ddd
ddd
ddd<ksJ d=tfd>d	td?D d@ksJ t tfdAd) d S )BNr   )multiset_permutationsmultiset_combinationsmultiset_partitions
partitionssubsetspermutations)nPnCnTstirling
_stirling1
_stirling2_multiset_histogram_AOP_product)Permutation)choicerx    c                 3       | ]} V  qd S r   rB   r   r   r  rB   rC   r        z test_nC_nP_nT.<locals>.<genexpr>rX   rY   zfailed perm testc                 3   r  r   rB   r   r  rB   rC   r    r  zfailed combo testrQ   rZ   rH   c                 3   s     | ]}|d   krdV  qdS r   rQ   NrB   rt   rk   )r   rB   rC   r    s    T)sizec                 3   r  r   rB   r   r  rB   rC   r  $  r  zfailed partition testc                       g | ]	} d |ddqS )r   rQ   kindrB   r   r  rB   rC   ru   7  s    z!test_nC_nP_nT.<locals>.<listcomp>r   )r   逝   l  W    "  r   rQ   r   rU   c                    s$   g | ] t  fd dD qS )c                 3   s"    | ]} |j krd V  qdS )rQ   N)cyclesr  )r  r   rB   rC   r  :  s     z+test_nC_nP_nT.<locals>.<listcomp>.<genexpr>)sum)rt   )r  permsr   rC   ru   :  s    r<   )r   rS   r   rS   rQ   c                    r  )rU   rQ   r  rB   r   r!  rB   rC   ru   ;  s    c                    s.   g | ]}t d |d  D ]	} ||d dqqS )rQ   )signedr|   rt   re   r   r!  rB   rC   ru   >  s
    )-rQ   rR   rQ   rH   rw   rQ   r   r0  rQ   r   i#   irQ   i  iU   irQ     iX  i!   irQ   iP3  iq  iXB  irQ   r"  iSr$  i,r&  iHr(  irQ   c                    s,   g | ]}t |d  D ]	} ||d dq
qS )rQ   r  r.  r/  r!  rB   rC   ru   I  
    )7rQ   r   rQ   r   rQ   rQ   r   rH   rT   rQ   r   rS   r   rS   rQ   r   r   2   r1  rZ   rQ   r   x   r2     r3  r   rQ   r   r4  i  r5  i  r6     rQ   r   i  r7  iL3  r8  i  r9     rQ   r   r"  r#  r$  r%  r&  r'  r(  r   rQ   c                    s,   g | ]}t |d  D ]	} ||ddq
qS )rQ   rH   r  r.  r/  r!  rB   rC   ru   V  r:  )7rQ   r   rQ   r   rQ   rQ   r   rQ   rT   rQ   r   rQ   rX   rS   rQ   r   rQ   r   r   rZ   rQ   r   rQ      Z   A   r   rQ   r   rQ   ?   i-  i^     r>  rQ   r   rQ      i  i  i  i
  r?  rQ   r   rQ      i  iZ  i'  iV
  i  r   rQ   rT   r  c                      s
    ddS rG   rB   rB   r!  rB   rC   rD   c  rE   ztest_nC_nP_nT.<locals>.<lambda>rS   c                    s(   t | dkrtS tdd  | dD S )NrQ   c                 s   s$    | ]}t |d  |d  V  qdS r  )r   r   rB   rB   rC   r  l  s   " z/test_nC_nP_nT.<locals>.delta.<locals>.<genexpr>rH   )lenr
   min)rk   )r  rB   rC   deltai  s   ztest_nC_nP_nT.<locals>.deltac                 3   s,    | ]}t  fd d|D rdV  qdS )c                 3   s    | ]	}| kV  qd S r   rB   r   drI  rB   rC   r  o  r  z*test_nC_nP_nT.<locals>.<genexpr>.<genexpr>rQ   N)r  r  rJ  rB   rC   r  o  s   * )rK  abbaab)replacementaabc   abcddaabbccddc                 3   s    | ]} d |V  qdS )rQ  NrB   r   )r  rB   rC   r  y  s    r   aaaaaaabaabbaabbaabb)rU   rQ   rQ   rQ   )r   rQ   rH   rT   rU   r<   rS   rX   )
rT   r   rU   rS   rS   r<   r<   rH   rZ   rU   c                 3   s    | ]	} | V  qd S r   rB   r   )r  trB   rC   r    r  r   i>xc                          ddiS )NrQ   r   rB   rB   )r  rB   rC   rD     rK   )$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|   joinrG  setlistAssertionErrorprintrN   
is_Integerr*  r5   ro   r3   dict)r  r  r	  r
  r  r  r  r  r  r   sutotr  partsrB   )r  r  r  r   r  rK  rI  r   r  r+  r  r  rV  rC   test_nC_nP_nT  s   (


.(
$







4
,4"
:@0
&ri  c                  C   sV   ddl m}  dg fD ]}dD ]}|dkr| ||dksJ q| ||dks'J qq
d S )Nr   )r  )rR   r   rQ   rQ   )rY  r  )r  re   r   rB   rB   rC   test_PR_14617  s   rj  c                      s(   t dt d tt fdd d S )Nre   r   c                      s
   t  S r   )r   rB   r   re   rB   rC   rD     rE   z!test_issue_8496.<locals>.<lambda>)r   r5   	TypeErrorrB   rB   rk  rC   test_issue_8496  s   rm  c                  C   s   t dddd} t| d 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 }t|dks9J td	 }t|d
ksGJ d S )Nre   Tr   rQ   rR   rH   gffffffz6.93334070531408e-5g33333Az-4.14189164517449e-24)	r   r   r   Zeror	   ComplexInfinityOnerm   rn   )re   c1c2rB   rB   rC   test_issue_8601  s   rs  c                   C   s
  t ddks	J t ddksJ t ddksJ t ddg dks'J t ddg d	ks3J t dd
g dks?J t dg dksJJ t dg dksUJ t dg dks`J ttdd  ttdd  ttdd  ttdd  ttdd  d S )NrU   Tr   rZ   F   )r>  3   rE  i  )r>  ru  rE  C  i@  )r>  ru  rE  rv  C  r<   )rQ   rQ   rH   rU   r   rX   )rQ   rQ   rH   rU   r   r>  ru  )
rQ   rQ   rH   rU   r   r>  ru  rE  rv  rw  c                   S   r>   )NgQeS@r    evalrB   rB   rB   rC   rD     rE   ztest_motzkin.<locals>.<lambda>c                   S   r>   )Nirx  rB   rB   rB   rC   rD     rE   c                   S   rF   )Nr@   rX   r    find_motzkin_numbers_in_rangerB   rB   rB   rC   rD     rK   c                   S   rF   )Nr   rX   rz  rB   rB   rB   rC   rD     rK   c                   S   r>   )Ng333333\@)r    find_first_n_motzkinsrB   rB   rB   rC   rD     rE   )r    
is_motzkinr{  r|  r5   rN   rB   rB   rB   rC   test_motzkin  s   r~  c                     s  ddl m} m}m}m} ddlm  g }| dddD ]p}g d}| D ]\}}t|D ]}	|g|  |d7 }q,q$|}	t
fdd	|D }
|
 |	  kre |	d  kre |	dkshJ  J d
d |D }t|}|tt|ksJ |
|ksJ ||
 q|g dksJ  ddd d  krdksJ  J  d g   kr i   krdksJ  J  ddidksJ tt fdd  ddksJ  dddksJ  fddtdD g dksJ  dd	 tdD  d  krdksJ  J  dd	 tdD ddks!J  dddddddks0J  g dddks<J tt fd d tt fd!d  ddd"dksZJ  ddiddksfJ tt fd#d tt fd$d tt fd%d tt fd&d tt fd'd tt fd(d tt fd)d tt fd*d tt fd+d tt fd,d d S )-Nr   )r
  multisetmultiset_derangementsr  nDrY   rU   )r   rQ   c                 3   s,    | ]}t d d t| D rdV  qdS )c                 s   s    | ]	\}}||kV  qd S r   rB   r   rB   rB   rC   r    r  z1test_nD_derangements.<locals>.<genexpr>.<genexpr>rQ   N)r  r   r   )re  rB   rC   r    s    z'test_nD_derangements.<locals>.<genexpr>c                 S   rr   rB   )tupler   rB   rB   rC   ru     rv   z(test_nD_derangements.<locals>.<listcomp>)rQ   rU   rS   r   r   r   =   ~   i;  i  i)  i  i  i6  i9  
1112233456T)brutei?  r  c                      rW  NrQ   rR   rB   rB   r  rB   rC   rD     rK   z&test_nD_derangements.<locals>.<lambda>112r,  c                    s   g | ]} |d qS )r   rB   r   r  rB   rC   ru     r   rS   )r   r   rQ   rH   r   ,   c                 s       | ]}|V  qd S r   rB   r   rB   rB   rC   r        0123r   c                 s   r  r   rB   r   rB   rB   rC   r    r  rb   rT   )r   rQ   rH   rT   c                      s
    ddS )Nr   r  rB   rB   r  rB   rC   rD     rE   c                      s    dS r   rB   rB   r  rB   rC   rD     ri   )rR   r@   c                          dddS )N123rT   )r   re   rB   rB   r  rB   rC   rD     rK   c                      r  )Nr  rQ   rH   )r   rb   rB   rB   r  rB   rC   rD     rK   c                      r  )Nr   r  r   rB   rB   r  rB   rC   rD     rK   c                      rW  r  rB   rB   r  rB   rC   rD     rK   c                      s    ddddS )NrQ   )rR   rH   r  rB   rB   r  rB   rC   rD         c                      s    ddddS )NrR   rQ   r  r  rB   rB   r  rB   rC   rD     r  c                      s    ddgdS )NrR   rH   r  rB   rB   r  rB   rC   rD     r   c                      s    dt iS )NrQ   r8   rB   r  rB   rC   rD     rK   c                      s    dt idS NrQ   r  r8   rB   r  rB   rC   rD     r   c                      s    t didS r  r8   rB   r  rB   rC   rD     r   )rX  r
  r  r  r  rY  r  itemsr|   extendr*  rG  r_  appendr5   rN   rl  )r
  r  r  r  gotr   itr   vmsrq  rr  rB   )r  re  rC   test_nD_derangements  sZ   
6(2"6"r  )_r\  sympy.concrete.productsr   sympy.concrete.summationsr   sympy.core.functionr   r   
sympy.corer   r   r   r   r	   r
   r   sympy.core.singletonr   sympy.core.symbolr   r   r   rY  r   $sympy.functions.elementary.complexesr   r   #sympy.functions.elementary.integersr   sympy.polys.polytoolsr   sympy.series.limitsr   sympy.functionsr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r0   sympy.core.exprr1   r2   r3   sympy.testing.pytestr4   r5   r6   r7   	sympy.abcr9   rP   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  ri  rj  rm  rs  r~  r  rB   rB   rB   rC   <module>   s^    l$ 
0*@
 )
 #
