o
    *Ī®c47  ć                   @   s¢  d dl mZmZ d dlmZ d dlmZmZ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mZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% eddd\Z&Z'Z(Z)Z*edZ+dd Z,dd Z-dd Z.dd Z/dd Z0dd Z1dd  Z2d!d" Z3d#d$ Z4d%d& Z5d'd( Z6d)d* Z7d+d, Z8d-d. Z9d/d0 Z:d1d2 Z;d3d4 Z<d5d6 Z=d7d8 Z>d9d: Z?d;d< Z@d=d> ZAd?S )@é    )ŚProductŚproduct)ŚSum)Ś
DerivativeŚFunctionŚdiff)ŚRationalŚooŚpi)ŚS)ŚDummyŚSymbolŚsymbols)ŚrfŚ	factorial)ŚexpŚlog)Śsqrt)ŚcosŚsin)ŚKroneckerDelta)Ścombsimp©Śsimplify)Śraisesz	a,k,n,m,xT©ŚintegerŚfc                  C   s~  t ddd} t ddd}t dddd}|}|| }|}|d }t| d | ||f ” }|| }|}|}|d }t| d | ||f ” }|| dksKJ |}|}|}|d }t| d | ||f ” }	|	dksgJ td	}
d}d
}|}|d }t|
| | ||f ” }d
}d}|}|d }t|
| | ||f ” }t|| dks”J d}d}|}|d }t|
| | ||f ” }	|	dks½J d S )NŚiTr   ŚkŚj©r   Śpositiveé   é   r   é   é   )r   r   Śdoitr   r   )r   r   r    ŚmŚnŚaŚbŚS1ŚS2ŚSzr   © r/   śI/tmp/pip-target-vg8gfxp4/lib/python/sympy/concrete/tests/test_products.pyŚtest_karr_convention   sL   r1   c                     sH   t ddd\ } } fdd}|| | |  || |  || | |  d S )Nzi u vTr   c                    s    d d d   d   }t |   d ”| }| }|d }t| ||f ” }t||  |”|  | ”  dks>J d S )Né   r$   r#   )r   Śsubsr   r'   r   )r(   r)   Śgr   r*   r+   ŚP©r   r/   r0   Śtest_the_productu   s   ,z2test_karr_proposition_2a.<locals>.test_the_product©r   )ŚuŚvr7   r/   r6   r0   Śtest_karr_proposition_2aq   s
   
r;   c                     sŠ   t ddd\ } }} fdd}|| | | | | |  || | | | |  || | | | | || | | |  || | |  || | | | |  || | | | |  || | | |  || | | | | |  d S )Nzi u v wTr   c           	         s    d }| }|d }t | ||f ” }| }|d }t | ||f ” }|}|d }t | ||f ” }t|||  dks@J d S )Nr2   r#   )r   r'   r   )	Ślr)   r(   Śsr*   r+   r,   r-   ŚS3r6   r/   r0   r7      s   z2test_karr_proposition_2b.<locals>.test_the_productr8   )r9   r:   Śwr7   r/   r6   r0   Śtest_karr_proposition_2b   s   r@   c                   C   s*  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s2J t td tdtd fttksDJ t td tttd ftdt tt ks[J t tttddftdtd td td td ks{J t tttddftdtd td ksJ t tttdtddftdtd ksŖJ tt tt tdtft	s¹J t	t
t tdtfjtgksÉJ ttdd  ttd	d  ttd
d  ttdd  ttdd  t dtdtfdksųJ t dtdtftu sJ t dtdtfjt	u sJ d S )Nr$   r#   r2   r   r&   é   c                   S   s   t tS ©N)r   r)   r/   r/   r/   r0   Ś<lambda>Ć   s    z&test_simple_products.<locals>.<lambda>c                   S   s
   t ttS rB   ©r   r)   r   r/   r/   r/   r0   rC   Ä   s   
 c                   S   s   t ttdS ©Nr#   rD   r/   r/   r/   r0   rC   Å   ó    c                   S   s   t ttddS )Nr#   é
   rD   r/   r/   r/   r0   rC   Ę   ó    c                   S   s   t ttdfS rE   rD   r/   r/   r/   r0   rC   Ē   rH   é’’’’)r   r   r*   r)   r   r   r   r   Ś
isinstancer   ŚxŚ	variablesr   Ś
ValueErrorr	   Śfuncr/   r/   r/   r0   Śtest_simple_products³   s$   $$$.@0.  rO   c                   C   s  t ttdtftdtfttd d td   ksJ t tttdtftdtfttttdtftdtf ” ks:J ttttdtftdtf ” tttttdtftdtf ”   krt tttdtftdtf  krt t tttdtftdtf  krtttt tdtfksJ  J tttdtftdtf ” ttttdtfks®J ttt tdtftdtfj	ttgksĆJ d S ©Nr#   r$   )
r   rK   r)   r   r(   r   r   r'   r   rL   r/   r/   r/   r0   Śtest_multiple_productsĪ   s.   4’’’"’žżü’’.rQ   c                   C   s2   t ddt  tdtftdttt ksJ d S rP   )r   r   r)   r   r   r/   r/   r/   r0   Śtest_rational_productsŻ   s   2rR   c                   C   s“   t dt d dtd  d  tdtfdt ttd  ttjt ttddt ks.J t dttd   tdtftdt	t  ttdt	t  t ttd  ksXJ d S )NrA   r$   r#   r2   )
r   r   r)   r   r   r   ŚHalfr   r*   r   r/   r/   r/   r0   Śtest_special_productsį   s   &.’2’rT   c                  C   s|  ddl m} m} td}td||  | d|fd| t|| | d|f ks(J td|  | d|fd||d  d  ks>J tddd\}}td|  | ||fd|d  d |d  |d d  |d   ksiJ td	ddd
}tdddd}td|  | ||fd|d  d |d  |d d  |d   ksJ td|  | ||fd|d d |d  |d d  |d   ks¼J d S )Nr   )r   r)   r*   r$   r#   zk mTr   r)   )Śnegativer   Śp)r"   r   )Ś	sympy.abcr   r)   r   r   r   r   r   )r   r)   r*   r   r(   rV   r/   r/   r0   Śtest__eval_productė   s   8,FFHrX   c                   C   st   t dtt tdtfdttttdtf ksJ t ddtt  tdtfdtdtt tdtf ks8J d S )Nr$   r#   )r   r   r   r)   r   r/   r/   r/   r0   Śtest_product_powś   s   4@rY   c                   C   s*   t tddtt  tdtftsJ d S )Nr$   r#   r   )rJ   r   r   r)   r	   r/   r/   r/   r0   Śtest_infinite_product   s   *rZ   c                  C   sT  t tt tddf} |  ”  ” |  ”  ” ksJ |  ”  ” |  ”  ” ks&J |  ”  ” |  ”  ” ks4J tddd\}}t ||t  tddf} |  ”  ” |  ”  ” ksVJ |  ”  ” |  ”  ” ksdJ |  ”  ” |  ”  ” ksrJ t |t | tddf} |  ”  ” |  ”  ” ksJ |  ”  ” |  ”  ” ksJ |  ”  ” |  ”  ” ksØJ d S )Nr#   r2   zA BF)Ścommutative)r   rK   r   Śadjointr'   Ś	conjugateŚ	transposer   )rV   ŚAŚBr/   r/   r0   Śtest_conjugate_transpose  s    ra   c                  C   s&  t dd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s<J |d|  tttttf ttttd tf d|  tttttf ksbJ |ttttd tftttttf tttttfksJ |ttttd tfttd tttf ttttd tfttd tttf ks¬J |tt|t|ft| |t|f tt||d |f tt|  |t|ftt||d |f ksŽJ |tt|t|ftt||d |f t| |t|f tt|  |t|ftt||d |f ksJ d S )	Nz
y, t, b, cTr   c                 S   s   t | ddS )NF)r'   r   )Śer/   r/   r0   rC     rF   z$test_simplify_prod.<locals>.<lambda>r$   r2   r#   )r   r   rK   r)   r(   r*   r   )ŚyŚtr+   ŚcŚ	_simplifyr/   r/   r0   Śtest_simplify_prod  s<   ’ž.’&’*&’ ’’’$’’’rg   c                  C   st  t ddd\} }}}}tttt| f ttd |”t|d |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sLJ ttd tt| f tt |”t| d ||  t fkskJ tttt| f tt d ”tt d t|  d t d fksJ tt| tt| f|||f ttd |”t|d | |td | d f|||fksøJ d S )Nśb, y, c, d, zTr   r#   r$   )r   r   rK   r*   Śchange_index©r+   rc   re   ŚdŚzr/   r/   r0   Śtest_change_index+  s    ’’’ ’(&’rm   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 )	Nrh   Tr   )r   r#   )r$   r   )r#   r$   )r   r$   r#   )r   r   rK   r*   Śreorderr(   r)   rj   r/   r/   r0   Śtest_reorder:  s8    ’’(’&’(’&ž(’&ž$’$’ro   c                   C   sĘ   t dtd  tdtf ” tju sJ t tdtd  tdtf ” tju s(J t dt tdtf ” tju s9J t ddt  tdtf ” tju sLJ t ddtd   tdtf ” tju saJ d S rP   )r   r)   r	   Śis_convergentr   Śfalser   Śtruer/   r/   r/   r0   Śtest_Product_is_convergentO  s
   &*"&.rs   c                  C   s  t ddd\} }}}}}t| | ddf d”td|  | ddfks#J t| | | dd	f|dd
f dd”t| | | d
df|ddfksEJ t| | ddf d”td|  | ddfks\J t| | ddf d”td|  | ddfkssJ t| | d|f d”td|  | |d dfksJ t| | |d	f d”td|  | d
|d fks„J t| | |d |d	 f d”td|  | |d
 |fksĀJ t| | |d |d f d”td|  | |d |fksßJ t| | |d |d f d”td|  | |d |fksüJ t| | ||f d”td|  | |d |d fksJ t| | ||f | ”td|  | |d |d fks4J t| | | ||f|dd	f | d”t| | | |d |d f|d
dfks[J t| | | ||f|dd	f || ”t| | | |d |d f|d
dfksJ d S )Nzx, y, a, b, c, dTr   r   r2   r#   rA   rI   r&   é   é   r$   )r   r   Śreverse_order)rK   rc   r*   r+   re   rk   r/   r/   r0   Śtest_reverse_orderW  s4   ."’..22’’’88""
’""’rw   c                  C   st   t dddd} tdd| tdd   | dtf}| ” tju s!J tdd| tdd   | dtf| ” ks8J d S )Nr)   Tr!   r#   r$   r2   )	r   r   r   r	   rp   r   rq   r   r'   )r)   rV   r/   r/   r0   Śtest_issue_9983o  s   "2rx   c                  C   sV   t d} t d}t| dd|   |d| d f ” }| | d” ” tddks)J d S )Nr)   r   r#   r$   r   é   )r   r   r'   r3   r   )r)   r   rV   r/   r/   r0   Śtest_issue_13546v  s   $"rz   c                  C   s<   t d\} }td| d |t d   |dtgdksJ d S )Nza nr#   r$   r   )r   r   r
   r	   )r*   r)   r/   r/   r0   Śtest_issue_14036}  s   0r{   c                	   C   sX   t dtjd td   tdtf t”tttdddtd    tdtfks*J d S )Nr#   r$   rA   )	r   r   rS   r   r	   Śrewriter   r   r   r/   r/   r/   r0   Śtest_rewrite_Sum  s   &&’r}   c                  C   s2   t d} tttt|  tddf ” dksJ d S )Nrc   r   r#   )r   r   rK   r   r'   )rc   r/   r/   r0   Śtest_KroneckerDelta_Product  s   *r~   c                  C   s  t d} td\}}}ttt|d|ft ” ttt|d| d ftt|| d |f | d|f ” ks6J ttt|d|ft ” t| | t ksMJ ttt|t|ftttt|t|ftkseJ tt|td|ftt	dksvJ tt
tt tddf t” ” t	dksJ d S )Nr   zt y zr#   r   rI   )r   r   r   r   rK   Śas_dummyr   r'   r   r   r   r)   )Ś_ird   rc   rl   r/   r/   r0   Śtest_issue_20848  s   V.0"2r   N)BŚsympy.concrete.productsr   r   Śsympy.concrete.summationsr   Śsympy.core.functionr   r   r   Śsympy.core.numbersr   r	   r
   Śsympy.core.singletonr   Śsympy.core.symbolr   r   r   Ś(sympy.functions.combinatorial.factorialsr   r   Ś&sympy.functions.elementary.exponentialr   r   Ś(sympy.functions.elementary.miscellaneousr   Ś(sympy.functions.elementary.trigonometricr   r   Ś(sympy.functions.special.tensor_functionsr   Śsympy.simplify.combsimpr   Śsympy.simplify.simplifyr   Śsympy.testing.pytestr   r*   r   r)   r(   rK   r   r1   r;   r@   rO   rQ   rR   rT   rX   rY   rZ   ra   rg   rm   ro   rs   rw   rx   rz   r{   r}   r~   r   r/   r/   r/   r0   Ś<module>   sL    ]*
