a
    kº”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                     sZ  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sbJ ‚tˆ ˆd	d
tˆ ˆd	d
ks‚J ‚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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rDtˆ ˆddd  krDtˆ ˆddksJn J ‚tˆ ˆddtˆ ˆƒkshJ ‚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sÈJ ‚tˆˆƒt	ˆˆƒksâJ ‚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sVJ ‚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(   úT/var/www/auris/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!   r1   r'   r(   )r*   r+   r(   r-   r.   (   r/   c                      s   t ˆ ˆˆddS ©NT)r%   r1   r'   r(   )r*   r+   Úpr(   r-   r.   )   r/   c                      s   t ˆ ˆdddS r2   r'   r(   ©Úar*   r(   r-   r.   *   r/   c                      s   t ˆ ˆˆddS r3   r'   r(   )r*   Úcr4   r(   r-   r.   +   r/   )Úsubset©r8   r1   c                      s   t ˆ ˆdddS )NTr9   r'   r(   r5   r(   r-   r.   2   r/   c                      s   t ˆ ˆdddS )NTr0   )r8   r!   r'   r(   )r7   r+   r(   r-   r.   3   r/   c                      s   t ˆ ˆdˆdS )NT)r8   r%   r'   r(   )r6   r7   r,   r(   r-   r.   4   r/   r   r   r   i÷ÿÿÿé
   éï   é   é"   é    é+   éq   é   )
r   r   r
   r   r   r   Ú	TypeErrorr   r   r   )Úer(   )r6   r*   r7   r+   r4   r,   r-   Útest_convolution   sL      0 ""ÿ
þ",þrD   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   r0   r   ©Úcycle)é   rI   é   r   r   r   r   iíT i\g  i9w  iL,  iu+  iÀ  iE  i8  r0   iÑN  iÀN  i¤  i;  é/   é   ií  i@  i¬  iÁ	  iÜ  i		  i;Q é   iž¤  iu‘„i°‚  iµÝ  iº²  i'™ r#   )r%   rH   r$   )é`   iúB  ih
  é®<  é½  )i#  i‚  iì  rO   rP   iº?  ix5  z	u v w x yz	p q r s tT)r1   rH   )l   ×PFn	l   \†1AHl   Í!)l   ·*£<ã	l   Ëd¯±l   çJE8ÖJì   ×uR!å ì   pj$)r8   rH   )l   ^÷tBì   XO¥ éŠÀÀrQ   rR   ì   ¹X™r¸l   	ê)l   @0©o¥ l   |	´?l   X'9ä l   :K©>†r   )l   2Q#rS   rT   l   x4*ä rR   rU   c                   S   s   t g d¢g d¢ddS )NrE   rF   r   rG   r'   r(   r(   r(   r-   r.      r/   z)test_cyclic_convolution.<locals>.<lambda>)	r   r   r
   Úlenr   ZZeror   r   Ú
ValueError)r6   r*   ÚuÚvÚwr   r   r4   r,   ÚrÚsÚtr7   r+   r(   r(   r-   Útest_cyclic_convolutionA   sœ    ÿþ",$ÿ
ÿ$ÿÿ
ÿ
þÿ
ÿ
6...ýÿ
6.ûÿ
	ÿ
&6.þÿ
üÿ
r^   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   rE   rF   ©r   é   rJ   é   é   ©r   r0   r   r   ©r   é   é   rh   r   éüÿÿÿr   r   r   iæÿÿÿé#   é0   iÚÿÿÿét   é:   i  é¯   r0   r   rh   r>   rK   é   é-   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.   º   r/   z&test_convolution_fft.<locals>.<lambda>c                   S   s   t ttgttgƒS rs   rt   r(   r(   r(   r-   r.   »   r/   )Úallr   r	   r   r   r   r   r   r   rB   rW   r(   r(   r(   r-   Útest_convolution_fft    s6    0>>ÿ
0"ÿ
8*ÿ
$2ÿÿ
ÿ
ÿ
rv   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   r_   ©r4   r,   r[   r(   r-   ra   Æ   r/   z'test_convolution_ntt.<locals>.<genexpr>r   r   r   r0   r   r   é   )iy}  i ¤  iv  i‘  )i„}  rM   iÊT )icÇigiO4¸iÁ•1i¼Ûºij¦)i9Ü i÷e0 i“æry   )iÚE  i,S  iát  i8  )iÞ  iù  ib  i²  i×  i¸  i   )ry   é   rh   éb   éC   )r   r0   r   r   r   )rh   éL   é   éN   éE   c                      s   t ddgddgˆ ƒS )Nr   r   r   r   rw   r(   )r[   r(   r-   r.   Ô   r/   z&test_convolution_ntt.<locals>.<lambda>c                      s   t ttgttgˆ ƒS rs   ©r   r   r   r(   )r,   r(   r-   r.   Õ   r/   c                      s   t ttˆ ƒS rs   r   r(   )r4   r(   r-   r.   Ö   r/   )ru   r   r   rW   rB   r(   r(   rx   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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   rE   rF   )r>   rc   re   rd   r   r   r0   r   r   r   r   rq   é=   rA   i  é“   i£  é*   )é^   é3   é5   rq   rI   rd   rc   rˆ   in  é›   iØ  r<   é‡   r†   ié  éA   r‡   i†  rc   iÄ  iÖ  i¡  éÿ   rI   i"  i	  rd   i\  éá   iÉ  iÝ  iG  i^  i{  i  iÄ  i'  iû  i9  is  iE  i—  é4   iµ  é[   iÊÿÿÿi%  r   éÌ   é…   rk   i™  é   é8   r>   é(   r   úu v w x y zc                      s
   t ˆ ˆƒS rs   ©r   r(   r   r(   r-   r.   ÿ   r/   z'test_convolution_fwht.<locals>.<lambda>c                      s   t ˆˆ ˆ ˆ ƒS rs   r–   r(   ©rX   rY   r   r   r(   r-   r.      r/   )r   r   r   r	   r   r   rB   )r6   r*   r7   rZ   Ú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   r0   r   r   r   r   )é@   éG   é7   rK   é!   é   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   ri   éI   éÄ   r   r•   c                      s
   t ˆ ˆƒS rs   )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(   ©rX   r(   r-   r.   &  r/   )r   r   r	   r   r   r   rB   ©r6   r*   r7   rY   rZ   r   r(   ©rX   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   r0   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  ry   r:   imþÿÿi  ir1  r•   c                      s
   t ˆ ˆƒS rs   )r   r(   r©   r(   r-   r.   Q  r/   z'test_covering_product.<locals>.<lambda>c                      s   t tddƒˆ ƒS rª   )r   r   r(   r«   r(   r-   r.   R  r/   )r   r   r	   r   r   r   rB   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   r0   r   r   r   r   r   )r|   r‡   r‹   rl   é$   éO   rd   r   rz   rc   éÃ   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                      s
   t ˆ ˆƒS rs   )r   r(   r©   r(   r-   r.   x  r/   z+test_intersecting_product.<locals>.<lambda>c                      s   t ˆ tddƒƒS )Nr   r   )r   r   r(   r«   r(   r-   r.   y  r/   )r   r   r	   r   r   r   rB   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s2J ‚t g d¢g d¢ƒg d¢ksPJ ‚t dgg d¢ƒg d¢kslJ ‚t ddgg d¢ƒg d¢ksŠJ ‚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¢ƒg d¢ksäJ ‚d S )Nr   r   rE   rF   rb   rf   r   rg   )r:   éûÿÿÿr   r   )rÈ   r0   r   )iÎÿÿÿéU   rk   iÔÿÿÿri   rh   )r   r   r   r   )r   r   r   r   )r   r   r   rÄ   r   r   )i«þÿÿrÈ   r   r   i¹ÿÿÿrÅ   r?   éW   )	r   r0   r   ry   iY  rh   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   rD   r^   rv   r‚   r™   r®   r¾   rÇ   rË   r(   r(   r(   r-   Ú<module>   s   (5_*&,'