
    \h؉                        S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrK  S SKLJMrMJNrN  S SKOJPrP  S SKQJRrRJSrS  \" S5      u  rTrUrVrWS rXS rYS rZS r[S r\S r]S r^S r_S r`S raS rbS rcS rdS reS rfS rgS rhS  riS! rjS" rkS# rlS$ rmS% rnS& roS' rpS( rqS) rrS* rsS+ rtS, ruS- rvS. rwS/ rxS0 ryS1 rzS2 r{S3 r|S4 r}S5 r~S6 rS7 rS8 rS9 rS: rS; rS< rS= rg>)?    )dedent)isliceproduct)Basic)Integerordered)Dummysymbols)	factorial)Matrix)RGS_enum
RGS_unrankPermutation)5
_partition_set_partitionsbinary_partitions	braceletscapturecartescommon_prefixcommon_suffixconnected_components
dict_mergefilter_symbolsflattengenerate_bellgenerate_derangementsgenerate_involutionsgenerate_oriented_forestgrouphas_dupsibiniproductkbinsminlexmultisetmultiset_combinationsmultiset_partitionsmultiset_permutations	necklacesnumbered_symbols
partitionspermutations	postfixesprefixesreshaperotate_leftrotate_rightrunssiftstrongly_connected_componentssubsetstaketopological_sort	unflattenuniq
variationsordered_partitions	rotationsis_palindromiciterableNotIterablemultiset_derangementssigned_permutationssequence_partitionssequence_partitions_empty)factoring_visitormultiset_partitions_taocp)S)raiseswarns_deprecated_sympyzw,x,y,zc                  F   SSK Jn Jn  [        5          [	        U" [
        [        /5      5      [        [
        /:X  d   e S S S 5        [        5          [        [
        [        /U S9[        [
        /:X  d   e S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)Nr   default_sort_keyr	   key)sympy.utilities.iterablesrM   r	   rJ   listyxsortedrL   s     \/var/www/auris/envauris/lib/python3.13/site-packages/sympy/utilities/tests/test_iterables.pytest_deprecated_iterablesrV   !   sk    C		!GQFO$A... 
"		!q!f"231v=== 
"	! 
"	!	!	!s   ,B%B
B
B c                     [        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       d   e[        S5      (       a   e[        S5      (       a   e[        SS5      (       d   e[        SS	5      (       a   e[        SS	S
5      (       d   e[        SS	S5      (       d   e[        SS5      (       d   e[        SS	5      (       a   e[        SS	S5      (       d   eg )N rS   xxxyxxyxyzxxxyzzyx         xxyzyx   )r?        rU   test_is_palindromicrf   )   s    "#$%    d####f%%%%)Q''''i++++)Q++++)Q****(A&&&&h****(Au----re   c                  r  ^ [        S5      SS/:X  d   e[        [        [        445      [        [        /:X  d   eSS/S//m[        TSS9T:X  d   e[        TSS9/ SQ:X  d   e[        TS	S9/ S
Q:X  d   e[        TSS9/ S
Q:X  d   e[        [        U4S j5         " S S[        5      n [        U " [        [
        5      [        /5      U " [        [
        5      [        /:X  d   e[        U " [        [
        5      [        /U S9[        [
        [        /:X  d   e[        1 Sk5      [        1 Sk5      :X  d   eg )N)r^   r^   r^   r`   r^   r_   r   r   r   levels)ri   rk   rl   r_   )rj   r`   r^   r_   r   r      c                     > [        T SS9$ )Nr`   rm   )r   )lss   rU   <lambda>test_flatten.<locals>.<lambda>D   s    wr"5re   c                       \ rS rSrSrg)test_flatten.<locals>.MyOpF   rd   N__name__
__module____qualname____firstlineno____static_attributes__rd   re   rU   MyOpru   F       re   r}   cls>   r^   r_      )r   rS   rI   
ValueErrorr   rR   zrQ   )r}   rq   s    @rU   test_flattenr   9   s   9!Q'''At9!Q'''V
vh	'B2a B&&&2a $>>>>2a $88882a $8888
:56u  DAJ?#Q
A666DAJ?-!Q::::$z"2222re   c            	         [        [        5       5      S/:X  d   e[        [        / 5      5      / :X  d   e[        [        / SQ5      5      / SQ:X  d   e[        [        SS// SQ5      5      / SQ:X  d   e[        [        SS/SS/SS/5      5      / S	Q:X  d   e[        [        [        R
                  5      5      S
L d   e[        [        [        R
                  [        R
                  5      5      S
L d   eS[        [        R
                  5      ;   d   eS[        [        R
                  [        R
                  5      ;   d   eS[        [        R
                  [        R
                  [        R
                  5      ;   d   e[        [        [        [        R
                  [        R
                  [        R
                  5      S5      5      n U  HK  u  pn[        U[        5      (       d   e[        U[        5      (       d   e[        U[        5      (       a  MK   e   [        [        [        SS5      /S-  6 5       H@  nU[        [        R
                  [        R
                  [        R
                  5      ;   a  M@   e   g )Nrd   r^   r_   ro   rh   r_   ro   r^   r_   ro      rc   r^   ro   )r^   r   )r^   rc   r_   ro   r_   r   )r_   rc   r   r   r   r   r   r   r^   )r   r^   r   r   r^   r^   )r^   r   r   r^   r   r^   r^   r^   r   r^   r^   r^   Tr   )r   rc   i  rj   ro   )rQ   r$   rT   r@   rH   Integerssetr   
isinstancer   r   range)triplesn1n2n3ts        rU   test_iproductr   O   s   
t######!"&6666(Aq69-. 3- - - -(Aa5!A!u-. 3I I I IHQZZ()T111HQZZ45===8AJJ''''Xajj!**5555QZZDDDD6(1::qzz1::FMNG
"g&&&&"g&&&&"g&&&&  E"aL>!+-.HQZZQZZ@@@@ /re   c                     [        / 5      / :X  d   e[        / SS9/ :X  d   e[        S/5      S//:X  d   e[        S/SS9S/:X  d   e[        SS/5      SS//:X  d   e[        SS/SS9S/:X  d   e[        / SQ5      / SQ/:X  d   e[        / SQSS9S/:X  d   e[        / SQ5      S/S	/S//:X  d   e[        / SQSS9/ S
Q:X  d   e[        / SQ5      SS// SQS/SS//:X  d   e[        / SQSS9/ SQ:X  d   eg )NF)multipler^   r^   r^   rk   r   r   r^   r_   r^   r_   )r   r_   r^   r   )r^   r^   r_   r_   r_   r^   ro   ro   r_   r_   r_   ro   )rk   r   r   ro   r_   )r!   rd   re   rU   
test_groupr   e   s6   9??e$***!:1#!u%&111!Q=aVH$$$!Q%(VH444	{***U+x777aS1#...U+/GGGG)*1vy1#1v.NNNN)E: ?) ) ) )re   c            
         [        [        / SQS5      5      S/:X  d   e[        [        / SQS5      5      / SQ:X  d   e[        [        / SQS5      5      / SQ:X  d   e[        [        / SQS5      5      S/:X  d   e[        [        S	5      5      n [        [        U SS
S95      S/:X  d   e[        [        U SS
S95      / SQ:X  d   e[        [        U SS
S95      / SQ:X  d   e[        [        U SS
S95      / SQ:X  d   e[        [        [        U S	S
S95      5      S:X  d   e[        [        U S S SSS95      / :X  d   e[        [        U S S SS
S95      / SQ:X  d   e[        [        SS/S
S95      / SQ:X  d   e[        [        SS/SS95      / SQ:X  d   e[        [        / SQS5      5      / SQ:X  d   e[        [        / SQSS
S95      / SQ:X  d   eg )Nr   r   rd   r^   r   r_   )rk   r   r   ro   r   T
repetitionr   rh   r   r   )
rl   r   r^   r   r_   r   ro   r   rk   r   r_   r_   r   ro   ro   )r   r   )r   r   r_   )r   r   ro   r   r   r^   r_   r   r^   ro   )r   r_   r_   r   r_   ro   )r   ro   ro   r   r^   r^   r_   r^   r^   ro   r^   r_   r_   r   )r^   ro   ro   r   )r_   r_   ro   )r_   ro   ro   )ro   ro   ro   #   F)r   r   r   r   )rd   rh   r   r   rk   r   )rd   rh   r   rk   )r   rk   r   r   r   r   )rQ   r7   r   lenls    rU   test_subsetsr   z   s   	1%&2$...	1%&*<<<<	1%&*BBBB	1%&9+555U1XA1./B47771./3KKKK1./ 4< < < < 1./ 	4J 	J 	J 	J tGAqT234:::"1qU34:::"1qT23 8C C C C A40101 1 1A512 ! ! !	1%& ! ! !	16789 9 9re   c            
         [        [        S5      5      n [        [        U SSS95      S/:X  d   e[        [        U SSS95      / SQ:X  d   e[        [        U SSS95      / S	Q:X  d   e[        [        U S
SS95      / SQ:X  d   e[        [        U SSS95      S/:X  d   e[        [        U SSS95      / SQ:X  d   e[        [        U SSS95      / SQ:X  d   e[        [        [        U S
SS95      5      S:X  d   e[        [        [        U SSS95      5      S:X  d   e[        [        U S S S
SS95      / :X  d   e[        [        U S S S
SS95      / SQ:X  d   eg )Nr   r   Fr   rd   r^   r   r_   )r   r   r   r^   r   rk   r   r_   r   r   r   ro   r   ro   r^   r   ro   )r   r   r   r_   r^   r   r   ro   r^   )r   ro   r_   r^   r   r_   )r^   r   ro   r^   r_   r   r   )r^   ro   r   )r^   ro   r_   r_   r   r^   )r_   r   ro   r_   r^   r   )r_   r^   ro   )r_   ro   r   )r_   ro   r^   )ro   r   r^   )ro   r   r_   )ro   r^   r   )ro   r^   r_   )ro   r_   r   ro   r_   r^   T)rl   r   r   r   r   r   rk   r   r   r   r   r   r   r   r   r   @      r   )rQ   r   r<   r   r   s    rU   test_variationsr      s   U1XA
1aE23t;;;
1aE237OOOO
1aE23  8X  X  X  X
1aE23  8@  @  @  @
1aD12rd:::
1aD126NNNN
1aD12 7? ? ? ? tJq!5672===tJq!5673>>>
1Ra5!672===
1Ra5!56 ;   re   c            	      @   [        [        SS// SQ5      5      / SQ:X  d   e[        [        5       5      S/:X  d   e[        [        S5      5      S/:X  d   e[        [        SSS95      S	/:X  d   e[        [        [        [        S5      5      5      5      S
S/:X  d   eg )Nr^   r_   r   r   rd   a)r   )repeat)r   r   r   rh   )rQ   r   r   rd   re   rU   test_cartesr      s    1vy)*89 9 9>bT!!!s(((s1%&:,666tE!H~&'D$<777re   c                      [        5       n [        U [        S5      5      n[        US5      [	        [        S5      5      :X  d   eg )Nzx0 x2 x3ro   zx1 x4 x5)r,   r   r   r8   rQ   )sfiltereds     rU   test_filter_symbolsr      s:    Aa!45H!WZ%8 9999re   c            	          [        [        S9n [        [        U 5      [        5      (       d   e[        [        SS[	        S5      /S95      [	        S5      :X  d   eg )Nr   Cr^   C1)startexcludeC2)r,   r
   r   nextr   )r   s    rU   test_numbered_symbolsr      sQ    U#Ad1gu%%%% AGH  re   c                     [        [        [        S5      5      S 5      SS// SQS.:X  d   e[        [        [        /S 5      [        /[        /S.:X  d   e[        [
        R                  /S	 5      S
S/0:X  d   e[        / SQS SS9SS/SS/4:X  d   e[        / SQS SS9S// SQ4:X  d   e[        [        S 5        g )Nrc   c                     U S-  $ Nr_   rd   _s    rU   rr   test_sift.<locals>.<lambda>   s    !a%re   r^   ro   )r   r_   r   r   c                 ,    U R                  [        5      $ NhasrS   r   s    rU   rr   r      s    !%%(re   )FTc                 ,    U R                  [        5      $ r   r   r   s    rU   rr   r      s    1558re   Fr   r^   r_   ro   c                     U S-  $ r   rd   rS   s    rU   rr   r      s    Are   Tbinaryr   r_   c                     U S-  S:H  $ )Nro   r^   rd   r   s    rU   rr   r      s    A
re   r   c                      [        / SQS SS9$ )Nr   c                     U S-  $ )Nro   rd   r   s    rU   rr   -test_sift.<locals>.<lambda>.<locals>.<lambda>   s    QUre   Tr   )r5   rd   re   rU   rr   r      s    \?48re   )	r5   rQ   r   rS   rR   rH   OnerI   r   rd   re   rU   	test_siftr      s    U1X0A94MMMMA*+s1#/FFFF+,<<<od;	
AA@   24@	
YE   
: 9 :re   c                      [        5       n [        U S5      [        [        S5      5      :X  d   e[        U S5      [        [        S5      5      :X  d   e[        / SQS5      / SQ:X  d   eg )Nrc   zx0:5zx5:10r^   r_   ro   r   rc   )r,   r8   rQ   r   )Xs    rU   	test_taker      sZ    A1:gfo....1:gg.////#666re   c                     [        0 S[        [        [        05      S[        [        [        0:X  d   e[        S[        [        [        00 5      S[        [        [        0:X  d   e[        S[        0S[        [        [        05      S[        S[        [        [        0:X  d   e[        S[        [        [        0S[        05      S[        S[        [        [        0:X  d   e[        [        [        S.S[        [        [        05      S[        S[        [        [        0:X  d   e[        S[        [        [        0[        [        S.5      S[        S[        [        [        0:X  d   eg )Nr^   r_   rk   )r   rS   rR   r   rd   re   rU   test_dict_merger      s   b1aA,'Aq!Q<777q!QlB'Aq!Q<777q!fq!Ql+1aAq/AAAAq!QlQF+1aAq/AAAA!lQ1aL1aAq!Q5GGGGq!QlaL1aAq!Q5GGGGre   c                     [        [        / 5      5      / :X  d   e[        [        S/5      5      S//:X  d   e[        [        SS/5      5      S/SS//:X  d   e[        [        / SQ5      5      S/SS// SQ/ SQ/ SQ/:X  d   eg )Nr^   r_   r   r   r^   r_   ro   r   )rQ   r0   rd   re   rU   test_prefixesr      s    ###!A3%'''!Q !qcAq6]222)*
q!fi?@ @ @re   c                     [        [        / 5      5      / :X  d   e[        [        S/5      5      S//:X  d   e[        [        SS/5      5      S/SS//:X  d   e[        [        / SQ5      5      S/SS// SQ/ SQ/ SQ/:X  d   eg )Nr^   r_   r   rc   r   r   )r_   ro   r   rc   )rQ   r/   rd   re   rU   test_postfixesr      s    	""$$$	1#QC5(((	1a&!"sQFm333	/*+
q!fi?@ @ @re   c                     ^ ^ / SQm/ SQm [        TT 45      / SQ:X  d   e[        TT 4S S9/ SQ:X  d   e[        [        U U4S j5        g )N)r_   ro   rc         	   
   r   )	)r   r   r   r   )rc   r   )ro   r   )ro   r  )r   r_   )r   r  )r   r  )r   r  )ro   rc   r   r   r   r_   r  r  c                     U * $ r   rd   )vs    rU   rr   'test_topological_sort.<locals>.<lambda>	  s    1"re   rN   )r   rc   r   ro   r  r   r  r_   c                  &   > [        TT S/-   45      $ )N)r  r   )r9   EVs   rU   rr   r    s    /A	M0BCre   )r9   rI   r   r  s   @@rU   test_topological_sortr    sV    "A	$A QF#'AAAAQF5"# # # :CDre   c                     [        / / 45      / :X  d   e[        / SQ/ 45      S/S/S//:X  d   e/ SQn / SQn[        X45      / SQ/:X  d   e/ SQn / SQn[        X45      S/SS/S//:X  d   e/ SQn / S	Qn[        X45      SS/SS//:X  d   eg )
Nr   r^   r_   ro   rk   r   r   r   r   r   rk   r   r   ro   r   r   )rk   r   r  )r   ro   )r6   r
  r	  s     rU   "test_strongly_connected_componentsr    s    ("b2b888()R9qcA3_LLLA0A(!0YK???A(A(!0aS1a&1#4FFFFA(A(!0aVaV4DDDDre   c                     [        / / 45      / :X  d   e[        / SQ/ 45      S/S/S//:X  d   e/ SQn / SQn[        X45      / SQ/:X  d   e/ SQn / SQn[        X45      / SQ/:X  d   e/ SQn SS	/n[        X45      SS/SS
//:X  d   eg )Nr   r^   r_   ro   r  r   r  rk   r  r   )r   r  s     rU   test_connected_componentsr     s    R)R///B0aS1#sOCCCA0A'I;666A(A'L>999A	A'QFQF+;;;;re   c                     / SQn [        U S5      / SQ:X  d   e[        U S5      / SQ:X  d   e/ n [        U S5      nU/ :X  d   eUR                  S5        U / :X  d   e[        U S5      nU/ :X  d   eUR                  S5        U / :X  d   eg )Nr   r^   r_   ro   r   r_   )r_   ro   r   r   r^   r^   )r   r   r^   r_   ro   )r2   r3   append)ABs     rU   test_rotater  1  s    Aq!///1000
AQA7N7HHQK7N7AqA7N7HHQK7N7re   c            
         / SQn [        [        U S5      5      S/S/S/S/S///:X  d   e[        [        [        U S5      5      5      S:X  d   e[        [        [        U S5      5      5      S	:X  d   e[        [        / S
QS5      5      / SQS/// SQSS/// SQS/// SQSS//SS// SQ//:X  d   e[        [        / SQS5      5      / SQS//SS/SS/// SQS//SS/SS///:X  d   e[        [        / SQS5      5      / SQS/// SQS//SS/SS/// SQS//SS/SS//SS/SS//S// SQ//:X  d   e[        [        / SQS5      5      SS/S//S/SS///:X  d   e[        [        S5      5      / SQ/SS/S//SS/S//S/SS//S/S/S///:X  d   e[        [        SS5      5      SS/S//SS/S//S/SS///:X  d   e[        [        S/S-  S5      5      S/SS///:X  d   e[        [        S/S-  5      5      / SQ/S/SS//S/S/S///:X  d   e/ SQn[        [        U5      5      [        [        [        U5      5      5      :X  d   e[        [        US5      5      / :X  d   e[        [        US5      5      / SQ//:X  d   e[        [        US/-   S5      5      / :X  d   e[        [        US/-   S5      5      / SQ//:X  d   e[        [        SS5      5      / :X  d   e[        [        SS5      5      SS///:X  d   e[        [        S5      5      S///:X  d   e[        [        SS5      5      / :X  d   e[        [        S5      5      SS//S/S///:X  d   e[        [        SS5      5      SS///:X  d   e[        [        SS5      5      S//:X  d   e[        [        SS/S5      5      SS///:X  d   e/ SQn[        S5       Vs/ s H  n[	        S U 5       5      PM     snU:X  d   eS/SS/S S/SS!// S"Q/ S#Q/ S$Q/n[        SS/5       Vs/ s H  n[        USS/5      PM     snU:X  d   eg s  snf s  snf )%Nr  rc   r   r^   r_   ro   r   r     )r^   r^   r^   r_   r_   )r^   r^   r^   r_   r   )r^   r^   r_   r_   r   r   r   r   )r^   r_   r   r^   ro   r   r_   ro   r   r   r   r   abbaaa)$)mpsyy)mpsyrR   )mpsyy)r#  rR   rR   )mpyyr   )mpysy)r&  r   rR   )mpsyy)r(  r'  rR   )r(  r   r$  )r(  r   rR   rR   )msyyp)msypy)r,  r+  rR   )mspyy)r.  r-  rR   )r.  r+  r$  )r.  r+  rR   rR   )myyps)r0  r+  r   )mypsy)r2  r1  rR   )r2  r-  r   )r2  r+  r'  )r2  r+  r   rR   )mpsyy)r4  r3  rR   )r4  r1  r$  )r4  r1  rR   rR   )r4  r/  r   )r4  r-  r'  )r4  r-  r   rR   )r4  r+  r)  )r4  r+  r'  rR   )r4  r+  r   r$  )r4  r+  r   rR   rR   sympyc              3   D   #    U  H  nS R                  U5      v   M     g7frX   Njoin).0parts     rU   	<genexpr>+test_multiset_partitions.<locals>.<genexpr>{  s     .AD"''$--A       r      ra   )r   r_   ro   )ra   r_   r_   )r_   r_   r_   ro   )rQ   r)   r   rT   tuplerG   rF   )r  r   ansr+  
factoringss        rU   test_multiset_partitionsrE  A  s|   A#Aq)*aS1#sQC/H.IIIIt'1-./2555t'1-./2555#OQ78	si!Q0<!2E	QFq!fi0=2 2 2 2 #L!45	QCAq6Aq6*Y,<
Q!Q:    #L!45	QC9qc*aVaV,<	QCAq6Aq6*aVaV,<
i:   
 #Iq12
Q!aV}7& & & & #A&'	q!fqc]aVaSMQC!Q=
qcA3,    #Aq)*
Q!A}sQFm/5 5 5 5#QC!GQ/0qcAq6]OCCC#QC!G,-	qcAq6]aS1#sO25 5 5 5A#A&' +,- - -#Aq)*b000#Aq)*	{m;;;#AGQ/0B666#AGQ/0l^4DDDD#Aq)*b000#Aq)*Axj888#C()ugY666#C+,222#D)*c
|secU^.LLLL#D!,-C:,???#E1-.E7);;;#QFA./aVH:===&C -W575A .A..57:=> > >$AQ!Q\+J /1v686 a!A'68;EF F F	78s   P7P<c                     / SQn [        [        SS5      5       Vs/ s H  nSR                  U5      PM     snU :X  d   e[        S5      n[        [        US5      5       Vs/ s H  nSR                  U5      PM     snU :X  d   e[        US5       Vs/ s H  nSR                  U5      PM     sn/ :X  d   e[        [        S/SS//S5      5      S/SS///:X  d   e[	        [        [        SS5      5      5      S	:X  d   e[	        [        [        SS	5      5      5      S:X  d   e[        [        S
S5      5      S/S/S//:X  d   e[        [        S 5        g s  snf s  snf s  snf )N)iiiiimiipiisimpimsippipsissmppr#  mssppspsssssmississippiro   rX      r^   r_   r   r   abcr  cc                  2    [        [        SSS.S5      5      $ )Nro   r`   r   r_   )rQ   r(   rd   re   rU   rr   ,test_multiset_combinations.<locals>.<lambda>  s    t$9aB-$KLre   )rQ   r(   r:  r'   r   rI   r   )rC  iMs      rU   test_multiset_combinationsr]    s{   <C &}a89;9 BGGAJ9;>AB B BA&q!,-/- BGGAJ-/256 6 6 5a <= <1BGGAJ <=CCC%sQFmQ78qcAq6]OKKKt)#q123q888t)#q123q888%eQ/0cUSEC54IIII
:LM;/=s   E"EE#c                  |  ^ / SQn [        S5       Vs/ s H  nSR                  U5      PM     snU :X  d   e[        [        S5      5       Vs/ s H  nSR                  U5      PM     snU :X  d   e[        [        / SQS5      5      SS//:X  d   e[        [        / SQS5      5      SS/SS/SS/SS/SS/SS//:X  d   e[	        [        [        S	S5      5      5      S:X  d   e[	        [        [        S	S
5      5      5      S:X  d   e/ 0 S4 H  n[        [        U5      5      / /:X  a  M   e   [        [        WS5      5      / /:X  d   e[        [        US5      5      / :X  d   e[        [        US5      5      / :X  d   eS m[        U4S j5      [        S5      :X  d   e[        [        S 5        g s  snf s  snf )N)abbyabybaybbbabybaybbbaybbyabyabbybayabbybabybbarb  rX   r   r_   r   r   r^   r   ro   r`   c                      [        SS5       H.  n [        U 5        [        / SQU 5       H  n[        U5        M     M0     g )Nr^   r   )r   r   r^   r   r^   )r   printr*   )r[  r+  s     rU   test(test_multiset_permutations.<locals>.test  s1    q!A!H*?A>a ? re   c                     > T " 5       $ r   rd   )rm  s   rU   rr   ,test_multiset_permutations.<locals>.<lambda>  s    46re   a          1
        [0]
        [1]
        2
        [0, 0]
        [0, 1]
        [1, 0]
        [1, 1]
        3
        [0, 0, 0]
        [0, 0, 1]
        [0, 1, 0]
        [0, 1, 1]
        [1, 0, 0]
        [1, 0, 1]
        [1, 1, 0]
        4
        [0, 0, 0, 1]
        [0, 0, 1, 0]
        [0, 0, 1, 1]
        [0, 1, 0, 0]
        [0, 1, 0, 1]
        [0, 1, 1, 0]
        [1, 0, 0, 0]
        [1, 0, 0, 1]
        [1, 0, 1, 0]
        [1, 1, 0, 0]
        5
        [0, 0, 0, 1, 1]
        [0, 0, 1, 0, 1]
        [0, 0, 1, 1, 0]
        [0, 1, 0, 0, 1]
        [0, 1, 0, 1, 0]
        [0, 1, 1, 0, 0]
        [1, 0, 0, 0, 1]
        [1, 0, 0, 1, 0]
        [1, 0, 1, 0, 0]
        [1, 1, 0, 0, 0]
        6
c                  0    [        [        SSS.5      5      $ )Nro   r`   r   )rQ   r*   rd   re   rU   rr   rp    s    t$9aB-$HIre   )	r*   r:  r'   rQ   r   r   r   rI   r   )rC  r[  nulrm  s      @rU   test_multiset_permutationsrs    s   +C 5f => =1BGGAJ =>#EEE 5hv6F GH G1BGGAJ GHCOOO%i34!Q@@@%i34	
AAAAAA98 8 8 8t)#q123q888t)#q123q888B|)#./B4777 %c1-.2$666%c1-."444%c2./2555
 >"f '. '' ' ' 'P :IJw ?Hs   F4F9c            
         0 /S0 4//n [        S5       H  n[        [        SUS95      X   :X  d   e[        [        SSUS95      X   :X  d   e[        [        SSSUS95      X   :X  d   e[        [        SSS US95      X   :w  d   e[        [        SS SUS95      X   :w  d   e[        [        SSSUS95      X   :X  a  M   e   [        [        SSS95      SS0SSS.S	SS.SS0/:X  d   e[        [        SSS95      SS0SSSS
.SSS.SS0SSS.S	SS.SS0/:X  d   e[        [        SS	SS95      S	S0SSSS.SSS.SSS./s=:X  aY  [        SS	SS9 Vs/ s H=  n[        S U 5       5      (       d  M  [	        UR                  5       5      S::  d  M;  UPM?     sn:X  d   e   e[        [        [        S5      SS95      SS0SSS./:X  d   e[        [        S	SS95      SSS.SS0SSS.SS	0/s=:X  a:  [        S	5       Vs/ s H  n[        S U 5       5      (       d  M  UPM      sn:X  d   e   e[        SS5       H@  nSn[        U5       H  u  p4U[        X5      :X  d   eUS-  nM     U[        U5      :X  a  M@   e   g s  snf s  snf )Nr   r_   )sizer^   ra   )kro   rk   r   r   r   r   )rv  r4  r  r   r   c              3   *   #    U  H	  oS :*  v   M     g7f)r   Nrd   r;  rv  s     rU   r=  "test_partitions.<locals>.<genexpr>  s     1D!Qq&!   )r4  c              3   *   #    U  H	  oS :*  v   M     g7f)ro   Nrd   rx  s     rU   r=  ry    s     ':1Qrz  )
r   rQ   r-   allsumvaluesrH   r   r   r   )rC  r[  nr4  qs        rU   test_partitionsr    s   41b'
C1XJqq)*cf444Jq!!,-777Jq!QQ/0CF:::Jq!T23sv===Jq$23sv===Jq!QQ/0CF:::  
1"#	
AA!!lQF(4 4 4 4 
1"#	
AA!"aL1a&aA,!q!f(    
1Q'(	
AA!"aLaA,-@ !a1*D!*ac1D!1D.D
Oa 	
*D!! ! ! ! !
 
1Q41%&	
AA!+    
1"#!q!f!lQF(4 <a=8< aC':':$:=8<< < < < < 1a[$Q'DAA))))FA ( HQK #D!8<s   J6JJJ	"J	c                     [        S5       V s/ s H  o S S  PM	     sn SS// SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/:X  d   e[        [        S5       Vs/ s H  oS S  PM	     sn5      S:X  d   eg s  sn f s  snf )Nr  r   r_   )r   r^   r^   )r   r   r_   )r   r   r^   r^   )r   r_   r_   r_   )r   r_   r_   r^   r^   )r   r_   r^   r^   r^   r^   )r   r^   r^   r^   r^   r^   r^   )r_   r_   r_   r_   r_   )r_   r_   r_   r_   r^   r^   )r_   r_   r_   r^   r^   r^   r^   )r_   r_   r^   r^   r^   r^   r^   r^   )	r_   r^   r^   r^   r^   r^   r^   r^   r^   )
r^   r^   r^   r^   r^   r^   r^   r^   r^   r^      $   )r   r   )r[  js     rU   test_binary_partitionsr    s    +B/0/QaD/0aVY<1?13K#%C	5E E E E /343!345;;; 1 5s   A=!Bc            
         [        SS5       V s/ s H   n [        [        [        U 5      5      5      PM"     sn [        SS5       V s/ s H  n [	        U 5      PM     sn :X  d   e[        [        S5      5      / SQ:X  d   e[        SS5       HV  n[        [        U5      5      n[        U5      nU H.  nU[        UR                  5      :X  d   eUR                  5       nM0     MX     [        [        S 5        g s  sn f s  sn f )Nr^   r   ro   )r   r   r   r   r   r   rc   c                  *    [        [        S5      5      $ )Nr   )rQ   r   rd   re   rU   rr    test_bell_perm.<locals>.<lambda>  s    tM!$45re   )r   r   r   r   r   rQ   r   rB  
array_formnext_trotterjohnsonrI   r   )r[  r  r+  r  bis        rU   test_bell_permr  	  s    05a<1CM!$%&<#AqkA+)	!kA+ + + +a ! &J J J J
 1a[a!!Bq||,,,,%%'A   :56 = A+s   'C7C<c            	          / SQn [        U 5       H[  u  p[        [        US-   5      5      n[        U5      U:X  d   e[        U Vs1 s H  n[	        U5      S-  iM     sn5      S:X  a  M[   e   g s  snf )N)r^   r_   r   r     L   r^   r_   )	enumeraterQ   r   r   r   )lengthsr  Nr[  r  s        rU   test_involutionsr    sl    #G'"%a!e,-1v{{q1q!KNA%q12a777 # 2s   A0
c                     [        [        [        [        [        S5      5      5      5      5      S:X  d   eSR	                  S [        S5       5       5      S:X  d   e[        [        / SQ5      5      / SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/	:X  d   e[        [        / SQ5      5      / SQ/ SQ/:X  d   e[        [        S5      5      [        S5      /:X  d   e[
        n [        U " S5      5      / :X  d   eU " S5       Vs/ s H  nSR	                  U5      PM     snS/:X  d   eU " S5       Vs/ s H  nSR	                  U5      PM     snSS/:X  d   eU " S5       Vs/ s H  nSR	                  U5      PM     snS/:X  d   eU " S5       Vs/ s H  nSR	                  U5      PM     sn/ SQ:X  d   eU " S5       Vs/ s H  nSR	                  U5      PM     sn/ SQ:X  d   eU " S 5       Vs/ s H  nSR	                  U5      PM     sn/ S!Q:X  d   e[        [        S"/S#/S#/S$//5      5      S#/S$/S"/S#//S#/S"/S$/S#///:X  d   eg s  snf s  snf s  snf s  snf s  snf s  snf )%Nra   i	  rX   c              3   D   #    U  H  nS R                  U5      v   M     g7fr8  r9  r;  r[  s     rU   r=  $test_derangements.<locals>.<genexpr>$  s     F'E!2771::'Er?  abcdebadecbaecdbcaedbcdeabceadbdaecbdeacbdecabeacdbedacbedcacabedcadebcaebdcdaebcdbeacdeabcdebaceabdcebadcedabcedbadabecdaebcdaecbdcaebdcbeadceabdcebadeabcdeacbdebacdebcaeabcdeadbceadcbecabdecbadecdabecdbaedabcedacbedbacedbcar   )r^   r   ro   r_   )r^   r_   ro   r   )r^   ro   r   r_   )r_   r   ro   r^   )r_   ro   r   r^   )r_   ro   r^   r   )ro   r   r^   r_   )ro   r_   r   r^   )ro   r_   r^   r   )r   r^   r_   r_   )r_   r_   r   r^   )r_   r_   r^   r   bar  abbrW  bcacabaabbbbaaaabbcccc)ccccaabbccccababccccabbaccccbaabccccbabaccccbbaaaabbccc)cccabbacccababcccaabbccacbbaccacbabccacabbcbccbaacbccabacbccaabbcccbaabcccababcccaabbooks)kbsooksboosbkooskboooksbooskbookbsoobksooskoboksobosbokobsokro   r_   r^   )r   rQ   r   r   r:  rB   )Dr[  s     rU   test_derangementsr  "  s   t)$uQx.9:;sBBB77F'<W'EFF  
 %l34lL,lL,9N N N N %l34l9$ $ $ $%d+,d<<<A%>R !$(1BGGAJ(TF222 !%)1BGGAJ)eU^;;; !&	*	1BGGAJ	*vh666 !*.1BGGAJ. 3    !")-1BGGAJ- 2    !"'
+
1BGGAJ
+ 0# # # # %sQC!qc&:;<
qcA3sQC!qc2A4 4 4 4 ))*. . ,s$   I
0I II?I/I#c                      S n / n[        SS5       H/  nUR                  X " USS5      U " USS5      U " USS5      45        M1     [        U5      [        / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/5      :X  d   eg )Nc           	      >    [        [        [        XU5      5      5      $ r   )r   rQ   r+   )r  rv  fs      rU   counttest_necklaces.<locals>.countD  s    4	!*+,,re   r^   r   r_   r   ro   )r^   r_   r_   ro   )r_   ro   ro   ra   )ro   r   r   r  )r   ra   ra      )rc   r   r   '   )ra         \   )r            )r   r  r   )r  r4  r[  s      rU   test_necklacesr  C  s    -
A1a[		5Aq>5Aq>5Aq>; 	<  !9     re   c                      [        [        SS5      5      n [        U 5      [        SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
5      :X  d   e[        [        SS5      5      n [        U 5      [        / SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/5      :X  d   eg )Nr_   r   r   r^   ro   )r   r   r   r   )r   r   r   r^   )r   r   r^   r^   )r   r^   r   r^   )r   r^   r^   r^   )r^   r^   r^   r^   )rQ   r   r   )bcs    rU   test_braceletsr  T  s    	i1o	B":	
A	
A	
A	
A	
A	
A	
A	
A	
A	
A!
     
i1o	B":!    re   c                      [        [        S5      5      / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/:X  d   e[        [        [        S5      5      5      S:X  d   eg )Nrc   r  )r   r^   r_   ro   ro   )r   r^   r_   ro   r_   )r   r^   r_   ro   r^   )r   r^   r_   ro   r   )r   r^   r_   r_   r_   )r   r^   r_   r_   r^   )r   r^   r_   r_   r   )r   r^   r_   r^   r_   )r   r^   r_   r^   r^   )r   r^   r_   r^   r   )r   r^   r_   r   r^   )r   r^   r_   r   r   )r   r^   r^   r^   r^   )r   r^   r^   r^   r   )r   r^   r^   r   r^   )r   r^   r^   r   r   )r   r^   r   r^   r   )r   r^   r   r   r   )r   r   r   r   r   r  i2  )rQ   r    r   rd   re   rU   test_generate_oriented_forestr  m  sq    (+,/?/?/?/?/1; ; ; ; t,R012d:::re   c            
      (   [        [        S5      5      n [        U 5      [        [        U S S S2   U SS S2   5      5      :X  d   e[        U S5      [	        U S S 5      [	        U SS  5      /:X  d   e[        [        S 5        [        [        S 5        g )Nr  r_   r^   rc   c                  >    [        [        [        S5      5      S5      $ )Nr  ro   r:   rQ   r   rd   re   rU   rr    test_unflatten.<locals>.<lambda>{  s    yeBi!<re   c                  >    [        [        [        S5      5      S5      $ )Nr  rj   r  rd   re   rU   rr   r  |  s    yeBi"=re   )rQ   r   r:   ziprB  rI   r   )rs    rU   test_unflattenr  w  s    U2YAQ<4AccFAaddG 45555Q?uQrU|U1QR5\::::
:<=
:=>re   c                     [        / S/5      / :X  d   e[        [        [        S5      5      5      / SQ:X  d   e[        [        [        S5      5      [        [        S5      5      5      / SQ:X  d   e[        / SQ/ SQ5      SS/:X  d   e[        / SQ/ SQ5      S/:X  d   e[        / S/5      / :X  d   e[        [        [        S5      5      5      / SQ:X  d   e[        [        [        S5      5      [        [        S5      5      5      / SQ:X  d   e[        [        [        S5      5      [        [        S5      5      5      / :X  d   e[        / SQ/ S	Q5      SS/:X  d   e[        / SQ/ S
Q5      S/:X  d   eg )Nr^   ro   r   r   r   )r^   r_   rc   r_   )r^   ro   rc   )r  r_   ro   )r  r   ro   )r   rQ   r   r   rd   re   rU   test_common_prefix_suffixr    s5   aS!R'''eAh(I555eAheAh8IEEEI.1a&888I.1#555aS!R'''eAh(I555eAheAh8IEEEeAheAh8B>>>I.1a&888I.1#555re   c                      [        / SQ5      S:X  d   e[        S5      S:X  d   e[        S5      S:X  d   e[        SSS9S:X  d   e[        S5      S:X  d   e[        S	[        S
9S:X  d   eg )Nr   r   r   r   F)directedabaaab)bbr   rX  r   rN   )rX  r   r  r   )r&   r   rd   re   rU   test_minlexr    sy    )	))))	))))	))))e,	999%=E!!!)s37NNNNre   c            	        ^ ^ [        [        [        [        4[        SS95      [        [        /[        [        /4;   d   e[        [        [        [        4[        SS95      [        [        [        [        4[        SS95      :X  d   e[        [        [        [        45      5      [        [        /:X  d   e/ SQ/ SQ/ SQS/S//S S	 4/u  mm [        [        TT SSS
95      S/S// SQ/ SQ/ SQ/:X  d   e[        [        U U4S j5        g )NF)defaultr   r   r   r_   r^   c                     [        U 5      $ r   )r   r   s    rU   rr   test_ordered.<locals>.<lambda>  s    CFre   c                     [        U 5      $ r   )r}  r   s    rU   rr   r    s    c!fre   r  warnc            	      .   > [        [        TT SSS95      $ )NFTr  )rQ   r	   keysseqs   rU   rr   r    s    T5t<=re   )rQ   r	   rS   rR   hashrI   r   r  s   @@rU   test_orderedr    s    Ae451a&1a&9IIIIAe45WaVT5123 3 3A QF***Y	A3<"$457ICT5u=>
qc9i34 4 4
: > ?re   c                  L   [        / 5      / :X  d   e[        S/5      S//:X  d   e[        SS/5      S/S//:X  d   e[        / SQ5      S/SS//:X  d   e[        / SQ5      SS/S//:X  d   e[        / SQ5      S/S/S//:X  d   eSSKJn   [        / SQU 5      SS/S//:X  d   eg )Nr^   r   r_   r   )r_   r^   r^   r   lt)r4   operatorr  r  s    rU   	test_runsr    s    8r>>9!A<QC!:%%%	?sQFm+++	?1vsm+++	?sQC!o---	2Aq6A3-///re   c                     [        [        SS5      5      n [        U S/5      / SQ/ SQ/:X  d   e[        U S5      SS/:X  d   e[        U S5      SS/:X  d   e[        U SS/45      SSS	S/4S
SSS/4/:X  d   e[        U SS/45      SS	S/4SSS/4/:X  d   e[        U SS/S45      SSS	/S4S
SS/S4/:X  d   e[        [        U 5      S/SS/45      S/SS/4S
/SS/44:X  d   e[        [        U 5      S/SS45      S/SS4S
/SS44:X  d   e[        [        [        S5      5      SS	/S1S/5      SS/ SQS
S1S//:X  d   e[	        [
        S 5        [	        [
        S 5        g )Nr^   r  r   r   )rc   ra   r   r   )r   r   r_   ro   rc   ra   r   r   r   rk   )rc   ra   r  r  rA  )r^   r   r^   r   r  )r   )r   r  r  r   c                       [        SS/S/5      $ )Nr   r^   r`   r1   rd   re   rU   rr   test_reshape.<locals>.<lambda>  s    w1vt4re   c                       [        SS/S/5      $ )Nr   r^   ro   r  rd   re   rU   rr   r    s    w1vs3re   )rQ   r   r1   rB  rI   r   )r  s    rU   test_reshaper    s	   
uQ{
C3	|$% % %3	|$% % %3	|$% % %3QC!
QA!QA() ) )3s$
1a&	FQF+,- - -3QC$
aVQ!aVQ() ) )5:!a0136
	Q/123 3 35:Q~.#q&	QCF+,- - -4b	?QaS,$?@
Q	Aq6#6	789 9 9
:45
:34re   c                    ^  [        [        S [        S5       5       5      5      SS0SSS.SS0SSS.SS0/:X  d   e[        [        S [        S5       5       5      5      S	S/:X  d   e[        [        S
5      5      S
/:X  d   e[        [        S5      5      [        S5      :X  d   e[        [        S/SS/S//5      5      S/SS//:X  d   e[        [        [	        S S/SS4 5       5      5      5      S/SS4SS/S4SSS/4/:X  d   e[        [        SSSSS/S/S/S/S//	5      5      SSSS/S/S//:X  d   eS/m [        [        U 4S j5        S//m [        [        U 4S j5        g )Nc              3   $   #    U  H  ov   M     g 7fr   rd   r;  r+  s     rU   r=  test_uniq.<locals>.<genexpr>  s     .1Q   r   r^   r   r_   rk   c              3   *   #    U  H	  oS -  v   M     g7f)r_   Nrd   )r;  rS   s     rU   r=  r    s     -HqUHrz  rc   r   r   ababcrW  c              3   $   #    U  H  ov   M     g 7fr   rd   r  s     rU   r=  r    s     !9[![r  ro   c                  d   > [        T5       V s/ s H  n TR                  U 5      PM     sn $ s  sn f r   r;   remover[  r  s    rU   rr   test_uniq.<locals>.<lambda>  #    tAw!?w!!((1+w!?!?   -c                  d   > [        T5       V s/ s H  n TR                  U 5      PM     sn $ s  sn f r   r  r
  s    rU   rr   r    r  r  )rQ   r;   r-   r   r.   rI   RuntimeError)r  s   @rU   	test_uniqr    s   .
1../
QQ11v1|aV<= = =-E!H--.1a&888S	?se###W$u+---qcAq6A3'()qcAq6]:::\!9qc1a[!99:;#q!q1#qkAq1#;/0 0 0aAq1#sQC!qc:;<	
Aq1#sQC ! ! !	
A
<?@
A
<?@re   c            
        ^ ^ [        [        [        SSSS95      5      S:X  d   e[        [        [        SSSS95      5      S:X  d   e[        [        [        SSSS95      5      S:X  d   e[        [        [        SSS	S95      5      S
:X  d   e[        [        [        SSS S95      5      S:X  d   eS m [        U 4S j5      [	        S5      :X  d   eS m[        U4S j5      [	        S5      :X  d   eg )N1123r_   r^   r   r@  r   r  r  r   rc   ro   c                  n    S H/  n [        SU 5        [        / SQSU S9 H  n[        SU5        M     M1     g )NNr   r^   r  r   	ordered =r   r_   r      )rl  r%   
orderedvalr+  s     rU   test1test_kbins.<locals>.test1  s2    .J+z*9a<eQ = /re   c                     > T " 5       $ r   rd   )r  s   rU   rr   test_kbins.<locals>.<lambda>      EGre   a#          ordered = None
            [[0], [0, 1]]
            [[0, 0], [1]]
        ordered = 0
            [[0, 0], [1]]
            [[0, 1], [0]]
        ordered = 1
            [[0], [0, 1]]
            [[0], [1, 0]]
            [[1], [0, 0]]
        ordered = 10
            [[0, 0], [1]]
            [[1], [0, 0]]
            [[0, 1], [0]]
            [[0], [0, 1]]
        ordered = 11
            [[0], [0, 1]]
            [[0, 0], [1]]
            [[0], [1, 0]]
            [[0, 1], [0]]
            [[1], [0, 0]]
            [[1, 0], [0]]
c                      S H?  n [        SU 5        [        [        [        S5      5      SU S9 H  n[        SU5        M     MA     g )Nr  r  ro   r_   r   r  )rl  r%   rQ   r   r  s     rU   test2test_kbins.<locals>.test2  s;    .J+z*4a>1jAeQ B /re   c                     > T " 5       $ r   rd   )r  s   rU   rr   r    r  re   a[          ordered = None
            [[0], [1, 2]]
            [[0, 1], [2]]
        ordered = 0
            [[0, 1], [2]]
            [[0, 2], [1]]
            [[0], [1, 2]]
        ordered = 1
            [[0], [1, 2]]
            [[0], [2, 1]]
            [[1], [0, 2]]
            [[1], [2, 0]]
            [[2], [0, 1]]
            [[2], [1, 0]]
        ordered = 10
            [[0, 1], [2]]
            [[2], [0, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[0], [1, 2]]
            [[1, 2], [0]]
        ordered = 11
            [[0], [1, 2]]
            [[0, 1], [2]]
            [[0], [2, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[1, 0], [2]]
            [[1], [2, 0]]
            [[1, 2], [0]]
            [[2], [0, 1]]
            [[2, 0], [1]]
            [[2], [1, 0]]
            [[2, 1], [0]]
)r   rQ   r%   r   r   )r  r  s   @@rU   
test_kbinsr"    s    tE&!Q/01R777tE&!R012b888tE&!R012b888tE&!Q/01Q666tE&!T234999 
 #$ 0 )       0 
 #$ "0 ")  "  "  " re   c                      [        [        5       5      SL d   e[        [        [        S5      5      5      SL d   e[        / SQ5      SL d   e[        S/S//5      SL d   e[        S/S//5      SL d   eg )NFro   r   Tr^   r_   )r"   r   rQ   r   rd   re   rU   test_has_dupsr$  '  sz    CE?e###DqN#u,,,I$&&&aS1#J4'''aS1#J5(((re   c                      [        S/ SQ5      SS/SS/S//:X  d   e[        S/ SQS5      SS/SS/S//:X  d   eS/ SQ4n [        S/U Q76 SS/SS/S//:X  d   eg )	Nr  )r^   r   r^   r_   r   r  er   rX  dro   )r   )outputs    rU   test__partitionr)  /  s    g/	c
S#J4' ' ' 'g2	c
S#J7' ' ' '!Fg''S#Jc
SE+JJJJre   c                  t   SSK Jn   [        n[        U" SS5      5      / /:X  d   e[        U" SS5      5      / /:X  d   e[	        SS5       Hj  nS /[        [	        SU5      5      -    HJ  n[        S U" X#S5       5       5      [        S U" X#S5       5       5      s=:X  a  U " X#5      :X  a  MF    e   e   Ml     g )Nr   )nTr^   r   c              3   &   #    U  H  nS v   M	     g7fr^   Nrd   r  s     rU   r=  *test_ordered_partitions.<locals>.<genexpr>@       *z!Az   c              3   &   #    U  H  nS v   M	     g7fr-  rd   r  s     rU   r=  r.  A  r/  r0  )%sympy.functions.combinatorial.numbersr+  r=   rQ   r   r}  )r+  r  r[  r  s       rU   test_ordered_partitionsr3  8  s    8A!Q=RD   !Q=RD   1a[$uQ{++A*qqz***qqz**1 , re   c                      [        [        S5      5      SS/SS//:X  d   e[        [        [        S5      5      5      / SQ/ SQ/ SQ/:X  d   e[        [        [        S5      SS	95      / SQ/ SQ/ SQ/:X  d   eg )
Nr  r   r  ro   r   r   r   r`   )dir)rQ   r>   r   rd   re   rU   test_rotationsr6  E  sn    	$ c3Z#s$<<<<	%(#$Iy(IIII	%(+,Iy0QQQQre   c                  J   [        S5      SS/:X  d   e[        SS5      / SQ:X  d   e[        SSS9S:X  d   e[        SSSS9S:X  d   e[        [        SS	5      5      / S
Q:X  d   e[        [        SSSS95      / SQ:X  d   e[        [        S 5        [        [        S 5        g )Nro   r^   r   T)str11011r_   r|  )rl   r   r   r   rX   )000110r9  c                      [        S5      $ )Ng      ࿩r#   rd   re   rU   rr   test_ibin.<locals>.<lambda>R  s    tCyre   c                      [        SS5      $ )Nr_   r^   r?  rd   re   rU   rr   r@  S  s
    tAqzre   )r#   rQ   rI   r   rd   re   rU   	test_ibinrB  K  s    7q!f1:"""t$$$1$5(((Q#CCCCQ%&*BBBB
:()
:)*re   c                     [        S5      SL d   e[        S5      SL d   e[        S 5      SL d   e " S S[        5      n [        U " 5       5      SL d   e " S S[        5      n[        U" 5       5      SL d   e " S	 S
5      n[        U" 5       5      SL d   e " S S5      n[        U" 5       5      SL d   e " S S5      n[        U" 5       5      SL d   e " S SU5      n[        U" 5       5      SL d   eg )Nr   Fr^   c                       \ rS rSrSrg)test_iterable.<locals>.Test1i[  rd   Nrw   rd   re   rU   Test1rE  [  r~   re   rF  c                       \ rS rSrSrSrg)test_iterable.<locals>.Test2i`  Trd   Nrx   ry   rz   r{   	_iterabler|   rd   re   rU   Test2rH  `      	re   rK  Tc                       \ rS rSrSrg)test_iterable.<locals>.Test3ie  rd   Nrw   rd   re   rU   Test3rN  e  r~   re   rO  c                       \ rS rSrSrSrg)test_iterable.<locals>.Test4ij  Trd   NrI  rd   re   rU   Test4rQ  j  rL  re   rR  c                       \ rS rSrS rSrg)test_iterable.<locals>.Test5io  c              3      #    Sv   g 7f)Nr^   rd   )selfs    rU   __iter__%test_iterable.<locals>.Test5.__iter__p  s
     Gs   rd   N)rx   ry   rz   r{   rW  r|   rd   re   rU   Test5rT  o  s    	re   rY  c                       \ rS rSrSrSrg)test_iterable.<locals>.Test6iu  Frd   NrI  rd   re   rU   Test6r[  u  s    	re   r\  )r@   rA   )rF  rK  rO  rR  rY  r\  s         rU   test_iterabler]  V  s   A;%A;%D>U"""  EG%%%  EG$$$  EG%%%  EG$$$  EG$$$  EG%%%re   c                     [        [        S/S5      5      S///:X  d   e[        [        SS/S5      5      SS///:X  d   e[        [        SS/S5      5      S/S///:X  d   e[        [        / SQS5      5      / SQ//:X  d   e[        [        / SQS5      5      S/SS//SS/S///:X  d   e[        [        / SQS5      5      S/S/S///:X  d   e[        [        / S5      5      / :X  d   e[        [        / S5      5      / :X  d   e[        [        SS/S5      5      / :X  d   e[        [        SS/S5      5      / :X  d   eg )Nr^   r_   r   ro   r   )rQ   rD   rd   re   rU   test_sequence_partitionsr_  {  so   #QC+,1#777#QFA./aVH:===#QFA./aS1#J<???#Iq12	{mCCC#Iq12#1v!Q!&' ' '#Iq12aS1#6GGGG #B*+r111#B*+r111#QFA./2555#QFA./2555re   c                     [        [        / S5      5      / //:X  d   e[        [        / S5      5      / / //:X  d   e[        [        / S5      5      / / / //:X  d   e[        [        S/S5      5      S///:X  d   e[        [        S/S5      5      / S//S// //:X  d   e[        [        S/S5      5      / / S/// S// /S// / //:X  d   e[        [        SS/S5      5      SS///:X  d   e[        [        SS/S5      5      / SS//S/S//SS// //:X  d   e[        [        SS/S5      5      / / SS/// S/S/// SS// /S// S//S/S// /SS// / //:X  d   e[        [        / SQS5      5      / SQ//:X  d   e[        [        / SQS5      5      / / SQ/S/SS//SS/S/// SQ/ //:X  d   e[        [        / SQS5      5      / / / SQ// S/SS/// SS/S/// / SQ/ /S// SS//S/S/S//S/SS// /SS// S//SS/S// // SQ/ / //
:X  d   e[        [        / S5      5      / :X  d   e[        [        S/S5      5      / :X  d   e[        [        SS/S5      5      / :X  d   eg )Nr^   r_   ro   r   r   )rQ   rE   rD   rd   re   rU   test_sequence_partitions_emptyra    sJ   )"a01rdV;;;)"a01r2hZ???)"a01r2rl^CCC)1#q12ug===)1#q12QCyA3)6LLLL)1#q12
b1#aS"R}56 6 6)1a&!45Aq6(CCC)1a&!45
q!faSzQFB<01 1 1)1a&!45	R!Q2sQC.21vr*:
b1#!qc2!QR(8:    ))Q78i[MIII))Q78
iA3A-1a&1#BHI I I))Q78	Rb1#1v.	aVaSB	2.
b1a&QC!qc?
q!fbQFB,
Q!bIr2.=    #B*+r111#QC+,222#QFA./2555re   c                      / SQn [        [        S5      5      U :X  d   e[        [        S5      5      U :X  d   e[        [        S5      5      U :X  d   eg )N)r   )r   r`   r^   )r   r^   r`   )r   r`   r`   r   )r`   r   r^   )r^   r   r`   )r`   r   r`   r   )r`   r^   r   )r^   r`   r   )r`   r`   r   r   r   r   )rQ   rC   )rC  s    rU   test_signed_permutationsrc    sV    4C #I./3666#I./3666#I./3666re   N)textwrapr   	itertoolsr   r   sympy.core.basicr   sympy.core.numbersr   sympy.core.sortingr	   sympy.core.symbolr
   r   (sympy.functions.combinatorial.factorialsr   sympy.matrices.denser   sympy.combinatoricsr   r   r   rP   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   sympy.utilities.enumerativerF   rG   sympy.core.singletonrH   sympy.testing.pytestrI   rJ   wrS   rR   r   rV   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  rE  r]  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r)  r3  r6  rB  r]  r_  ra  rc  rd   re   rU   <module>rq     s    % " & & . > ' A A4 4 4 4 4 4 4 4 4 4 4 4 4 43 # ?Y
1a>. 3,A,)*%9P08:	:7H@@
EE"<" ?FDN >KB( V<7"84B"2;?6O?050A"K \)K
R+"&J6 6@7re   