a
    {þdò@  ã                   @   sÄ   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
mZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZm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S )é    )ÚEÚRationalÚpi)Úexp)Úsqrt)ÚSÚsymbolsÚI)ÚconvolutionÚconvolution_fftÚconvolution_nttÚconvolution_fwhtÚconvolution_subsetÚcovering_productÚintersecting_product)Úraises©ÚxÚyc                      s”  dt ddƒtdƒt ddƒg‰ g d¢‰g d¢‰g d¢‰tˆ ˆƒtˆ ˆƒksLJ ‚tˆ ˆdd	tˆ ˆdd	kslJ ‚tˆ ˆdd	tˆˆ dd	ksŒJ ‚tˆ ˆdd … dd	tˆdd … ˆ dd	ks¼J ‚d
‰d‰tˆˆˆdtˆˆˆdksäJ ‚tˆˆˆdtˆˆˆdksJ ‚tˆˆˆdtˆˆˆdks(J ‚tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tˆ ˆddtˆ ˆƒksrJ ‚tˆ ˆddtˆ ˆƒksJ ‚tt‡‡fdd„ƒ tt‡‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡‡‡fdd„ƒ tˆ ˆddtˆ ˆƒ  kr.tˆ ˆddd  kr.tˆ ˆddks4n J ‚tˆ ˆddtˆ ˆƒksRJ ‚tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Né   é   é   é   ©é	   r   r   é   r   é   )r   r   r   r   é   )iŽ  i¬  i  i°  r   ©Údpsé €;éL  ©Úprimec                      s   t ˆ ˆdˆdS )Nr   ©r   r#   ©r
   © ©ÚbÚdÚqr&   úo/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/sympy/discrete/tests/test_convolutions.pyÚ<lambda>    ó    z"test_convolution.<locals>.<lambda>c                      s   t ˆ ˆdˆdS )Né   r$   r%   r&   r'   r&   r+   r,   !   r-   T)ÚdyadicFc                      s   t ˆ ˆdddS ©Nr   T)r   r/   r%   r&   )r(   r)   r&   r+   r,   &   r-   c                      s   t ˆ ˆˆddS ©NT)r#   r/   r%   r&   )r(   r)   Úpr&   r+   r,   '   r-   c                      s   t ˆ ˆdddS r0   r%   r&   ©Úar(   r&   r+   r,   (   r-   c                      s   t ˆ ˆˆddS r1   r%   r&   )r(   Úcr2   r&   r+   r,   )   r-   )Úsubset©r6   r/   c                      s   t ˆ ˆdddS )NTr7   r%   r&   r3   r&   r+   r,   0   r-   c                      s   t ˆ ˆdddS )NTr.   )r6   r   r%   r&   )r5   r)   r&   r+   r,   1   r-   c                      s   t ˆ ˆdˆdS )NT)r6   r#   r%   r&   )r4   r5   r*   r&   r+   r,   2   r-   )	r   r   r
   r   r   r   Ú	TypeErrorr   r   r&   r&   )r4   r(   r5   r)   r2   r*   r+   Útest_convolution   s<      0 ""ÿ
þr9   c               	   C   sb  dt ddƒtdƒt ddƒg} g d¢}tg d¢g d¢dd	tg d¢g d¢dd	  krjtg d¢g d¢ƒkspn J ‚tg d¢g d¢dd	g d
¢ks’J ‚t ddƒt ddƒt ddƒt ddƒt ddƒg} t ddƒt ddƒt ddƒt ddƒg}t| |dd	t| |t| ƒt|ƒ d d	ksJ ‚t| |dd	t ddƒt ddƒt ddƒt ddƒgksLJ ‚t| |dd	t ddƒt ddƒt ddƒt ddƒt dd ƒt d!d"ƒgks”J ‚t| |dd	t| |dd	tjg ks¾J ‚d#d$td%ƒd&d'g} td(ƒd)d*d+g}t| |d,dd-t| |d,dd-  krt| |d,d.ks n J ‚t| |d,dd-g d/¢ks>J ‚t| |d,dd-g d0¢ks\J ‚t| |d,dd-t| |d,d.dg ks†J ‚td1ƒ\}}}}}td2ƒ\}}}	}
}|||||g}|||	|
|g}t| |d3dd4g d5¢ksäJ ‚t| |d3dd4g d6¢ksJ ‚t||d3dd4|| ||  ||  |	|  |
|  ||  ||  || ||  ||  |	|  |
|  ||  || ||  |	|  |	|  |
|  ||  || ||  |	|  |
|  |
|  ||  gksÜJ ‚t||d3dd4|| ||  |	|  |	|  |
|  ||  ||  || ||  |	|  |
|  |
|  ||  || ||  |	|  |
|  || ||  |	|  |
|  || ||  || ||  gks²J ‚t| |d3dd7g d8¢ksÐJ ‚t| dd … |d3dd7g d9¢ksöJ ‚t| |d d:… d3dd7g d;¢ksJ ‚t||d3dd7|| ||  ||  |	|  |	|  |
|  ||  || ||  ||  |
|  ||  ||  || ||  |	|  ||  gks¸J ‚t||d3dd7|| ||  ||  || ||  |	|  ||  || |	|  |
|  ||  || ||  |	|  |
|  || ||  gksPJ ‚ttd<d=„ ƒ d S )>Nr   r   r   r   r   ©r   r   r   ©r   r   r.   r   ©Úcycle)é   r>   é   r   r   r   r   iíT i\g  i9w  iL,  iu+  iÀ  iE  i8  r.   iÑN  iÀN  i¤  i;  é/   é   ií  i@  i¬  iÁ	  iÜ  i		  i;Q é   iž¤  iu‘„i°‚  iµÝ  iº²  i'™ r!   )r#   r=   r"   )é`   iúB  ih
  é®<  é½  )i#  i‚  iì  rD   rE   iº?  ix5  z	u v w x yz	p q r s tT)r/   r=   )l   ×PFn	l   \†1AHl   Í!)l   ·*£<ã	l   Ëd¯±l   çJE8ÖJì   ×uR!å ì   pj$)r6   r=   )l   ^÷tBì   XO¥ éŠÀÀrF   rG   ì   ¹X™r¸l   	ê)l   @0©o¥ l   |	´?l   X'9ä l   :K©>†éÿÿÿÿ)l   2Q#rH   rI   l   x4*ä rG   rJ   c                   S   s   t g d¢g d¢ddS )Nr:   r;   rK   r<   r%   r&   r&   r&   r+   r,   ‘   r-   z)test_cyclic_convolution.<locals>.<lambda>)	r   r   r
   Úlenr   ZZeror   r   Ú
ValueError)r4   r(   ÚuÚvÚwr   r   r2   r*   ÚrÚsÚtr5   r)   r&   r&   r+   Útest_cyclic_convolution5   sœ    ÿþ",$ÿ
ÿ$ÿÿ
ÿ
þÿ
ÿ
6...ýÿ
6.ûÿ
	ÿ
&6.þÿ
üÿ
rT   c                   C   sÐ  t dd„ g dgfD ƒƒsJ ‚tg d¢g d¢ƒg d¢ks:J ‚tdgg d¢ƒg d¢ksVJ ‚tddgg d¢ƒg d	¢kstJ ‚tdd
t  gd
dt  gƒddt  gks¤J ‚tdd
t  ddt  ddt d  gtd
dƒdt d  gƒtddƒtd d  tddƒtd d  tddƒtd d  gks*J ‚ttddƒtddƒgtddƒtddƒtd
dƒgƒtddƒtddƒtddƒtddƒgks†J ‚ttddƒtd
dƒtddƒgtd
dƒtddƒtddƒgƒtd
dƒtddƒtd d!ƒtd"d#ƒtdd$ƒgksòJ ‚ttttd
ƒgtdƒdt dt gƒtdƒt dtdƒt  tt ttd%ƒ  tdƒ td
ƒt d td
ƒtd%ƒ gkspJ ‚td&d'gg d(¢ƒg d)¢ksJ ‚td*d+gd,d-gƒg d.¢ks°J ‚tt	d/d0„ ƒ tt
d1d0„ ƒ d S )2Nc                 s   s*   | ]"}d D ]}t g ||dg kV  q
qdS ))Nr   r   N)r   ©Ú.0r   r   r&   r&   r+   Ú	<genexpr>•   r-   z'test_convolution_fft.<locals>.<genexpr>r   r:   r;   )r   é   r?   é   é   )r   r.   r   r   )r   é   é   r[   r   éüÿÿÿr   r   r   iæÿÿÿé#   é0   iÚÿÿÿét   é:   i  é¯   r.   r   r[   é    r@   é   é-   r   é   iØ  i_7  i  i±  é   rK   i	  ic  )iÉ  i±  i› )iYr¼ i|/ai¾°Xl   ñXŸ iùÃ i˜DÝioiêià )l   ÷"„$l   ÿm2„I l   èPüq^$c                   S   s
   t ttƒS ©N©r   r   r   r&   r&   r&   r+   r,   ®   r-   z&test_convolution_fft.<locals>.<lambda>c                   S   s   t ttgttgƒS rh   ri   r&   r&   r&   r+   r,   ¯   r-   )Úallr   r	   r   r   r   r   r   r   r8   rM   r&   r&   r&   r+   Útest_convolution_fft”   s6    0>>ÿ
0"ÿ
8*ÿ
$2ÿÿ
ÿ
ÿ
rk   c                      s<  d‰ d‰d‰t ‡ ‡‡fdd„g dgfD ƒƒs0J ‚tdgdgˆƒd	gksJJ ‚tddgd
gˆƒddgkshJ ‚tg d¢g d¢ˆ ƒg d¢ksˆJ ‚tg d¢g d¢ˆƒg d¢ks¨J ‚tg d¢g d¢ˆ ƒtg d¢g d¢ˆƒksÔJ ‚tg d¢g d¢ˆ ƒtg d¢g d¢ˆƒksJ ‚tt‡fdd„ƒ tt‡fdd„ƒ tt‡ fdd„ƒ d S )Nr    r!   iÊš;c                 3   s0   | ](}ˆ ˆˆfD ]}t g ||d g kV  qqdS )r"   N©r   rU   ©r2   r*   rQ   r&   r+   rW   º   r-   z'test_convolution_ntt.<locals>.<genexpr>r   r   r   r.   r   r   é   )iy}  i ¤  iv  i‘  )i„}  rB   iÊT )icÇigiO4¸iÁ•1i¼Ûºij¦)i9Ü i÷e0 i“ærn   )iÚE  i,S  iát  i8  )iÞ  iù  ib  i²  i×  i¸  i   )rn   é   r[   éb   éC   )r   r.   r   r   r   )r[   éL   é   éN   éE   c                      s   t ddgddgˆ ƒS )Nr   r   r   r   rl   r&   )rQ   r&   r+   r,   È   r-   z&test_convolution_ntt.<locals>.<lambda>c                      s   t ttgttgˆ ƒS rh   ©r   r   r   r&   )r*   r&   r+   r,   É   r-   c                      s   t ttˆ ƒS rh   rv   r&   )r2   r&   r+   r,   Ê   r-   )rj   r   r   rM   r8   r&   r&   rm   r+   Útest_convolution_ntt²   s&    $ ÿÿÿ
rw   c                     sè  t g g ƒg ksJ ‚t g dgƒg ks&J ‚t g d¢g d¢ƒg d¢ksDJ ‚t tddƒtddƒtdd	ƒgd
dtddƒgƒtddƒtddƒtddƒtddƒgksšJ ‚dtdd	ƒtd	ƒtddƒddt  g} g d¢}d	dt  ddt  d	tddƒdg}t | |ƒdtd	ƒ d dt  dtd	ƒ tddƒ dt  dtd	ƒ tddƒ dt  dtd	ƒ tddƒ dtd	ƒ d  d!t  td"dƒd#t  d$td	ƒ td%dƒ d&t  d'td	ƒ td(dƒ d)t  gksÀJ ‚t ||ƒtd*d
ƒd+t  td,dƒd-t  td.d
ƒd/t  td0d	ƒd1t  d2d3t  td4dƒd5t  td6d
ƒd7t  td8dƒd9t  gksNJ ‚t | d	d … |ƒtd:dƒtd; d  d<td= d  td>dƒtd? d  td@dAƒdt  tdBdƒdCdDt  dEdEgksÆJ ‚tdFƒ\‰ ‰}‰‰}t ˆ ˆgˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  gksJ ‚t ˆ ˆ|gˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  |ˆ |ˆ gksXJ ‚t ˆ ˆ|gˆˆ|gƒˆ ˆ ˆˆ  ||  ˆ ˆ ˆˆ  ˆ | |ˆ  ˆ| |ˆ  gks¸J ‚tt‡‡fdGdH„ƒ tt‡ ‡‡‡fdIdH„ƒ d S )JNr   r:   r;   )rc   rX   rZ   rY   r   r   r.   r   r   r   r   re   é=   é   i  é“   i£  é*   )é^   é3   é5   re   r>   rY   rX   r~   in  é›   iØ  rg   é‡   r|   ié  éA   r}   i†  rX   iÄ  iÖ  i¡  éÿ   r>   i"  i	  rY   i\  éá   iÉ  iÝ  iG  i^  i{  i  iÄ  i'  iû  i9  is  iE  i—  é4   iµ  é[   iÊÿÿÿi%  rK   éÌ   é…   r^   i™  é   é8   rc   é(   r   úu v w x y zc                      s
   t ˆ ˆƒS rh   ©r   r&   r   r&   r+   r,   ó   r-   z'test_convolution_fwht.<locals>.<lambda>c                      s   t ˆˆ ˆ ˆ ƒS rh   rŒ   r&   ©rN   rO   r   r   r&   r+   r,   ô   r-   )r   r   r   r	   r   r   r8   )r4   r(   r5   rP   Úzr&   r   r+   Útest_convolution_fwhtÍ   sF    ,"ÿ&$ù	(: þ2:ÿ8*ÿ
Bÿ
r   c                     s2  t g g ƒg ksJ ‚t g tddƒgƒg ks,J ‚t dtd d  gtddƒgƒdtd d  gksbJ ‚dtddƒtdƒddt  g} g d¢}dtd d  ddt  dtddƒd	g}t | |ƒd
tddƒdd
tdƒ  dtdƒ tddƒ dt  ddddtdƒ  dtdƒ d dt  gks J ‚t ||ƒdtd d  dtd d  dtd d  tddƒtd d  ddt  dtd  d  d!d"t  td#dƒd$t  gks¤J ‚t | |ƒt || ƒks¾J ‚t | d d… |ƒd
tddƒdtd%dƒdddd&gksöJ ‚t | d d… |ƒdtd d  d"td' d	  dtd(dƒd	dd)d)gks@J ‚td*ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ | |ˆ  |ˆ || gks’J ‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ ||  || |ˆ ˆ|  gksÚJ ‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒksJ ‚tt‡‡fd+d,„ƒ tt‡ fd-d,„ƒ d S ).Nr   r   r.   r   r   r   r   )é@   éG   é7   r@   é!   é   rg   r   r   i  r’   r‘   i   i@  r“   éT   rg   r”   é   é¥   éÀ   é€   iÎ  ie  én   i•  iá  i£  é   i{  iï  i  é
   i˜  éi   i   r\   éI   éÄ   r   r‹   c                      s
   t ˆ ˆƒS rh   )r   r&   ©r   rŽ   r&   r+   r,     r-   z)test_convolution_subset.<locals>.<lambda>c                      s   t tddƒˆ ƒS ©Nr   r   )r   r   r&   ©rN   r&   r+   r,     r-   )r   r   r	   r   r   r   r8   ©r4   r(   r5   rO   rP   r   r&   ©rN   r   rŽ   r+   Útest_convolution_subset÷   s@    6(  $þ$"ýÿ
0ÿ
>*ÿ
ÿ
r¥   c                     sè  t g g ƒg ksJ ‚t g tddƒgƒg ks,J ‚t dtd d  gtddƒgƒdtd d  gksbJ ‚dtddƒtdƒdd	t  g} g d
¢}dtd d  ddt  dtddƒdg}t | |ƒdtddƒddtdƒ  dtdƒ d dt  dtddƒddtdƒ  dtdƒ tddƒ dt  gks&J ‚t ||ƒddt  dd t  d!td" d  td#dƒtd$ d  d%td& d  d'td( d  d)td* d  td+dƒd,t  gksªJ ‚t | |ƒt || ƒksÄJ ‚t ||d d-… ƒddt  dd t  d!td" d  td#dƒtd$ d  d.td& d  d/td( d  d0td* d  td1dƒd,t  gksPJ ‚t | |d d-… ƒdtd d  td2dƒtd3 d4  dd5tdƒ  dtdƒ t d  d6d7tdƒ d  dtdƒ t  td8 d  gksÞJ ‚td9ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ | |ˆ  ||  |ˆ || gks8J ‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ ||  |ˆ  || |ˆ ˆ|  ˆˆ  gksJ ‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒks¾J ‚tt‡‡fd:d;„ƒ tt‡ fd<d;„ƒ d S )=Nr   r   r.   r   r   r   r   r   r   )éB   éQ   é_   é1   é%   éY   rs   r}   éH   rg   r…   r¦   ig  r¨   é¡   é‚   i  i;
  rª   iŸ  rs   é6   r«   i5  i  éÆ   é,   i<  iŽ)  i„  é¾   i¼¦  iây  i%  éJ   i“V  ik  i})  é"   i|` iÈ  rK   éo   i%  i­  i7[  iS  i  rn   rœ   imþÿÿi  ir1  r‹   c                      s
   t ˆ ˆƒS rh   )r   r&   r    r&   r+   r,   E  r-   z'test_covering_product.<locals>.<lambda>c                      s   t tddƒˆ ƒS r¡   )r   r   r&   r¢   r&   r+   r,   F  r-   )r   r   r	   r   r   r   r8   r£   r&   r¤   r+   Útest_covering_product  sL    6( ý"ý$"ý6.þ*ÿ
:ÿ
ÿ
r¶   c               	      sŒ  t g g ƒg ksJ ‚t g tddƒgƒg ks,J ‚t dtd d  gtddƒgƒdtd d  gksbJ ‚dtdƒtddƒdt  ddt  g} g d	¢}dtd d  dd
t  dtddƒdg}t | |ƒdtdƒ tddƒ dt  dtdƒ d dt  tddƒdt  ddt  ddddgks J ‚t ||ƒtddƒtd d  tddƒdt  tddƒtddƒddddgkspJ ‚t | |ƒt || ƒksŠJ ‚t |dd … |d d… ƒtddƒtd  d  td!dƒd"t  td#dƒtd$dƒddddgksêJ ‚t | |d d%… ƒtd&dƒd'tdƒ  dtdƒ t d  td( d)  d*dtdƒ  d
tdƒ t  d+t  td,dƒd-t  dgksrJ ‚td.ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ |  |ˆ  |ˆ  ||  || ddgksÔJ ‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ  ||  ||  |ˆ  ˆ|  |ˆ ˆˆ  ddgks4J ‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒksbJ ‚tt‡‡fd/d0„ƒ tt‡ fd1d0„ƒ d S )2Nr   r   r.   r   r   r   r   r   )rq   r}   r   r_   é$   éO   rY   r   ro   rX   éÃ   iC  i^  é²   i  iŽ  iI  i@  r˜   iP  r   i)ö i1%  iœE  iB  i@K  i6  rK   iý  i®!  i2  i€  iô,  éü   éþÿÿÿiÿÿÿrœ   iÍ  rŠ   iÕÿÿÿr‘   éõ   r•   r‹   c                      s
   t ˆ ˆƒS rh   )r   r&   r    r&   r+   r,   l  r-   z+test_intersecting_product.<locals>.<lambda>c                      s   t ˆ tddƒƒS )Nr   r   )r   r   r&   r¢   r&   r+   r,   m  r-   )r   r   r	   r   r   r   r8   r£   r&   r¤   r+   Útest_intersecting_productI  sD    6&($&þ(ÿ,(ÿ48ÿÿ
2ÿ
Bÿ
ÿ
r¾   N)!Zsympy.core.numbersr   r   r   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z
sympy.corer   r   r	   Zsympy.discrete.convolutionsr
   r   r   r   r   r   r   Zsympy.testing.pytestr   Z	sympy.abcr   r   r9   rT   rk   rw   r   r¥   r¶   r¾   r&   r&   r&   r+   Ú<module>   s   $*_*&,