o
    *Î®c
÷  ã                   @   sn  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
 d dlmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ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& d dl'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZM d dlNmOZOmPZPmQZQ d d lmRZRmSZSmTZT d d!lUmVZV d d"lWmXZX d d#lYmZZZm[Z[m\Z\ d d$l]m^Z^m_Z_m`Z`maZa d d%lbmcZc d d&ldmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZm ed'd(d)Zned*e
d+\ZoZpd,d- Zqd.d/ Zrd0d1 Zsd2d3 Ztd4d5 Zud6d7 Zvd8d9 Zwd:d; Zxd<d= Zyd>d? Zze"Z{dædAdBZ|dCdD Z}dEdF Z~dGdH ZdIdJ ZdKdL Ze\dMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z¡dd Z¢dd Z£dd Z€dd Z¥dd ZŠdd Z§e\dd Zšdd Z©eZdd Zªdd  Z«d¡d¢ Z¬d£d€ Z­d¥dŠ Z®d§dš Z¯d©dª Z°d«d¬ Z±d­d® Z²d¯d° Z³d±d² ZŽd³dŽ Zµdµd¶ Z¶d·dž Z·d¹dº Zžd»dŒ Z¹dœdŸ Zºd¿dÀ Z»dÁdÂ ZŒdÃdÄ ZœdÅdÆ ZŸdÇdÈ Z¿dÉdÊ ZÀdËdÌ ZÁdÍdÎ ZÂdÏdÐ ZÃdÑdÒ ZÄdÓdÔ ZÅdÕdÖ ZÆd×dØ ZÇdÙdÚ ZÈeZdÛdÜ ZÉdÝdÞ ZÊe\dßdà ZËdádâ ZÌdãdä ZÍdåS )çé    )Úprod)ÚProductÚproduct)ÚSumÚ	summation)Ú
DerivativeÚFunction)ÚCatalanÚ
EulerGamma)ÚEÚIÚRationalÚnanÚooÚpi)ÚEq©ÚS)ÚDummyÚSymbolÚsymbols)Úsympify)ÚrfÚbinomialÚ	factorial)Úharmonic)ÚAbs)ÚexpÚlog)ÚsinhÚtanh)Úfloor)Úsqrt)Ú	Piecewise)ÚcosÚsin)ÚgammaÚ
lowergamma)ÚKroneckerDelta)Úzeta)ÚIntegral)ÚAndÚOr)ÚMatrixSymbol)ÚIdentity©ÚRange)ÚInterval)Úcombsimp©Úsimplify)ÚIdxÚIndexedÚIndexedBase)Ú
telescopicÚ)_dummy_with_inherited_properties_concreteÚeval_sum_residue)ÚReorderError)ÚInconsistentAssumptions)ÚXFAILÚraisesÚslow)ÚMatrixÚSparseMatrixÚImmutableDenseMatrixÚImmutableSparseMatrix)ÚMod)	ÚaÚbÚcÚdÚkÚmÚxÚyÚzÚnT©Úintegerzf g©Úclsc                  C   sÂ  t ddd} t ddd}t ddd}|}|| }|}|d }t| d | ||f ¡ }|| }|}|}|d }t| d | ||f ¡ }t|| dksLJ |}|}|}|d }t| d | ||f ¡ }	|	dkshJ d}d	}|}|d }tt| | ||f ¡ }d	}d}|}|d }tt| | ||f ¡ }t|| dksJ d
}d
}|}|d }tt| | ||f ¡ }	|	dksºJ tt|  t| ddkfd}
t|
| dd	f}| d¡| ¡  d¡ksßJ d S )NÚiTrO   rI   Újé   é   r   é   é   ©r   Té   )	r   r   Údoitr4   Úfr#   r   rD   rN   )rS   rI   rT   rJ   rN   rE   rF   ÚS1ÚS2ÚSzÚeÚs© rb   úN/tmp/pip-target-vg8gfxp4/lib/python/sympy/concrete/tests/test_sums_products.pyÚtest_karr_convention.   sP    rd   c                     sZ   t ddd t ddd} t ddd} fdd}|| | |  || |  || | |  d S )NrS   TrO   ÚuÚvc                    s    d d d   d   }t |   d ¡| }| }|d }t| ||f ¡ }t ||  |¡|  | ¡  dks>J d S )NrZ   rV   rU   r   )r4   Úsubsr   r[   )rJ   rN   Úgr\   rE   rF   r   ©rS   rb   rc   Útest_the_sum   s   ,z.test_karr_proposition_2a.<locals>.test_the_sum©r   )re   rf   rj   rb   ri   rc   Útest_karr_proposition_2a   s   
rl   c                     sì   t ddd t ddd} t ddd}t ddd} fdd}|| | | | | |  || | | | |  || | | | | || | | |  || | |  || | | | |  || | | | |  || | | |  || | | | | |  d S )	NrS   TrO   re   rf   Úwc           	         s    d }| }|d }t | ||f ¡ }| }|d }t | ||f ¡ }|}|d }t | ||f ¡ }|||  dks>J d S )NrZ   rU   r   )r   r[   )	ÚlrN   rJ   ra   rE   rF   r]   r^   ÚS3ri   rb   rc   rj   ®   s   z.test_karr_proposition_2b.<locals>.test_the_sumrk   )re   rf   rm   rj   rb   ri   rc   Útest_karr_proposition_2b§   s   rp   c                  C   sh  t dtttftt d ksJ ttjtttftju sJ tttttf ¡ tks,J tttttf ¡ tks:J tttdtf ¡ tt ksJJ tttt	ddf ¡ dksZJ tttt	dddf ¡ dkskJ tttt	dddftttt	ddd	fksJ d
\} }ttt| |f}ttt|| f}||ksJ | ¡ dkr©| ¡ dks«J ttd } }ttt| |f}ttt|| f}||ksÈJ | ¡ dt d krØ| ¡ dksÚJ tt
ttdtft tddf ¡ td d ksôJ t dtddfdksJ t dt tddfdksJ t dt t ttdftdtf ¡ dt dtd   tt  ttd   ttd   td td   ksGJ t tttd	dftd	td td td ksdJ t tttttd fttttd  ttd  ksJ tt ttttttj ftsJ t ttdtftu s£J t ttt	ddfdks²J d S )NrU   rW   é7   rV   é   é
   é	   r   éþÿÿÿ©rU   rV   rZ   l    d(	 l    d7nŸx:^V é   éÿÿÿÿ)r   rN   rE   rF   r   r   ÚNaNrK   r[   r0   r*   rL   rJ   rH   Úexpandr$   Ú
isinstanceÚHalfrI   r   )ÚloÚhiÚs1Ús2rb   rb   rc   Útest_arithmetic_sumsÔ   s>      "0$"
ÿ"B
ÿ:>&"r   c                   C   s  t td tddfdksJ t ttttftt tt d  d  ¡ ks&J t td tdtfdtd  dtd   t d  ¡ ksDJ t td tdtftd dtd   td  d  ¡ ksbJ t td tdtfdtd  d	td   d	td
   dtd   t d  ¡ ksJ d S )NrV   rZ   é   éÇ   rU   é   rw   é   é   rX   é*   )r   rN   rE   rF   rz   rb   rb   rb   rc   Útest_polynomial_sumsô   s   ÿ"ÿ"ÿ:ÿr   c                  C   sð  t tt tdtfdttd   dt  ksJ t ddt  tdtfdtd  d ks.J t tjt tdtfdks=J t dt tdtfdtd  d ksQJ t dt tdtftu s_J t dt  tdtfdksnJ t dt  tdtftddksJ t ddt d  tdtftdd	ksJ t dtd  tdtf ¡ ddt d  ks­J t t	t tdtft
dt	 d  tt	dk ftt	t tdtfd
fksÓJ t dt  tdtft u sãJ t tt tdtfttt tdtfksùJ t ddt	 d  t	dtftd ksJ t ddt	 d  t	dtfddtd   td tdd ks0J t dt	 t	dtfdtd   td tj ksKJ t tt	 t	ttft
t t d ttdftt ttd   t d  d
fksvJ t dtt	 d  t	dtfdt
td tdt dfdttd    d dt  d  d
f ks©J t dtd d  td  tdtftu sÀJ tdtd d  tt df ¡ t dtd d  tt dfksãJ tdt tdtf ¡ } | dksöJ | jsüJ tdt tdtf ¡ } | dksJ | jsJ tdt tdtf ¡ } | dks(J | js.J ttjt tdtf ¡ } | dksBJ | jrHJ ttddt tdtf ¡ } | tddksaJ | jrgJ tdt tdtf ¡ tu sxJ tdt tdtf ¡ tu sJ tdd
d\}}}t tdt t | | t tdt t | | t  t |dtd f} |  ¡ t
dttdt t ||  t dfdksÕJ tdtd d  tdtf ¡ tdd tdtt   ksöJ d S )Nr   rU   rV   rZ   rw   é6   éüÿÿÿr   é   Trx   ru   g      à?g      Ð?gUUUUUUÕ?gwJëÿï?i rX   g      ð?gq=
×£p@zi k qrO   rY   )r   r   rN   rF   r   r|   r   r   rz   rK   r#   r   r   r   rL   rE   r   r[   Úis_Floatr   r   r4   r    )ÚresultrS   rI   Úqrb   rb   rc   Útest_geometric_sums   sh   0,($*02ÿ ,*D6:
ÿ&ÿ
ÿ.F""Fÿ&ÿFr   c                   C   s   t dt tdtftdt tdtfksJ t dt tdtfttks&J t tt tdtfttt ks8J t dt tdtftttd ksLJ d S )NrU   r   rX   rw   )r   rI   rN   r   r   rb   rb   rb   rc   Útest_harmonic_sumsF  s   , $,r   c                  C   s   t jddt  tddtd    } t| tttf}t|tr!J d}t	ddD ]
}||  
t|¡7 }q(| 
td¡ 
td¡}||ksCJ d S )	Nr   r   rU   rZ   r   éýÿÿÿrX   rw   )r   r|   rN   r   r   rE   rF   r{   r   Úrangerg   )r\   ra   ÚArS   ÚBrb   rb   rc   Útest_composite_sumsM  s   $r   c                   C   s|   t tdt tdt  tdtfddt  tdt t dt  ks$J t tdt tdt  tt tftdks<J d S )NrV   rw   r   rU   rX   )r   r   rI   rN   r   r"   rb   rb   rb   rc   Útest_hypergeometric_sumsX  s   ÿ ÿ4r   c                  C   s°   t d t tt   } dttdd d ttjd  ttddd  dttdd d  d }t| t tddtddf|ksDJ t| t ddf ¡  | ¡ d¡sVJ d S )	NrV   rZ   rx   r   rX   ç      ø¿ç      ø?g»œ×Ùß|Û=)rJ   r   r   r   r|   r   ÚevalfÚ
epsilon_eq)r\   rh   rb   rb   rc   Útest_other_sums^  s   P$(r   r   c                 K   s   t t| j|fi |€S ©N)Ústrr   r   )r`   rN   Úoptionsrb   rb   rc   ÚNSh  s   r   c                  C   s|  t ttdt d ttd  ddt d   tdtfdt tddks(J t td} t tdtt tdtfd| ks@J t dtddt  tdt  tdtf d| ks[J t tdt d tdt  tdtfd| kstJ t tdt d ddt d   tdt d  tdtfd d| ksJ t td}t dtd ttdt d	d
t   ttd  ddt   tdtf d|ksÉJ t dttdt td dt d  ddt d   tdtf d|ksïJ t dtdt dt d  ddt d   tdtf dtdt dt d  ddt d   tdtf  d|ks+J t t	dd}dtd  dtd   dtd   dtd   dt  d }t tdt | d tdt d tdt  tt d  tdt d  tdt d d  tdtfd|ksJ t tdt dtd  dt  d  d ttd  tdt d d  tdtfd|ksŒJ d S )NrV   rU   rZ   r   éd   rw   iI&  r   iO  ig  i  r   rX   é   é   rx   éï   iží i$L iz iï! i@ i¯0  é   éÍ   éú   éM   é@   rs   )
r   r   ÚfacrN   r   r"   r   r   r   r)   )ÚestrÚpistrÚastrÚPrb   rb   rc   Útest_evalf_fast_seriesl  s   2ÿÿÿ
&62J
ÿ
ÿ
ÿ
ÿÿÿÿ4ÿÿÿ42ÿÿ
ÿ0ÿÿ.ÿÿÿÿÿÿ
ÿ2ÿÿÿÿr®   c                  C   sb  t tdtd  ddt   dtd  dt  d  tdt d  ttd  td  dt d  tdt d  tdtfd	 d
t td
ksJJ t tdd
} t dtdtd  ttd  td  tdt  tdtf d d
| ksxJ t tdtd  dtd  dt  d  dt d d  ttd d  tdt  tdtfd d
| ks¯J d S )Nrx   rU   rV   r   é(   r€   rZ   rw   rš   r    rX   é8   é    )r   r   rN   r©   r   r	   r)   )r¬   rb   rb   rc   Ú!test_evalf_fast_series_issue_4021  sP   B
ÿÿ
ÿÿÿÿÿþ2ÿÿÿÿ@ÿ
ÿÿÿÿÿr²   c                   C   s  t tdt t tdtfdt td dksJ t tdt t tdtfdt td dks2J t tdtd  tdtfdt td d dksLJ t tdtd  tdtfdt td d dksfJ t tdtd  tdtfdt td d dksJ t tdt dt d d	  td
tfdt td	 d dks J t tdt dt d d	  td
tfdt td	 d dksÀJ d S )Nrx   rU   r   rV   é2   r   r    iô  rZ   r   r±   )r   r   rN   r   r   r   rb   rb   rb   rc   Útest_evalf_slow_series  s   22444@DrŽ   c                   C   s   t dtd d  tt tf ¡ t dtd d  tt tfks"J t dttt tt df ¡ t dttt tt dfksDJ d S )NrU   rV   rx   )r   rN   r   r   r   Úabsrb   rb   rb   rc   Útest_evalf_oo_to_oo¢  s   DHr¶   c                  C   s4  dd } | t d ttdd | t d dt   ttdd | t d t d  ttdd | t d dddd | t d dddd	 ttd tddfjd
d
dddksRJ tt d t ttf dd¡d dksfJ dD ](\}}tdt d	  t dtf}| ||¡\}}t|td	  	¡ | 	¡ k sJ qht
tdd  d S )Nc                 S   s@   t | t||f}| ||¡\}}|dkr| ¡ | ¡ ksJ d S ©Nr   )r   rI   Úeuler_maclaurinrz   r[   )r\   rE   rF   rJ   rN   r   ra   r`   rb   rb   rc   Úcheck_exact­  s    z)test_euler_maclaurin.<locals>.check_exactrw   r   rV   rU   rX   r   rZ   é   g       ?)rJ   rN   Úeps)r   r   ))rV   rw   )rV   é   )rs   rŒ   )é   rŒ   c                   S   s   t dtddftddf ¡ S ©NrU   r   )r   rK   rI   rž   rb   rb   rb   rc   Ú<lambda>¿  ó    z&test_euler_maclaurin.<locals>.<lambda>)rI   rE   rF   r   rK   rž   r   rµ   r)   r   r>   Ú
ValueError)r¹   ÚmiÚnir   ra   r`   rb   rb   rc   Útest_euler_maclaurin«  s   (("rÄ   c                   C   sX  t tdtt  tdtfddksJ t tdtt  tdtfddks&J t tdt tddt   tdtfdt tdksBJ t tdt tddt   tdtfdt tdks^J t ttttd  tdtfddkssJ t ttttd  tdtfddksJ t tdt td	d
fddksJ t tdt td	d
fddksªJ d S )NrU   r   z1.29128599706266r³   z31.2912859970626635404072825905956005414986193682745rV   z0.937548254315844z40.93754825431584375370257409456786497789786028861483i@B i z0.693147930560008z40.69314793056000780941723211364567656807940638436025)r   r   rI   r   r   r
   rb   rb   rb   rc   Útest_evalf_euler_maclaurinÂ  s(   &ÿÿ88*ÿÿ"ÿÿrÅ   c                  C   s<   t tttddft tttddf } |  ¡ | ksJ d S ©NrU   rZ   )r   r\   rK   rh   r   )Úexprrb   rb   rc   Útest_evalf_symbolicÑ  s   (rÈ   c                   C   s    t dtdtf ¡ dksJ d S ©Nr   rU   )r   rI   r   r   rb   rb   rb   rc   Útest_evalf_issue_3273×  ó    rÊ   c                  C   s>  t tjtddftju sJ ttjtddftju sJ t ttttf ¡ tks*J t ttttf ¡ tks8J t ttdtf ¡ tt ksHJ d\} }t tt| |f}t tt|| f}||ksbJ | ¡ dksjJ | ¡ dksrJ ttd } }t tt| |f}t tt|| f}dt tt|d | d f }||ksJ | ¡ ttd  ks©J | ¡ dks±J | ¡ ttd  ksœJ t t	dt tdtfdt  tddf ¡ td d td d  ksáJ tdttt
fdt
t d  ksóJ tttdt
ftt
ksJ ttd tdt
ftt
d ksJ tddt  ttt
fdddt t
  t
d  t
d d  td  td d   ksBJ ttttddftdtd td ks[J ttttttd fttttd  ttd  kszJ ttttttttj ft sJ tt tt tdt
ft sJ d S )NrU   rZ   rv   rV   rX   rw   )r   r   ry   rK   r   rN   rE   r[   rL   r*   rF   r   r$   r{   r|   )r}   r~   r   r   Ús3rb   rb   rc   Útest_simple_productsÛ  s@    *ÿ$&:
ÿ2>&$rÍ   c                   C   sL  t tddt  tttfdt t ksJ t ttd tttftdt tdt  ks0J t ttd td  tttftdt  ttd   ksNJ t tttd  td  tttftttd  td  ttd  kstJ t tttd  td  td  tttftd td  dt  td d  ttd   ks€J d S )NrU   rV   rZ   )r2   r   rN   rE   rF   r&   rb   rb   rb   rc   Útest_rational_products  s   ,4<""ÿ*.ÿrÎ   c                  C   sÀ   t dtd  dtd  d  tdtf} t dt dt  dt d  dt d  tdtf}tttd d  dtttj  tttdd   }t|  	¡ |ksTJ t| 	¡ |ks^J d S )Nrw   rV   rU   rZ   )
r   rN   rF   r   r&   r   r|   r   r4   r[   )r   r   ÚRrb   rb   rc   Útest_wallis_product  s
   (48rÐ   c                  C   sP  t dt dtd   tdtf ¡ dddt   ksJ t ttttd  tttf ¡ tdt  tdt  tt tdt  ksGJ t ttttd  tdtf ¡ tdt  tdt  tdt  td td td kszJ tdt t dt  ttd tftdt t dt  ttd tfks J t dt td  tt	t
f ¡ dt	d  dt
  ksŒJ ddt d dtd  d   } t | tdtf ¡ tdd ksÞJ tddd	}t |  d|¡tdtf ¡ }| |d¡ ¡ tdd ksJ t | tdtf ¡ }t | tddd
 f ¡ }|| tdd
 ¡ks&J d S )NrU   rV   rZ   rX   r   rs   ÚnzT)Únonzeror    )r   rI   rN   r[   r\   rJ   r$   r8   rK   rE   rF   r   r   r   rg   r4   )ÚeqrÑ   rf   ra   rb   rb   rc   Útest_telescopic_sums  s:   8ÿ0ÿ.
ÿ
ÿÿÿ
ÿ""ÿ8 $"rÔ   c                  C   sF   t td tddf} | t | j ksJ ttdd  ttdd  d S )NrV   rx   rU   c                   S   ó
   t ttS r   ©r   rK   rb   rb   rb   rc   r¿   3  ó   
 z&test_sum_reconstruct.<locals>.<lambda>c                   S   s   t ttdfS ©NrU   rÖ   rb   rb   rb   rc   r¿   4  ó    )r   rN   Úargsr>   rÁ   ©ra   rb   rb   rc   Útest_sum_reconstruct0  s   rÜ   c               	   C   sÊ   t ttfD ]]} | ttt tddf| ttt tt tf td¡ks&J | tt| ttddfdf | ttddft¡| tttdfksHJ | ttdtt	 f td¡| ttdt	d fksbJ qd S )Nru   rV   rU   rw   )
r   r   r*   rE   r   rF   rg   rG   rK   rL   )ÚFrb   rb   rc   Útest_limit_subs7  s   >.ÿ6ürÞ   c                      s  t ttt tdtftdtf   ttt¡t tt tdtftdtfks(J   ttt¡ ks4J tt fdd t ttt tdtftdtf   ttt¡ ksYJ t ttt tdtftdtf   ttt¡t tt tdtftdtfksJ d S )Nr   c                      s      tttt ¡S r   )rg   r\   rL   rK   rb   r   rb   rc   r¿   C  ó    z$test_function_subs.<locals>.<lambda>)	r   rK   r\   rL   r   rg   r>   rÁ   r   rb   rb   r   rc   Útest_function_subs?  s    0  4rà   c               	   C   s¶  t tdd  tddd} tttfD ]°}z7|tt|ttks!J |ttddf|ttks0J |tttf|ttks>J |dt|dtksJJ W n	 tyT   Y nw |ttddf|ttddfksgJ |ttdtf|ttdtfksyJ |ttddf|t	tddfksJ |ttddf|| | ddfksJ |dtdtf|dtdtfks¯J |dtdtf 
|dtdtf¡sÂJ qtttdtf tt¡tttdtfksÙJ d S )	Nc                   S   rÕ   r   rÖ   rb   rb   rb   rc   r¿   L  r×   ztest_equality.<locals>.<lambda>rK   T)ÚrealrU   rV   rZ   )r>   rÁ   r   r   r   r*   rK   rL   rE   rF   Údummy_eqrg   )ÚrrÝ   rb   rb   rc   Útest_equalityJ  s$   ÿ$$$$$(0rä   c                  C   s   t tttd  tddf ¡ td ksJ t tttd  tddfjdddttd  ks2J ttttd  tddfdttd  ksJJ t t t dtdtd fttd tftdtf} d|  ¡ ttd  td    	¡ ksvJ t t
tttt tf ¡ tdtt tk ttk fdksJ t t
tttt tf ¡ dks§J t tt
tt tt tf ¡ tttt tk ttk fdksÈJ t tt
tt tt tf ¡ tksÜJ t t t
tttddftddf ¡ dksóJ t t t
tttddftddf ¡ dtdtdtktdkfd ksJ t ttt t
tttdtf tddf ¡ tdtd td ks?J t ttt t
tttdtf tdtf ¡ t tttdtfkscJ tdd	d	d
}tdtdtkt|kfd}t |td|f ¡ t td|tkfdtd|fksJ td\}} tdtd|    tdtfttd|  d|  dkft td|   tdtfd	fksÆJ tdtd |   tdtftt| | dkft td |   tdtfd	fksïJ tdt| |   tdtftt| |t|dk| dkft t| |   tdtfd	fksJ tdt| |   t|tftt| d| td| dk| dkft t| |   t|tfd	fksQJ tdtd  tdtftdksdJ tdt|   tdtft t|   tdtfks~J d S )NrV   r   rZ   F©ÚdeeprU   rY   ÚNT©rP   Úpositivezq, sru   )r   rN   r*   rE   r[   r   rM   rL   rK   Úfactorr(   r   r#   r+   rJ   rI   r\   r   r)   )ra   ÚnmaxÚpwr   rb   rb   rc   Útest_Sum_doita  sZ   ,"ÿ00(>$B(.$
ÿ,
ÿ,
ÿ ÿÿ2ÿ*ÿþ"þ&8rí   c                   C   sš   t tttd  tddf ¡ dtd  d ksJ t tttd  tddfjdddttd d  ks8J ttttd  tddfdttd d  ksRJ d S )NrV   rU   rZ   rt   Frå   r   )r   rN   r*   rE   r[   r   rb   rb   rb   rc   Útest_Product_doit  s
   4"ÿ8rî   c                   C   sŒ   t tdtddftsJ tttddftu sJ tttdtftu s%J tdtddf ¡ dks3J t tdtdtfts@J tdtdtf ¡ dksNJ ttdd  ttdd  d S )Nr   rV   c                   S   ó   t dS rØ   ©r   rb   rb   rb   rc   r¿     ó    z$test_Sum_interface.<locals>.<lambda>c                   S   rï   rØ   )r   rb   rb   rb   rc   r¿     rñ   )r{   r   rN   r   r   r[   r>   rÁ   rb   rb   rb   rc   Útest_Sum_interface  s   rò   c                  C   s  t ttddf t¡dksJ t tt tddf t¡dks J t tt tddf t¡t ttddfks7J t tt tdtf} |  t¡t| tksMJ t tt tddftddf t¡ ¡ t tt tddftddf ¡  t¡  krzdks}J  J t ttddf t¡dksJ d S )NrU   rV   r   rZ   rX   r€   )r   rK   ÚdiffrL   rE   r   r[   ©r`   rb   rb   rc   Ú	test_diff  s   ".$$ÿÿ"rõ   c                  C   sÌ  t ttt tt tdtfdtt ksJ tdt tdt   tdt  tdtfttks4J t tdt tdt d   tdt d  tdtft t	t td d  td d  kseJ tdtd d  tdtft
d	d
td ks~J tdtd  tdtftd d ksJ ttt t tt df} | js€J | jd jd dtddt  d   ksºJ | jd jd tdt dk ksÌJ tdddd}tt|ttd|fd| ksäJ d S )NrU   rx   rV   r   rZ   r   rX   éx   é÷ÿÿÿr   rw   éZ   rN   Trè   )r4   r   rK   rN   r©   r   r   r$   r   r%   r   r)   r   Úis_PiecewiserÚ   rµ   r   r   rI   )ra   rJ   rb   rb   rc   Útest_hypersumª  s"   08ÿÿ$ÿ2(
,$&rú   c                   C   s$   t dtt tdtftksJ d S rŸ   )r   r   rI   r   r   rb   rb   rb   rc   Útest_issue_4170Œ  s   $rû   c                  C   sž   ddl m} m}m} tddd}tttfD ]D}|ttddfj	du s$J |tt
 tddfj	du s3J ||t tdd	fj	du sBJ || |t|t
 t tdd	fj	du sYJ qd S )
Nr   )ÚNOrÝ   ÚFdrJ   F©ÚcommutativerU   Tr   rV   )Úsympy.physics.secondquantrü   rÝ   rý   r   r   r   r*   rM   Úis_commutativerL   rK   )rü   rÝ   rý   rJ   r\   rb   rb   rc   Útest_is_commutativeÀ  s   0ûr  c                  C   sz   t tfD ]} | dtddfjdu sJ | ttddfjd u s J qt dtddfjdu s.J tdtddfjdu s;J d S )Nr   rU   TF)r   r   rK   Úis_zero©Úfuncrb   rb   rc   Útest_is_zeroË  s
   r  c                   C   s  t dtddfjdu sJ t dtdtfjdu sJ t dtttfjdu s'J t ttddfjdu s4J t ttddfjdu sAJ t ttddfjdu sNJ t tt tddftddfjdu saJ tdtddfjdu snJ tdtdtfjdu s{J tdtttfjdu sJ tdtttfjdu sJ tttdtfjdu s¢J tttddfjdu s¯J tttddfjdu sŒJ tttddfjdu sÉJ d S )NrU   TFr   rV   rZ   )r   rK   Ú	is_numberrL   rM   r   rb   rb   rb   rc   Útest_is_numberÔ  s   &r  c                  C   sp  t tfD ]Ë} | dtddfjt ksJ | dtdtfjthks"J | dtdtfjthks0J | ttddfjt ks>J | ttdtfjthksLJ | ttdtfjtthks[J | ttddfjthksiJ | ttddfjthkswJ | ttdtfjtthksJ | ttdtftddfjt ksJ | ttdtftdtfjthksªJ | ttdtftdtfjthksŒJ | ttdtftdtfjtthksÏJ qt dtdtfjthksÞJ tdtdtfjthksìJ | ttttddfjt ksþJ | ttttdtfjthksJ | ttttdtfjthks$J | tttdtfjtthks6J d S )NrU   rV   r   )r   r   rK   Úfree_symbolsÚsetrL   rM   r\   r  rb   rb   rc   Útest_free_symbolsé  s(   $$$($&&(r  c                  C   sì   t ddd\} }t| |t  tddf}| ¡  ¡ | ¡  ¡ ks"J | ¡  ¡ | ¡  ¡ ks0J | ¡  ¡ | ¡  ¡ ks>J t|t |  tddf}| ¡  ¡ | ¡  ¡ ksXJ | ¡  ¡ | ¡  ¡ ksfJ | ¡  ¡ | ¡  ¡ kstJ d S )NúA BFrþ   rU   rZ   )r   r   rN   Úadjointr[   Ú	conjugateÚ	transpose)r   r   Úprb   rb   rc   Útest_conjugate_transpose  s    r  c                  C   s  t ddd\} }t dddd}t| |t  td|f}| ¡ | t|t|df|||d   d| d  df ks;J t|t |  td|f}| ¡ t|t|df|||d   d| d  df|  ksgJ t|t |  |t  td|f}| ¡ |ksJ d S )	Nr  Frþ   ÚMTrè   rU   rx   )r   r   rN   r[   r#   r   )r   r   r  r  rb   rb   rc   Útest_noncommutativity_honoured  s   ÿÿ
ÿ r  c                   C   sT   t tdt d tdt  tdtftu sJ t dt d tdtftu s(J d S )NrV   rU   r   )r   r   rI   r   rb   rb   rb   rc   Útest_issue_4171   s   0$r  c                   C   s*   t ttdtfjdtdiddksJ d S )NrU   rV   )rg   )r   rK   rN   rb   rb   rb   rc   Útest_issue_6273%  ó   *r  c                   C   st   t ttddf ¡ dksJ tt ttddfdksJ t ttddf ¡ dks*J tt ttddfdks8J d S )NrU   r   Ú0rs   rX   iâÿÿÿz-30.0000000000000)r   rK   r[   r   rN   rb   rb   rb   rc   Útest_issue_6274)  s    r  c               	   C   sŽ  t d\} }}dd }|tt|  tttf| ttft| tttf| ttf t| td  tttf| ttfks9J |tttttfttttd tf tttttfksWJ |ttttd tftttttf tttttfksuJ |ttttd tfttd tttf tttttftdtttf ksJ |tttddfd dtttddf  dtttddf  dtttddf dtttddf  ksÓJ |dttd	 tttf tttttf ttdt d  tttfksùJ |ttd tttfd dtttttf  d|  tttttf  d d|  tttttf dttd t tttf  d ks>J |tttttfd ttttd t	f dttttt	f ksaJ |tt|ttft| |ttf tt|td t	f ttd|tt	f | td|ttf  ksJ |tt|ttftt|td t	f t| |ttf ttd|tt	f | td|ttf  ksÇJ |tt|ttfd	tt|td t	f  |tt|ttftt|td t	f tt|td t	f ksþJ |tttttfttd	 tttf tttttfttd	 tttf ks'J |tt|ttft| |ttf tt|ttf t|  t td|ttf ksRJ |tt|ttft| |ttf tt|ttf t||ttf t|  t | td|ttf ksJ |tt|  tttfd|   tttttfd ks€J |tt
t|  t tttf| t  tt
ttttfksÅJ |tt	t tttft	tttttf  dksàJ |t	tttttf|   t	| tttttf  ksýJ |t	tttttf| tttttf   t	| d  tttttf ks$J |ttt	t tttf| ttft	tttttf| ttf ksGJ |td|  tt	t tttf | ttft	td|  | ttf tttttf kstJ |td| tt	| tttf | ttft	| |d  tdtttf td| ttf ks¥J |ttt| tttd ftt| ttt	f |ttfttdttt	f t||ttf ksØJ d S )
Nzy, t, vc                 S   s   t | ddS )NF)r[   r3   rô   rb   rb   rc   r¿   3  ó    z#test_simplify_sum.<locals>.<lambda>rU   r   rZ   rw   r   rV   )r   r   rK   rN   rJ   rE   rI   rM   rF   rG   r\   rH   )rL   Útrf   Ú	_simplifyrb   rb   rc   Útest_simplify_sum0  sª   ÿÿ&ÿ&ÿ*ÿ(ÿ&ÿ*ÿ,ÿÿ6
þ*
ÿ ÿ&
ÿ$ÿ&
ÿ*:
ÿ&"
ÿ2
ÿ0ÿ
ÿ
ÿ&
ÿ6:*
ÿ"
ÿ*&
ÿ*.
ÿÿÿ"þr  c                     sD  t ddd\ } }tttt f ttd t¡ttd ttd  d fks(J ttd tt f ttd ¡ttd d ttd  d fksJJ ttd tt f tt t¡tt d t  t fksiJ tttt f tt d ¡tt d t  d t d fksJ ttt tt ftttf ttd t¡ttd t ttd  d ftttfks¶J tttt f tt|  ¡t|  t tt|   |  fksÕJ tttt f tt |  ¡t|  t t  |  t |  fks÷J tttt f t|t | ¡t| | |  | t| fksJ t	t
 fdd d S )Nzb, v, wTrO   rU   rV   c                      s   t ttt f tdt ¡S ©NrV   )r   rK   rE   Úchange_indexrb   ©rF   rb   rc   r¿   w  rÀ   z#test_change_index.<locals>.<lambda>)r   r   rK   rE   r  rL   rG   rH   rM   r>   rÁ   )rf   rm   rb   r  rc   Útest_change_indexd  s4   ÿÿÿ ÿ(&ÿÿ ÿ
ÿr   c                  C   sH  t ddd\} }}}}tt| tt| f|||f d¡tt| |||ftt| fks,J tttt| ft||f d¡ttt||ftt| fksIJ tt| | tt| f|ttf|||f dd¡tt| | |ttf|||ftt| fkswJ tt| | tt| f|||f|ttf ddd¡tt| | tt| f|ttf|||fksŠJ tt| | tt| f|||f|ttf t|f||ft|f¡tt| | tt| f|ttf|||fksÛJ tt| tt| f|||f tdf¡tt| |||ftt| fksþJ tt| tt| f|||f |tf¡tt| |||ftt| fks"J d S )	Nzb, y, c, d, zTrO   )r   rU   )rV   r   rv   )r   rV   rU   )r   r   rK   rE   ÚreorderrJ   rN   )rF   rL   rG   rH   rM   rb   rb   rc   Útest_reorderz  s8    ÿÿ(ÿ&ÿ(ÿ&ÿ(ÿ&ÿ$ÿ$ÿr"  c                   C   sÜ  t ttddf d¡t t tddfksJ t tt tddftddf dd¡t tt tddftddfks8J t ttdd	f d¡t t tddfksNJ t ttddf d¡t t tddfksdJ t ttdtf d¡t t ttd dfks|J t tttdf d¡t t tdtd fksJ t tttd td f d¡t t ttd tfks°J t tttd td	 f d¡t t ttd tfksÌJ t tttd td f d¡t t ttd	 tfksèJ t ttttf d¡t t ttd td fksJ t ttttf t¡t t ttd td fksJ t tt tttftd	df td¡t tt ttd td ftddfksEJ t tt tttftd	df tt¡t tt ttd td ftddfkslJ d S )
Nr   rZ   rw   rx   rU   rX   r   r   rV   )r   rK   Úreverse_orderrL   rE   rF   rb   rb   rb   rc   Útest_reverse_order  s2   ,"ÿ,,00ÿÿÿ66""
ÿ""ÿr$  c                   C   s8   t dd tddD ttt t tddfksJ d S )Nc                 s   s    | ]	}t | | V  qd S r   ©rK   )Ú.0rN   rb   rb   rc   Ú	<genexpr>€  s    z"test_issue_7097.<locals>.<genexpr>rU   i  i  )Úsumr   r   rK   rN   rb   rb   rb   rc   Útest_issue_7097£  s   8r)  c                   C   sF  t dt tdtf ¡ dt ttdtf ksJ t tt tdtf ¡ tt ttdtf ks0J t dt t tdtf ¡ dt t ttdtf ksLJ t dt t tdtf ¡ dt t ttdtf kshJ t td tdtf ¡ t ttdtft dtdtf ksJ t tttd   tdtf ¡ t ttdtft ttd  tdtf ks¬J t ttd  td  tdtf ¡ t ttt  tdtft tt tt  tdtf ksÚJ t ttd  td  tdtfjddt tttd   tdtft ttd  tdtf ksJ t tt ttd   tddf ¡ t tt tddft ttd  tddf ks6J t tt tt  tddft ttt  tddfjd	dksWJ t ttt  tddft ttt  tddfjddksvJ t ddttd    tddf tdfg¡t dddtd    tddfksJ t tt tdtftdtf tdfg¡t tt tdtftddfksÄJ t ttdd
f ttd fg¡t ttdd
fksßJ t dt tdd
f tdt d fg¡t dt tdd
fks J t dt tdd
f tdt d fg¡t dt tdd
fks!J d S )Nrw   rU   rV   rx   F)Ú	power_expr   rZ   Trs   )	r   rK   rL   rê   rE   rz   rN   r   rg   rb   rb   rb   rc   Útest_factor_expand_subs§  s4   0088<L"2ÿ&2
ÿ"*
ÿ
ÿ
ÿRJ6BFr+  c                   C   s   t ttd tttddf ¡ tdtdtd td ks"J tttttd tdtftttttdtfttd tdtfksHJ d S )NrV   rU   rZ   é0   r   )r   r   rK   r\   r[   r   rL   rb   rb   rb   rc   Útest_distribution_over_equalityÄ  s   D(ÿr-  c                  C   sò   t dddd\} }t ddd}t| |||  d| | |   }t|| |d| f}| ¡  ¡ }t| | tfd| |  t|||  t| | d| |  |d| f df}|| t|t|d  dk¡kshJ | ¡ | t|t	j
k¡kswJ d S )Nzn kT©ré   rP   r  ©ré   rU   r   )r   r   r   r[   r4   r#   rK   rg   r   r   r|   )rN   rI   r  Úbinomial_distra   ÚresÚansrb   rb   rc   Útest_issue_2787Ê  s   "
8ÿþ$"r3  c                   C   s    t dt tdtftu sJ d S ©NrU   rV   )r   rN   r   rb   rb   rb   rc   Útest_issue_4668Ú  rË   r5  c                  C   s   t ddgtdgg} t| tddf ¡ }|t ddgddggks"J |jtks)J tddgtdgg} t| tddf ¡ }|jtksDJ d S )Nr   rU   rZ   rw   r   )r@   rN   r   r[   Ú	__class__rB   rA   rC   )r   r   rb   rb   rc   Útest_matrix_sumÞ  s   r7  c                  C   sx   t d} tg d¢g d¢g d¢g}t||  | ddf ¡ tg d¢g d¢g d¢gks,J t||  | ddf|ks:J d S )NrN   ©r   rU   r   ©rx   r   r   )r   r   r   rU   rw   )r   r@   r   r[   r   )rN   r   rb   rb   rc   Útest_failing_matrix_sumë  s   ÿ r:  c                      sò  t dtdtdtddf ¡ tfddtdD ks%J tddf ¡ tfd	dtdD ks?J t d
ddtd f ¡ tfddtdD ksbJ td f ¡ tfddtdD ksJ tdddt	d t   ¡ t fddtddD ks¢J t   ¡ t fddtddD ks»J 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 )NrS   rQ   rã   r   rZ   c                    ó   g | ]	}   |i¡qS rb   ©Úxreplace©r&  rT   ©rS   rã   rb   rc   Ú
<listcomp>ø  ó    z(test_indexed_idx_sum.<locals>.<listcomp>rw   c                    r;  rb   r<  r>  r?  rb   rc   r@  ù  rA  rT   TrO   rV   c                    ó   g | ]}   | i¡qS rb   r<  ©r&  rI   ©rS   rT   rã   rb   rc   r@  ü  ó    c                    rB  rb   r<  rC  rD  rb   rc   r@  ý  rE  rI   ©rU   rZ   )r   r   c                    ó   g | ]	} t |d  qS ©rF  ©r5   r>  ©r   rb   rc   r@    rA  rU   c                    rG  rH  rI  r>  rJ  rb   rc   r@    rA  c                      ó   t   ddfS ©NrU   rw   rð   rb   ©r   rI   rb   rc   r¿     rß   z&test_indexed_idx_sum.<locals>.<lambda>c                      rK  ©Nr   rZ   rð   rb   rM  rb   rc   r¿     rß   c                      ó   t   dtfS r  )r   r   rb   rM  rb   rc   r¿     rß   c                      rK  rL  ©r   rb   rM  rb   rc   r¿     rß   c                      rK  rN  rP  rb   rM  rb   rc   r¿   	  rß   c                      rO  r  )r   r   rb   rM  rb   rc   r¿   
  rß   )r   r5   r6   r   r[   r(  r   r   r   r7   r>   rÁ   rb   rb   )r   rS   rT   rI   rã   rc   Útest_indexed_idx_sumõ  s"   
44::22rQ  c                  C   s>  t tdt d  tdtf ¡ tju sJ t ttdt  tdtf ¡ tju s*J t ddt d  tt  tdtf ¡ tju sCJ t dt t tdtf ¡ tju sVJ t dt tdtf ¡ tju sgJ t tdt tdtf ¡ tju szJ t tdt	 t	dtftdt	 d t	dtf tdtf ¡ tj
u sJ t dt t tdtf ¡ tju s°J t dtd d  tdtf ¡ tj
u sÅJ t dttd	d  tdtf ¡ tj
u sÛJ t dtttd   tdtf ¡ tj
u sòJ t dtttt  tdtf ¡ tju s
J t ttttd  tdtf ¡ tj
u s"J t tdttd
t tdtf ¡ tj
u s:J t tdttdt tdttt  tdtf ¡ tju s[J t dttt  tdtf ¡ tju sqJ t dtd tt  tdtf ¡ tj
u sJ t dttt  tdtf ¡ tju sJ t dttt tttd   tdtf ¡ tj
u sœJ t dtttd   tdtf ¡ tj
u sÕJ t td td ttd   tdtf ¡ tj
u sñJ t dttt ttt  tdtf ¡ tju sJ t td tttd   tdtf ¡ tju s'J t dtd tt  tdtf ¡ tj
u s?J t dtttt ttt  tdtf ¡ tju s]J t ttttttd   tdtf ¡ tj
u syJ t tttd  tdtf ¡ tj
u sJ t dtd  td d  tdtf ¡ tj
u s©J t dtd d  tt df ¡ tj
u sÀJ t dtd  tt df ¡ tju sÕJ t dtd d  tt df ¡ tj
u sìJ t dtd d  tt df ¡ tj
u sJ t dtd d  tt tf ¡ tj
u sJ ttd tdkftd tdkf} t | tdtf ¡ tju s;J t | tt tf ¡ tju sLJ t | tddf ¡ tj
u s\J t tttd  tdtf ¡ tj
u srJ t tt td  tdtf ¡ tj
u sJ td td d	t  d  tt  }t |tdtf ¡ tj
u s¬J t |tddf ¡ tj
u sŒJ t dtd  tdtf ¡ tj
u sÐJ t dttj  tdtf ¡ tju såJ t dt ddt d   tdtf ¡ tj
u sÿJ t dtd  dtd   dt  td
tf ¡ tj
u sJ d S )NrV   rU   rX   rZ   ru   rx   rw   iôÿÿÿr   r   r    éûÿÿÿ)r   rN   r   Úis_convergentr   Úfalser   r   r   rJ   Útruer   r"   r   r#   rK   r   r|   )r\   rÓ   rb   rb   rc   Útest_is_convergent  s\   **2&"&F&*,.000B,0,<08840<8,4.*..." " ,.&  (*4@rV  c                   C   sP   t dt tdtf ¡ tju sJ t dt td  tdtf ¡ tju s&J d S )Nrx   rU   rV   )r   rN   r   Úis_absolutely_convergentr   rT  rU  rb   rb   rb   rc   Útest_is_absolutely_convergentZ  s   ".rX  c                   C   sT   t ttt tdtf ¡ tju sJ t tdt t tdtf ¡ tju s(J d S r4  )r   r%   rN   r   rS  r   rU  rb   rb   rb   rc   Útest_convergent_failing_  s   &.rY  c                  C   sr   t ddd\} }}t d\}}t| | | | d|f}| |¡}t|ts(J |t| | | d|fks7J d S )Nzi k mTrO   zz_i q_irU   )r   r   ró   r{   )rS   rI   rJ   Úz_iÚq_iÚa_kÚb_krb   rb   rc   Útest_issue_6966f  s   
"r^  c                  C   s   t dtd  t tddf} dt t d|  td  tddf }| ¡ dtd  t ttddf t td tddf ks>J d S )NrV   rU   rZ   rt   r   )r   rL   rK   rê   )Úcxr`   rb   rb   rc   Útest_issue_10156o  s
   $.ÿr`  c                   C   sD   t t td d tdd   tt tdtf ¡ tju s J d S ©NrZ   rU   )r   rN   r   r   r   rS  rU  rb   rb   rb   rc   Útest_issue_10973v  s   Drb  c                	   C   sü  t ttt  tdtd f ¡ ttd d td  ttdftt tt  ttt   ttt   t td d  dfks@J t tt tdtd f ¡ ttttdftt  d t d  dfksfJ t ttt t t  tdtd f ¡ tttd  d ttttd  fttd  tt t ttt  t  ttt   tt ttt  t  ttt    tt ttt  t  ttt    tt ttt  t  ttt    tttt  t  ttt    t  tt t t d  dfksüJ d S )Nr   rU   rV   T)r   rI   rK   rN   r[   r#   r   rL   rb   rb   rb   rc   Útest_issue_14129z  sb   ,
ÿ
ÿÿ
ÿÿÿ*ÿ&"0"ÿÿÿ
ÿÿÿþýýÿÿÿýüÿÿrc  c                   C   s   t dt tt tdtf ¡ tju sJ t ddt  t tdtf ¡ tju s*J t dt dt  tdtf ¡ tju s?J d S )Nrx   rU   rV   ru   r   )r   rN   r"   r   rW  r   rT  rS  rb   rb   rb   rc   Útest_issue_14112  s   **.rd  c                   C   s`   t tttd  tdtf ¡ tju sJ t tttt td  tdtf ¡ tju s.J d S ra  )r   r%   rN   r   rS  r   rU  r   rb   rb   rb   rc   Ú$test_sin_times_absolutely_convergent  s   *6re  c                   C   s.   t dttt tdtf ¡ tju sJ d S )NrU   é   )r   r   rN   r   rS  r   rT  rb   rb   rb   rc   Útest_issue_14111  s   .rg  c                   C   s2   t ttttt tdtf ¡ tju sJ d S )Nrf  )r   r%   rN   r   r   rS  r   rT  rb   rb   rb   rc   Útest_issue_14484  ó   2rh  c                  C   s¢  t ddd\} }t d\}}}t||   ||  | d|f ¡ td|||   ||  |   | d|f ¡   kr]t|d td| df|| d   d dd|   df||  ks`J  J t|||   |||    d | d|f ¡ t|d t|d df|d| d   d dd|d    df|| d  ksJ t| |||   |||     ||  | d|f ¡ }| t¡rÀJ | |d|d	|d
i¡dksÏJ d S )Nzi nTrO   za b cr   rU   ru   rV   rZ   rX   éz   )r   r   r[   r#   r   Úhasrg   )rS   rN   rE   rF   rG   ra   rb   rb   rc   Útest_issue_14640  s.   ""ÿÿ"þþÿ,(þ

þ4"rl  c                  C   s¢   t tttttt  tdtf ¡  t¡} | t td  ttd  t	td d ttd  tttd   ks<J |  
¡ tttt	td d  ksOJ d S )Nr   rU   rV   )r   r   rN   rI   r   r[   Úrewriter&   r   r'   r4   rÛ   rb   rb   rc   Útest_issue_15943®  s
   ,4
ÿ*rn  c                  C   s`  t ttttf d¡rJ t ttttf t ttttftddf¡r$J t ttttf t ttttf¡r7J t ttttf t ttttf¡sJJ t } t ttt| f t ttttft¡saJ t ttt| f t ttttf¡rtJ t ttttf t ttttf¡sJ t ttt| f t ttttft¡sJ t ttt| f t ttttf¡r®J d S r4  )r   rK   rE   rF   râ   rG   r   rL   )rH   rb   rb   rc   Útest_Sum_dummy_eqµ  s   .&&(&&(*ro  c                   C   s@   t tt t tt tf ¡ ttt t tt tfksJ d S r   )r   rK   rL   r   r[   r   rb   rb   rb   rc   Útest_issue_15852Â  s   @rp  c                      sÒ   t ttttf tt fdd t ttttftddf tt fdd t ttttftddf tt fdd t ttttftddf tt fdd t tt tttftddf tt fdd d S )	Nc                      s      ttd t¡S r  )r  rK   rL   rb   r   rb   rc   r¿   È  ó    z!test_exceptions.<locals>.<lambda>rU   rw   c                      s
      t¡S r   )ÚindexrK   rb   r   rb   rc   r¿   Ê  r×   c                      s      tg¡S r   )r!  rK   rb   r   rb   rc   r¿   Ì  r  c                      s      dd¡S rÉ   )Úreorder_limitrb   r   rb   rc   r¿   Î  r  c                      s      ¡ S r   )rS  rb   r   rb   rc   r¿   Ð  rñ   )	r   rK   rE   rF   r>   rÁ   rL   r;   ÚNotImplementedErrorrb   rb   r   rc   Útest_exceptionsÆ  s   ru  c                  C   sÌ  t dddd} t ddd}ttfD ]H}||||  | fjd u s!J ||||  | fjd u s/J ||||  | fjd u s=J ||||  | fjd u sKJ ||||  | fjdu sYJ qt dddd}ttfD ]C}|||d| fjd u stJ |||d| fjd u sJ |||d| fjdu sJ |||d| fjdu sJ |||d| fjdu sšJ qet dddd}ttfD ]C}|||d	| fjdu sÃJ |||d	| fjdu sÐJ |||d	| fjdu sÝJ |||d	| fjdu sêJ |||d	| fjdu s÷J qŽt dddd
}t|||  dfjdu sJ t|||  dfjdu sJ t|||  dfjdu s,J t|||  dfjdu s;J t|||  dfjdu sJJ t|||  dfjd u sYJ t|||  dfjd u shJ t|||  dfjd u swJ t|||  dfjd u sJ t|||  dfjdu sJ t dddd}t|||  dfjdu s«J t|||  dfjdu sºJ t|||  dfjd u sÉJ t|||  dfjd u sØJ t|||  dfjdu sçJ t|||  dfjd u söJ t|||  dfjd u sJ t|||  dfjd u sJ t|||  dfjd u s#J t|||  dfjdu s2J t ddd}td|dtfjd u sFJ td|dtfjd u sTJ td|dtfjd u sbJ td|dtfjd u spJ td|dtfjd u s~J td|dtfjd u sJ td|dtfjd u sJ td|dtfjdu sšJ td|dtfjd u s¶J td|dtfjd u sÄJ tdt	| | d	 fjdu sÔJ tdt	| | d	 fjdu säJ d S )Nr  Trè   rJ   rO   )rP   Únonnegativer   FrU   )rP   Únegativerx   )rP   ÚnonpositiverV   )
r   r   r   Úis_positiveÚis_nonpositiveÚis_negativeÚis_nonnegativeÚ	is_finiter   rK   )r  rJ   r  rb   rb   rc   Útest_sumproducts_assumptionsÓ  sr    $r~  c                  C   sP  t dddd} t ddd}t ddd}tt|| |d| f ¡ t|t| |d| fks/J ttt|| |d| f ¡ t|| |d| fksKJ tt|| |d| f t¡ ¡ t|t| |d| fksjJ ttt|| |d| f t¡ ¡ t|| |d| fksJ t d	dd}td
ddd\}}tddd\}}tt|| ||  |d|f|d|f ¡ t|t| |t|  |d|f|d|fksÎJ t dddd}t|| |d| f}| t¡}| t¡sëJ |ttt|| |d| fksýJ | ¡ |ksJ | 	| d¡}	|	 t¡}
|
 t¡sJ |
 
¡  ¡ |	 
¡ ks&J d S )Nr  Trè   rK   r/  rJ   )rv  r   rN   zi,jr.  zx,yrU   )rv  rP   rX   )r   r   r   rz   r   r   rm  r   rk  rg   r[   )r  rK   rJ   rN   rS   rT   rL   ra   Ús_as_productÚs5Ús5_as_productrb   rb   rc   Útest_expand_with_assumptions  s.   88>>**ÿ
$
r  c                  C   sÚ   t d} td| ddfjdu sJ td| dtfjdu sJ t d}td| d|fjd u s/J t ddd}td| d|fjdu sBJ t ddd} t d}td| d|fjdu sYJ td| d|ftt tfjdu skJ d S )NrK   rU   rt   TFr  r/  )r   r   Úhas_finite_limitsr   rL   )rK   r  rb   rb   rc   Útest_has_finite_limits2  s   (r  c                  C   sX  t dtddfjdu sJ t dtddfjdu sJ t dtddfjdu s'J t dtddfjdu s4J t dtdtfjdu sAJ td} t dtd| fjd u sRJ tdddd} t dtd| fjdu sfJ t dtd| ftt tfjdu sxJ tddd	} t dtd| fjdu sJ t dtd| ftt tfjdu sJ t dtttfjd u sªJ d S )
NrU   Frt   r÷   Tr   r  r.  ©rw  )r   rK   Úhas_reversed_limitsr   r   rL   )r  rb   rb   rc   Útest_has_reversed_limits@  s   $$r  c                   C   sì   t dtddfjdu sJ t dtddfjdu sJ t dtddfjdu s'J t dtddfjdu s4J t dtttd fjdu sCJ t dtddftt tfjdu sUJ t dtt tftddfjdu sgJ t dtttfjdu stJ d S )	NrU   Frt   r÷   r   TrZ   rV   )r   rK   Úhas_empty_sequencerL   r   rb   rb   rb   rc   Útest_has_empty_sequenceR  s   $$r  c                   C   s€   t tt tt tftddf ¡ dksJ t tt tddftt tf ¡ dks*J tttt tftddf ¡ dks=J tttddftt tf ¡ dksPJ d S rŸ   )r   rK   rL   r   r[   r   rb   rb   rb   rc   Útest_empty_sequence]  s   **&*r  c                  C   s   t ddd} tdddd\}}tt|| t|||   d|   | d|f}| ¡  ¡ tt| d t|d	  t|d d	  t||d  d	  ksMJ d S )
NrI   TrO   zn, mrè   rx   r   rV   rU   )	r   r   r   r   r[   r4   r$   r   r&   )rI   rN   rJ   ra   rb   rb   rc   Útest_issue_8016d  s   ,
>ÿr  c                   C   s*   t tjttd  tdtf ¡ sJ d S ©NrV   rU   )r   r   r|   r!   rN   r   rS  rb   rb   rb   rc   Útest_issue_14313l  r  r  c                   C   s    dt dtddf dksJ d S rŸ   rÖ   rb   rb   rb   rc   Útest_issue_14563p  s    r  c                   C   s2   t dt ttd  tdtf ¡ tju sJ d S )NrX   rU   )r   rN   r&   r   rS  r   rU  rb   rb   rb   rc   Útest_issue_16735u  ri  r  c                   C   sB   t tddt tdt tt tdtf t¡ ¡ dksJ d S )NrU   rs   r   )r   r   rN   r   r   r   rm  r[   rb   rb   rb   rc   Útest_issue_14871y  s   Br  c               	   C   s   t ddd} t d}|t||  | dtf }| ¡  ¡ }|td|d  |dk|dk @ f|t||  | dtf dfks?J || ¡ |ksGJ d S )NrN   TrO   rK   rx   rU   )r   r   r   r[   r4   r#   )rN   rK   ra   Ússimprb   rb   rc   Útest_issue_17165}  s   ÿÿr  c                   C   s2   t ttttd  tdtf ¡ tju sJ d S r  )r   r   rN   r   rS  r   rU  rb   rb   rb   rc   Útest_issue_19379  ri  r  c                   C   sL   t ttttt  tdtf ¡ t ttttt  tdtfks$J d S rØ   )r   r   rK   r%   rN   rJ   r[   rb   rb   rb   rc   Útest_issue_20777  s   Lr  c                     s€  t dddlm  t dd} | jsJ | jsJ | js!J | js&J t dd} | js3J | js8J | js=J | j	d u sDJ t dd} | jsQJ | jsVJ | jd u s]J | jd u sdJ | j	d u skJ t dd	} | jsxJ | jd u sJ | jd u sJ | jd u sJ t d
ddd}t d|} | js¡J | jsŠJ | js«J t d
ddd}t |dd} | d u sÀJ t dddt
t fdd d S )NrK   r   )ÚTuplerX   rU   rt   rR  r   r   rç   Trè   rV   rw   r  c                      s   t  ddS )NrU   rX   )r9   rb   ©r  rK   rb   rc   r¿   º  ó    z@test__dummy_with_inherited_properties_concrete.<locals>.<lambda>)r   Úsympy.core.containersr  r9   Úis_realÚ
is_integerr|  Úis_extended_nonnegativery  Úis_oddr>   r<   )rH   rç   rb   r  rc   Ú.test__dummy_with_inherited_properties_concrete  sF   












ÿr  c                  C   s¶  t ddd} tddd}t| | |ddf ¡ td|  | d  ks$J t| |ddf ¡ d|  ks4J t||  |ddf ¡ d|  ksFJ td|dgg d¢g d	¢g}tg d
¢g d¢g d¢gd|   }t| | |ddf ¡ |ksuJ | tg d
¢g d¢g d¢g }t| | |ddf ¡ |ksJ | d tg d¢g d¢g d¢g | d tg d¢g d¢g d¢g  | tg d¢g d¢g d	¢g  }t| | ||  |ddf ¡ |ksÙJ d S )Nr   rZ   rN   TrO   r   rV   r9  )r   r   rV   )r   r   r   )r   r   r   )r   r   r   rw   )ru   r   r   )r   ru   r   )r   r   rw   )r   r÷   r   )rZ   r   r   r8  rU   )r-   r   r   r[   r.   r@   )r   rN   r   r2  rb   rb   rc   Ú,test_matrixsymbol_summation_numerical_limitsœ  s    0 $"    ÿþ,r  c                  C   s>   t d} ttdd|    | tjdf}| ¡ tjksJ d S )NrS   rV   )r   r   r!   r   ÚOner[   )rS   rE   rb   rb   rc   Útest_issue_21651Ñ  s    r   c                  C   s   t dddd} tddd}t ddd}t||d| f ¡ | d	 | ks%J t|| |d| f ¡ | d
 d
 | d
  | ks?J d S )Nrç   Trè   r   rZ   rN   rO   r   rU   rV   )r   r-   r   r[   )rç   r   rN   rb   rb   rc   Ú+test_matrixsymbol_summation_symbolic_limits×  s
   $8r¡  c                  C   sb  t d} td| d d  | t tfttt ksJ td| d  | tdtftd d ks1J td| d d  | t tftdtdt   ksLJ td| d d d  | t tf ¡ td  ttd  ttt  td  dttd   ks~J t| d | d d d  | t tf ¡ td  ttt  td ttd   dttd   ks²J tdd| d  d  | t tfd	ksÇJ t| d | d tdd  d  | t tftd d ksæJ tdd| d  d d  | t tftd d
 ksJ td| tdd  d d  | t tfttt ks J td| d  | tdtftd d ks7J td| d  | tdtftd d ksNJ td| d  | d d  | tdtft t d ddt   dd
tdt     d ksJ td| d d  | td	tftdd tdtt   ks J td| d d  | tdtftd d tdtt   ksÂJ td| d d  | tdtfdtdtt   ksßJ td|  | d d  | t tfttt ksùJ td|  | d d  | td	tftdtt  tdd  ksJ td|  | d d  | tdtftd d tdtt   ks@J td|  | d d  | tdtftdtt  ks]J td| d d|   d  | tdtftdd tdtt   ksJ td| d d|   d  | tdtftdd tdtt   ks§J td| d d|   d  | tdtftdd tdtt   ksÌJ td| d d|   d  | tdtftdd tdtt   ksñJ td|  d | d d|   d  | tdtftdd tdtt   ksJ td|  d | d d|   d  | tdtftdd tdtt   ksCJ td| d  | tdtfdtd d  ks\J td| d  | tdtftd d td d  kszJ td|  | d  | tdtftd  d ksJ td|  | d  | tdtfdtd d  ks¯J d S )NrK   rU   rV   r   i±  rt   rZ   rw   r   r   rø   r¡   r¢   rx   rX   ru   )r   r:   r   r   r    r   Úcancelr   r%  rb   rb   rc   Útest_summation_by_residuesá  sd   .,6$8ÿ(8ÿ*>8<..&2
ÿ
ÿ
ÿ
ÿ 

ÿ"
ÿ"
ÿ"
ÿJJJJRR2<4:r£  c                  C   sb   t d} t| d | d d  | tdtfsJ td| d | d  d  | t tfdks/J d S )NrK   rV   rw   rU   r   )r   r:   r   r   r%  rb   rb   rc   Ú"test_summation_by_residues_failing  s   (2r€  c                     s  ddl m ttfdd ttfdd ttdk tdk ¡ ttfdd ttfd	d tdd
ftdd
fgdfksHJ ttj	t
sPJ t  ttdk ttdtfkscJ  ttdk  ttt dfksuJ  ttddf}  tttdktdk | ksJ  ttt
 dd¡f| ksJ tt fdd ttfD ]tddd
d
t d tddf}} tt|f| ksÉJ tt|jf| ksÕJ tdtd
d
t d tdtf}} tt|f| ksóJ tt|jf| ksÿJ tt dd
dd
t  tdtf}} tt|f| ksJ tt|jf| ks,J ttfdd ttfdd ttfdd q©d S )Nr   ©Ú_process_limitsc                      ó    t dddS )NrZ   T©Údiscreter/   rb   r¥  rb   rc   r¿   "  ó    ÿz%test_process_limits.<locals>.<lambda>c                      r§  )NrZ   Frš  r/   rb   r¥  rb   rc   r¿   $  rª  rU   rZ   c                      ó    ddS )NTrš  rb   rb   ©rŠ  Úunionrb   rc   r¿   *  ó    ÿc                      r«  )NFrš  rb   rb   r¬  rb   rc   r¿   ,  r®  rV   rX   c                      s    t t tdfS )NrZ   )rK   r0   rb   )ÚCrb   rc   r¿   ;  rq  rs   c                      s    t t dkS r·   r%  rb   ©ÚDrb   rc   r¿   H  rÙ   c                      s    t tddS rÆ   )rK   r1   rb   r°  rb   rc   r¿   I  r  c                      s    t t fS r   r%  rb   )r±  r­  rb   rc   r¿   J  rÙ   )Úsympy.concrete.expr_with_limitsrŠ  r>   rÁ   r,   rK   Úas_setr{   r   ÚRealsr1   r*   r   r+   ÚRopenÚ	TypeErrorr   r   r0   Úreversedrt  )r2  rã   rb   )r¯  r±  rŠ  r­  rc   Útest_process_limits  s:   ""$ &&(ôrž  c                  C   s   t dddd} tdtd  td| f ¡ ttd td| fks!J tdt|  d  td| d f ¡ t|  t d td| d fksDJ d S )NrF   Trè   rU   rV   r   ru   )r   r   rK   r[   r  rb   rb   rc   Útest_pr_22677M  s
   4$ÿr¹  N)r   )ÎÚmathr   Úsympy.concrete.productsr   r   Úsympy.concrete.summationsr   r   Úsympy.core.functionr   r   Ú
sympy.corer	   r
   Úsympy.core.numbersr   r   r   r   r   r   Úsympy.core.relationalr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   r   Úsympy.core.sympifyr   Ú(sympy.functions.combinatorial.factorialsr   r   r   Ú%sympy.functions.combinatorial.numbersr   Ú$sympy.functions.elementary.complexesr   Ú&sympy.functions.elementary.exponentialr   r   Ú%sympy.functions.elementary.hyperbolicr   r    Ú#sympy.functions.elementary.integersr!   Ú(sympy.functions.elementary.miscellaneousr"   Ú$sympy.functions.elementary.piecewiser#   Ú(sympy.functions.elementary.trigonometricr$   r%   Ú'sympy.functions.special.gamma_functionsr&   r'   Ú(sympy.functions.special.tensor_functionsr(   Ú&sympy.functions.special.zeta_functionsr)   Úsympy.integrals.integralsr*   Úsympy.logic.boolalgr+   r,   Ú"sympy.matrices.expressions.matexprr-   Ú"sympy.matrices.expressions.specialr.   Úsympy.sets.fancysetsr0   Úsympy.sets.setsr1   Úsympy.simplify.combsimpr2   Úsympy.simplify.simplifyr4   Úsympy.tensor.indexedr5   r6   r7   r8   r9   r:   Ú"sympy.concrete.expr_with_intlimitsr;   Úsympy.core.factsr<   Úsympy.testing.pytestr=   r>   r?   Úsympy.matricesr@   rA   rB   rC   Úsympy.core.modrD   Ú	sympy.abcrE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r\   rh   rd   rl   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û   r  r  r  r  r  r  r  r  r  r  r   r"  r$  r)  r+  r-  r3  r5  r7  r:  rQ  rV  rX  rY  r^  r`  rb  rc  rd  re  rg  rh  rl  rn  ro  rp  ru  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r¡  r£  r€  rž  r¹  rb   rb   rb   rc   Ú<module>   s    ,_- F
 
	
'
,	4

L
	D-
	4
/