o
    GZŽhÀE  ã                   @   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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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Úconvolution_int)Úraises©ÚxÚyc                     sT  dt ddƒtdƒt ddƒg‰ g d¢‰g d¢‰g d¢‰dt ddƒt ddƒg} tˆ ˆƒtˆ ˆƒks1J ‚tˆ ˆd	d
tˆ ˆd	d
ksAJ ‚tˆ ˆdd
tˆˆ dd
ksQJ ‚tˆ ˆdd … dd
tˆdd … ˆ dd
ksiJ ‚d‰d‰tˆˆˆdtˆˆˆdks}J ‚tˆˆˆdtˆˆˆdksJ ‚tˆˆˆdtˆˆˆdksJ ‚tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tˆ ˆddtˆ ˆƒksÁJ ‚tˆ ˆddtˆ ˆƒksÏJ ‚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s"J ‚ J ‚tˆ ˆddtˆ ˆƒks1J ‚tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tdgdgƒt	dgdgƒksaJ ‚tˆˆƒt	ˆˆƒksnJ ‚tt ddƒgt ddƒgƒt ddƒgks„J ‚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 ‚d S ))Né   é   é   é   ©é	   r   r   é   r   é   )r   r   r   r   é   )iŽ  i¬  i  i°  éÿÿÿÿr   ©Údpsé €;éL  ©Úprimec                      ó   t ˆ ˆdˆdS )Nr   ©r!   r%   ©r
   © ©ÚbÚdÚqr)   úU/var/www/auris/lib/python3.10/site-packages/sympy/discrete/tests/test_convolutions.pyÚ<lambda>"   ó    z"test_convolution.<locals>.<lambda>c                      r&   )Né   r'   r(   r)   r*   r)   r.   r/   #   r0   T)ÚdyadicFc                      ó   t ˆ ˆdddS ©Nr   T)r!   r2   r(   r)   )r+   r,   r)   r.   r/   (   r0   c                      ó   t ˆ ˆˆddS ©NT)r%   r2   r(   r)   )r+   r,   Úpr)   r.   r/   )   r0   c                      r3   r4   r(   r)   ©Úar+   r)   r.   r/   *   r0   c                      r5   r6   r(   r)   )r+   Úcr7   r)   r.   r/   +   r0   )Úsubset©r;   r2   c                      s   t ˆ ˆdddS )NTr<   r(   r)   r8   r)   r.   r/   2   r0   c                      r3   )NTr1   )r;   r!   r(   r)   )r:   r,   r)   r.   r/   3   r0   c                      r&   )NT)r;   r%   r(   r)   )r9   r:   r-   r)   r.   r/   4   r0   r   r   r   i÷ÿÿÿé
   éï   é   é"   é    é+   éq   é   )
r   r   r
   r   r   r   Ú	TypeErrorr   r   r   )Úer)   )r9   r+   r:   r,   r7   r-   r.   Útest_convolution   sL     0   
ÿþ",þrG   c               	   C   s^  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r6tg d¢g d¢ƒks9J ‚ J ‚tg d¢g d¢dd	g d
¢ksJJ ‚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s¥J ‚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J ‚ 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sAJ ‚td1ƒ\}}}}}td2ƒ\}}}	}
}|||||g}|||	|
|g}t| |d3dd4g d5¢kspJ ‚t| |d3dd4g d6¢ksJ ‚t||d3dd4|| ||  ||  |	|  |
|  ||  ||  || ||  ||  |	|  |
|  ||  || ||  |	|  |	|  |
|  ||  || ||  |	|  |
|  |
|  ||  gksìJ ‚t||d3dd4|| ||  |	|  |	|  |
|  ||  ||  || ||  |	|  |
|  |
|  ||  || ||  |	|  |
|  || ||  |	|  |
|  || ||  || ||  gksWJ ‚t| |d3dd7g d8¢ksfJ ‚t| dd … |d3dd7g d9¢ksyJ ‚t| |d d:… d3dd7g d;¢ksŒJ ‚t||d3dd7|| ||  ||  |	|  |	|  |
|  ||  || ||  ||  |
|  ||  ||  || ||  |	|  ||  gksÚJ ‚t||d3dd7|| ||  ||  || ||  |	|  ||  || |	|  |
|  ||  || ||  |	|  |
|  || ||  gks&J ‚ttd<d=„ ƒ d S )>Nr   r   r   r   r   ©r   r   r   ©r   r   r1   r   ©Úcycle)é   rL   é   r   r   r   r   iíT i\g  i9w  iL,  iu+  iÀ  iE  i8  r1   iÑN  iÀN  i¤  i;  é/   é   ií  i@  i¬  iÁ	  iÜ  i		  i;Q é   iž¤  iu‘„i°‚  iµÝ  iº²  i'™ r#   )r%   rK   r$   )é`   iúB  ih
  é®<  é½  )i#  i‚  iì  rR   rS   iº?  ix5  z	u v w x yz	p q r s tT)r2   rK   )l   ×PFn	l   \†1AHl   Í!)l   ·*£<ã	l   Ëd¯±l   çJE8ÖJì   ×uR!å ì   pj$)r;   rK   )l   ^÷tBì   XO¥ éŠÀÀrT   rU   ì   ¹X™r¸l   	ê)l   @0©o¥ l   |	´?l   X'9ä l   :K©>†r   )l   2Q#rV   rW   l   x4*ä rU   rX   c                   S   s   t g d¢g d¢ddS )NrH   rI   r   rJ   r(   r)   r)   r)   r.   r/      s    z)test_cyclic_convolution.<locals>.<lambda>)	r   r   r
   Úlenr   ZZeror   r   Ú
ValueError)r9   r+   ÚuÚvÚwr   r   r7   r-   ÚrÚsÚtr:   r,   r)   r)   r.   Útest_cyclic_convolutionA   sœ   ÿþ",$ÿ
ÿ$
ÿÿ
ÿþ
ÿ
ÿ6...ý
ÿ6.û
ÿ	
ÿ&6.þ
ÿü
ÿra   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s+J ‚tddgg d¢ƒg d	¢ks:J ‚tdd
t  gd
dt  gƒddt  gksRJ ‚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s5J ‚td&d'gg d(¢ƒg d)¢ksEJ ‚td*d+gd,d-gƒg d.¢ksUJ ‚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>¡   s   €* z'test_convolution_fft.<locals>.<genexpr>r   rH   rI   ©r   é   rM   é   é   ©r   r1   r   r   ©r   é   é   rk   r   éüÿÿÿr   r   r   iæÿÿÿé#   é0   iÚÿÿÿét   é:   i  é¯   r1   r   rk   rA   rN   é   é-   r   é   iØ  i_7  i  i±  r?   r   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/   º   ó   
 z&test_convolution_fft.<locals>.<lambda>c                   S   s   t ttgttgƒS rv   rw   r)   r)   r)   r.   r/   »   ó    )Úallr   r	   r   r   r   r   r   r   rE   rZ   r)   r)   r)   r.   Útest_convolution_fft    s6   0>>ÿ0"ÿ8*ÿ$2ÿ
ÿ
ÿ
ÿr{   c                      s:  d‰ d‰d‰t ‡ ‡‡fdd„g dgfD ƒƒsJ ‚tdgdgˆƒd	gks%J ‚tddgd
gˆƒddgks4J ‚tg d¢g d¢ˆ ƒg d¢ksDJ ‚tg d¢g d¢ˆƒg d¢ksTJ ‚tg d¢g d¢ˆ ƒtg d¢g d¢ˆƒksjJ ‚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   s2    | ]}ˆ ˆˆfD ]}t g ||d g kV  q	qdS )r$   N©r   rb   ©r7   r-   r^   r)   r.   rd   Æ   s   €0 z'test_convolution_ntt.<locals>.<genexpr>r   r   r   r1   r   r   é   )iy}  i ¤  iv  i‘  )i„}  rP   iÊT )icÇigiO4¸iÁ•1i¼Ûºij¦)i9Ü i÷e0 i“ær~   )iÚE  i,S  iát  i8  )iÞ  iù  ib  i²  i×  i¸  i   )r~   é   rk   éb   éC   )r   r1   r   r   r   )rk   éL   é   éN   éE   c                      s   t ddgddgˆ ƒS )Nr   r   r   r   r|   r)   )r^   r)   r.   r/   Ô   ó    z&test_convolution_ntt.<locals>.<lambda>c                      s   t ttgttgˆ ƒS rv   ©r   r   r   r)   )r-   r)   r.   r/   Õ   r†   c                      s   t ttˆ ƒS rv   r‡   r)   )r7   r)   r.   r/   Ö   s    )rz   r   r   rZ   rE   r)   r)   r}   r.   Útest_convolution_ntt¾   s&   $ ÿÿÿrˆ   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s"J ‚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sMJ ‚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s&J ‚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sbJ ‚tdFƒ\‰ ‰}‰‰}t ˆ ˆgˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  gksˆJ ‚t ˆ ˆ|gˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  |ˆ |ˆ gks«J ‚t ˆ ˆ|gˆˆ|gƒˆ ˆ ˆˆ  ||  ˆ ˆ ˆˆ  ˆ | |ˆ  ˆ| |ˆ  gksÛJ ‚tt‡‡fdGdH„ƒ tt‡ ‡‡‡fdIdH„ƒ d S )JNr   rH   rI   )rA   rf   rh   rg   r   r   r1   r   r   r   r   rt   é=   rD   i  é“   i£  é*   )é^   é3   é5   rt   rL   rg   rf   rŽ   in  é›   iØ  r?   é‡   rŒ   ié  éA   r   i†  rf   iÄ  iÖ  i¡  éÿ   rL   i"  i	  rg   i\  éá   iÉ  iÝ  iG  i^  i{  i  iÄ  i'  iû  i9  is  iE  i—  é4   iµ  é[   iÊÿÿÿi%  r   éÌ   é…   rn   i™  é   é8   rA   é(   r   úu v w x y zc                      ó
   t ˆ ˆƒS rv   ©r   r)   r   r)   r.   r/   ÿ   rx   z'test_convolution_fwht.<locals>.<lambda>c                      s   t ˆˆ ˆ ˆ ƒS rv   r   r)   ©r[   r\   r   r   r)   r.   r/      ry   )r   r   r   r	   r   r   rE   )r9   r+   r:   r]   Úzr)   rž   r.   Útest_convolution_fwhtÙ   sF   ,"ÿ&$
ù(	: þ2:ÿ8*
ÿB
ÿ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s1J ‚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sJ ‚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sEJ ‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ ||  || |ˆ ˆ|  gksiJ ‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒks€J ‚tt‡‡fd+d,„ƒ tt‡ fd-d,„ƒ d S ).Nr   r   r1   r   r   r   r   )é@   éG   é7   rN   é!   é   r?   r   r¡   i  r£   r¢   i   i@  r¤   éT   r?   r¥   é   é¥   éÀ   é€   iÎ  ie  én   i•  iá  i£  é   i{  iï  i  r=   i˜  éi   i   rl   éI   éÄ   r   r›   c                      rœ   rv   )r   r)   ©r   rŸ   r)   r.   r/   %  rx   z)test_convolution_subset.<locals>.<lambda>c                      ó   t tddƒˆ ƒS ©Nr   r   )r   r   r)   ©r[   r)   r.   r/   &  r0   )r   r   r	   r   r   r   rE   ©r9   r+   r:   r\   r]   r   r)   ©r[   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s1J ‚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s%J ‚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slJ ‚td9ƒ\‰ }}‰}‰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   r1   r   r   r   r   r   r   )éB   éQ   é_   é1   é%   éY   rƒ   r   éH   r?   r•   r·   ig  r¹   é¡   é‚   i  i;
  r»   iŸ  rƒ   é6   r¼   i5  i  éÆ   é,   i<  iŽ)  i„  é¾   i¼¦  iây  i%  éJ   i“V  ik  i})  r@   i|` iÈ  r   éo   i%  i­  i7[  iS  i  r~   r=   imþÿÿi  ir1  r›   c                      rœ   rv   )r   r)   r°   r)   r.   r/   Q  rx   z'test_covering_product.<locals>.<lambda>c                      r±   r²   )r   r   r)   r³   r)   r.   r/   R  r0   )r   r   r	   r   r   r   rE   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s1J ‚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sJ ‚t ||ƒ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 | |ƒ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s5J ‚td.ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ |  |ˆ  |ˆ  ||  || ddgksfJ ‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ  ||  ||  |ˆ  ˆ|  |ˆ ˆˆ  ddgks–J ‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒks­J ‚tt‡‡fd/d0„ƒ tt‡ fd1d0„ƒ d S )2Nr   r   r1   r   r   r   r   r   )r   r   r‘   ro   é$   éO   rg   r   r   rf   éÃ   iC  i^  é²   i  iŽ  iI  i@  r©   iP  r   i)ö i1%  iœE  iB  i@K  i6  r   iý  i®!  i2  i€  iô,  éü   éþÿÿÿéÿÿÿr=   iÍ  rš   iÕÿÿÿr¢   éõ   r¦   r›   c                      rœ   rv   )r   r)   r°   r)   r.   r/   x  rx   z+test_intersecting_product.<locals>.<lambda>c                      s   t ˆ tddƒƒS )Nr   r   )r   r   r)   r³   r)   r.   r/   y  r0   )r   r   r	   r   r   r   rE   r´   r)   rµ   r.   Útest_intersecting_productU  sD   6&($&
þ(
ÿ,(
ÿ48ÿ
ÿ2
ÿB
ÿ
ÿrÏ   c                   C   sè   t dgdgƒdgksJ ‚t ddgdgƒdgksJ ‚t g d¢g d¢ƒg d¢ks(J ‚t dgg d¢ƒg d¢ks6J ‚t ddgg d¢ƒg d¢ksEJ ‚t g d	¢g d
¢ƒg d¢ksTJ ‚t g d¢g d¢ƒg d¢kscJ ‚t g d¢g d¢ƒg d¢ksrJ ‚d S )Nr   r   rH   rI   re   ri   r   rj   )r=   éûÿÿÿr   r   )rÐ   r1   r   )iÎÿÿÿéU   rn   iÔÿÿÿrl   rk   )r   r   r   r   )r   r   r   r   )r   r   r   rÌ   r   r   )i«þÿÿrÐ   r   r   i¹ÿÿÿrÍ   rB   éW   )	r   r1   r   r~   iY  rk   i²ÿÿÿiùÿÿÿi§ÿÿÿ)iWùÿÿié÷ÿÿi”öÿÿiöïÿÿií2þÿiÒÙÿÿiŽe  i¥  i…  ióyÿÿiK  iÖ—  im  i¼  i¬îÿÿiÁáÿÿ)r   r)   r)   r)   r.   Útest_convolution_int|  s   þý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   r   Zsympy.testing.pytestr   Z	sympy.abcr   r   rG   ra   r{   rˆ   r    r¶   rÆ   rÏ   rÓ   r)   r)   r)   r.   Ú<module>   s     (5_*&,'