U
    Ç-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 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‰ ddddddg‰dddddg‰d	d
ddg‰tˆ ˆƒtˆ ˆƒks^t‚tˆ ˆddtˆ ˆddks~t‚tˆ ˆddtˆˆ ddksžt‚tˆ ˆdd … ddtˆdd … ˆ ddksÎt‚d‰d‰tˆˆˆdtˆˆˆdksöt‚tˆˆˆdtˆˆˆdkst‚tˆˆˆdtˆˆˆdks:t‚tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tˆ ˆddtˆ ˆƒks„t‚tˆ ˆddtˆ ˆƒks¢t‚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sFn t‚tˆ ˆddtˆ ˆƒksdt‚tt‡ ‡fdd„ƒ tt‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S ) Né   é   é   é   é	   é   é   é   iŽ  i¬  i  i°  ©Údpsé €;éL  ©Úprimec                      s   t ˆ ˆdˆdS )Nr   ©r   r"   ©r
   © ©ÚbÚdÚqr%   úg/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 r/   r$   r%   ©Úar'   r%   r*   r+   (   r,   c                      s   t ˆ ˆˆddS r0   r$   r%   )r'   Úcr1   r%   r*   r+   )   r,   )Úsubset©r5   r.   c                      s   t ˆ ˆdddS )NTr6   r$   r%   r2   r%   r*   r+   0   r,   c                      s   t ˆ ˆdddS )NTr-   )r5   r   r$   r%   )r4   r(   r%   r*   r+   1   r,   c                      s   t ˆ ˆdˆdS )NT)r5   r"   r$   r%   )r3   r4   r)   r%   r*   r+   2   r,   )
r   r   r
   r   ÚAssertionErrorr   r   Ú	TypeErrorr   r   r%   r%   )r3   r'   r4   r(   r1   r)   r*   Útest_convolution   s<      0 ""ÿ
þr9   c               	   C   sª  dt ddƒtdƒt ddƒg} ddddddg}tdddgdddgd	d
tdddgdddgdd
  kr~tdddgdddgƒks„n t‚tdddgdddgdd
dddgks¬t‚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.t‚t| |dd
t ddƒt ddƒt ddƒt ddƒgksft‚t| |dd
t ddƒt ddƒt ddƒt ddƒt ddƒt dd ƒgks®t‚t| |dd
t| |d	d
tjg ksØt‚d!d"td#ƒd$d%g} td&ƒd'd(d)g}t| |d*d	d+t| |d*dd+  kr4t| |d*d,ks:n t‚t| |d*dd+d-d.d/d0d1gks^t‚t| |d*dd+d2d3d4d0d1d5d6gks†t‚t| |d*dd+t| |d*d,d	g ks°t‚td7ƒ\}}}}}td8ƒ\}}}	}
}|||||g}|||	|
|g}t| |d9dd:d;d<d=gkst‚t| |d9dd:d>d?d@dAdBgks4t‚t||d9dd:|| ||  ||  |	|  |
|  ||  ||  || ||  ||  |	|  |
|  ||  || ||  |	|  |	|  |
|  ||  || ||  |	|  |
|  |
|  ||  gkst‚t||d9dd:|| ||  |	|  |	|  |
|  ||  ||  || ||  |	|  |
|  |
|  ||  || ||  |	|  |
|  || ||  |	|  |
|  || ||  || ||  gksät‚t| |d9ddCdDdEdFdAdBdGdHgkst‚t| dd … |d9ddCdIdJdKdLgks6t‚t| |d dM… d9ddCdNdEdFdOdBdGgksdt‚t||d9ddC|| ||  ||  |	|  |	|  |
|  ||  || ||  ||  |
|  ||  ||  || ||  |	|  ||  gks t‚t||d9ddC|| ||  ||  || ||  |	|  ||  || |	|  |
|  ||  || ||  |	|  |
|  || ||  gks˜t‚tt	dPdQ„ ƒ d S )RNr   r   r   r   r   r   r   r-   r   ©Úcycleé   é   r   iíT i\g  i9w  iL,  iu+  iÀ  iE  i8  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#  i‚  iì  iº?  ix5  z	u v w x yz	p q r s tT)r.   r;   l   ×PFn	l   \†1AHl   Í!l   ·*£<ã	l   Ëd¯±l   çJE8ÖJl   ×uR!å l   pj$)r5   r;   l   ^÷tBl   XO¥ iŠÀÀl   ¹X™r¸l   	êl   @0©o¥ l   |	´?l   X'9ä l   :K©>†éÿÿÿÿl   2Q#l   x4*ä c                   S   s   t dddgdddgddS )	Nr   r   r   r   r   r-   rB   r:   r$   r%   r%   r%   r*   r+   ‘   r,   z)test_cyclic_convolution.<locals>.<lambda>)
r   r   r
   r7   Úlenr   ZZeror   r   Ú
ValueError)r3   r'   ÚuÚvÚwr   r   r1   r)   ÚrÚsÚtr4   r(   r%   r%   r*   Útest_cyclic_convolution5   sÖ    ÿþ(,$ÿ
 ÿ$  ÿÿ
ÿ
þ ÿ   ÿÿ
ÿ
   ÿ6...ýÿ
6.ûÿ
	    þ
ÿ
    ÿ6.þÿ
üÿ
rK   c                   C   sì  t dd„ g dgfD ƒƒst‚tdddgdddgƒdd	d
ddgksDt‚tdgdddgƒdddgksdt‚tddgdddgƒddddgksˆt‚tddt  gddt  gƒddt  gks¸t‚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>t‚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št‚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t‚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s„t‚td&d'gd(d)d*gƒd+d,d-d.gksªt‚td/d0gd1d2gƒd3d4d5gksÌt‚t	t
d6d7„ ƒ t	td8d7„ ƒ d S )9Nc                 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   r   r   r   r   r-   é   r=   é   é   r   é   é   éüÿÿÿiæÿÿÿé#   é0   iÚÿÿÿét   é:   i  é¯   r   é    r>   é   é-   r   é   iØ  i_7  i  i±  é   rB   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 r_   r`   r%   r%   r%   r*   r+   ¯   r,   )Úallr7   r   r	   r   r   r   r   r   r   r8   rD   r%   r%   r%   r*   Útest_convolution_fft”   s8    ( $0>>ÿ
0"ÿ
8*ÿ
$2 ÿÿ

ÿ
ÿ
rb   c                      sŽ  d‰ d‰d‰t ‡ ‡‡fdd„g dgfD ƒƒs0t‚tdgdgˆƒd	gksJt‚tddgd
gˆƒddgksht‚tddddgdddgˆ ƒddddddgks–t‚tddddgdddd gˆƒd!d"d#d$d%d&d'gksÈt‚tdd(d)d*d+gdd	d,dd-gˆ ƒtdd(d)d*d+gdd	d,dd-gˆƒkst‚tdd(d)d*d+gd)d.d/d0d1gˆ ƒtdd(d)d*d+gd)d.d/d0d1gˆƒksTt‚tt‡fd2d3„ƒ tt‡fd4d3„ƒ tt‡ fd5d3„ƒ d S )6Nr   r    iÊš;c                 3   s0   | ](}ˆ ˆˆfD ]}t g ||d g kV  qqdS )r!   N©r   rL   ©r1   r)   rH   r%   r*   rN   º   s       z'test_convolution_ntt.<locals>.<genexpr>r   r   r   r-   r   r   é   iy}  i ¤  iv  i‘  i„}  r@   iÊT icÇigiO4¸iÁ•1i¼Ûºij¦i9Ü i÷e0 i“æiÚE  i,S  iát  i8  iÞ  iù  ib  i²  i×  i¸  i   é   rR   éb   éC   r   r   éL   é   éN   éE   c                      s   t ddgddgˆ ƒS )Nr   r   r   r   rc   r%   )rH   r%   r*   r+   È   r,   z&test_convolution_ntt.<locals>.<lambda>c                      s   t ttgttgˆ ƒS r_   ©r   r   r   r%   )r)   r%   r*   r+   É   r,   c                      s   t ttˆ ƒS r_   rm   r%   )r1   r%   r*   r+   Ê   r,   )ra   r7   r   r   rD   r8   r%   r%   rd   r*   Útest_convolution_ntt²   s2    $    ÿ
ÿÿ
ÿ
rn   c                     sú  t g g ƒg kst‚t g dgƒg ks&t‚t dddgdddgƒddd	d
gksLt‚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¢t‚dtddƒtdƒtddƒddt  g} dddddd
dg}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Òt‚t ||ƒtd(dƒd)t  td*dƒd+t  td,dƒd-t  td.dƒd/t  d0d1t  td2dƒd3t  td4dƒd5t  td6dƒd7t  gks`t‚t | dd … |ƒtd8dƒtd9 d  d:td; d  td<dƒtd= d  td>d?ƒdt  td@dƒddAt  dBdBgksØt‚tdCƒ\‰ ‰}‰‰}t ˆ ˆgˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  gks$t‚t ˆ ˆ|gˆˆgƒˆ ˆ ˆˆ  ˆ ˆ ˆˆ  |ˆ |ˆ gksjt‚t ˆ ˆ|gˆˆ|gƒˆ ˆ ˆˆ  ||  ˆ ˆ ˆˆ  ˆ | |ˆ  ˆ| |ˆ  gksÊt‚tt‡‡fdDdE„ƒ tt‡ ‡‡‡fdFdE„ƒ d S )GNr   r   r   r   r   r-   rZ   rO   rQ   rP   r   r   r\   é=   é   i  é“   i£  é*   é^   é3   é5   r<   in  é›   iØ  r^   é‡   ié  éA   i†  iÄ  iÖ  i¡  éÿ   i"  i	  i\  éá   iÉ  iÝ  iG  i^  i{  i  iÄ  i'  iû  i9  is  iE  i—  é4   iµ  é[   iÊÿÿÿi%  rB   éÌ   é…   rU   i™  é   é8   é(   r   úu v w x y zc                      s
   t ˆ ˆƒS r_   ©r   r%   r   r%   r*   r+   ó   r,   z'test_convolution_fwht.<locals>.<lambda>c                      s   t ˆˆ ˆ ˆ ƒS r_   rƒ   r%   ©rE   rF   r   r   r%   r*   r+   ô   r,   )r   r7   r   r   r	   r   r   r8   )r3   r'   r4   rG   Úzr%   r„   r*   Útest_convolution_fwhtÍ   sX    &,"ÿ&$ù	(  
  þ2   
  ÿ8*ÿ
Bÿ
r†   c                     s<  t g g ƒg kst‚t g tddƒgƒg ks,t‚t dtd d  gtddƒgƒdtd d  gksbt‚dtddƒtdƒddt  g} dd	d
ddddg}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*t‚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®t‚t | |ƒt || ƒksÈt‚t | d d… |ƒdtddƒd
td%dƒdddd&gks t‚t | d d… |ƒdtd d  d"td' d  dtd(dƒddd)d)gksJt‚td*ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ | |ˆ  |ˆ || gksœt‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ ||  || |ˆ ˆ|  gksät‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒkst‚tt‡‡fd+d,„ƒ tt‡ fd-d,„ƒ d S ).Nr   r   r-   r   r   r   r   é@   éG   é7   r>   é!   é   r^   r   i  i   i@  éT   é   é¥   éÀ   é€   iÎ  ie  én   i•  iá  i£  é   i{  iï  i  é
   i˜  éi   i   rS   éI   éÄ   r   r‚   c                      s
   t ˆ ˆƒS r_   )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%   ©rE   r%   r*   r+     r,   )r   r7   r   r	   r   r   r   r8   ©r3   r'   r4   rF   rG   r   r%   ©rE   r   r…   r*   Útest_convolution_subset÷   sL    6(    þ$ 
 
 ýÿ
0ÿ
>*ÿ
ÿ
rœ   c                     sò  t g g ƒg kst‚t g tddƒgƒg ks,t‚t dtd d  gtddƒgƒdtd d  gksbt‚dtddƒtdƒdd	t  g} d
ddddddg}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s0t‚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´t‚t | |ƒt || ƒksÎt‚t ||d d.… ƒddt  d d!t  d"td# d  td$dƒtd% d  d/td' d  d0td) d  d1td+ d  td2dƒd-t  gksZt‚t | |d d.… ƒdtd d  td3dƒtd4 d5  dd6tdƒ  dtdƒ t d  d7d8tdƒ d  dtdƒ t  td9 d  gksèt‚td:ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ | |ˆ  ||  |ˆ || gksBt‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ ||  |ˆ  || |ˆ ˆ|  ˆˆ  gksšt‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒksÈt‚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   rj   rt   éH   r^   r|   ig  é¡   é‚   i  i;
  iŸ  é6   i5  i  éÆ   é,   i<  iŽ)  i„  é¾   i¼¦  iây  i%  éJ   i“V  ik  i})  é"   i|` iÈ  rB   éo   i%  i­  i7[  iS  i  re   r“   imþÿÿi  ir1  r‚   c                      s
   t ˆ ˆƒS r_   )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   r7   r   r	   r   r   r   r8   rš   r%   r›   r*   Útest_covering_product  s^    6(   ý   ý$   ý ".þ*ÿ
:ÿ
ÿ
r­   c               	      s–  t g g ƒg kst‚t g tddƒgƒg ks,t‚t dtd d  gtddƒgƒdtd d  gksbt‚dtdƒtddƒdt  ddt  g} d	d
dddddg}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*t‚t ||ƒtddƒtd d  td dƒd!t  td"dƒtddƒd#dddgkszt‚t | |ƒt || ƒks”t‚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ôt‚t | |d d+… ƒtd,dƒd-tdƒ  dtdƒ t d  td. d/  d0dtdƒ  dtdƒ t  d1t  td2dƒd3t  dgks|t‚td4ƒ\‰ }}‰}‰t ˆ ||gˆ|gƒˆ ˆ ˆ |  |ˆ  |ˆ  ||  || ddgksÞt‚t ˆ ||ˆg|ˆgƒˆ | ˆ ˆ  ||  ||  |ˆ  ˆ|  |ˆ ˆˆ  ddgks>t‚t ˆ |gˆ|ˆgƒt ˆ|ˆgˆ |gƒkslt‚tt‡‡fd5d6„ƒ tt‡ fd7d6„ƒ d S )8Nr   r   r-   r   r   r   r   r   rh   rt   rx   rV   é$   éO   rP   r   rf   rO   éÃ   iC  i^  é²   i  iŽ  iI  i@  r   iP  r   i)ö i1%  iœE  iB  i@K  i6  rB   iý  i®!  i2  i€  iô,  éü   éþÿÿÿiÿÿÿr“   iÍ  r   iÕÿÿÿrˆ   éõ   rŒ   r‚   c                      s
   t ˆ ˆƒS r_   )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   r7   r   r	   r   r   r   r8   rš   r%   r›   r*   Útest_intersecting_productI  sj    6&($ 
    þ      ÿ,      ÿ4&  ÿÿ
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   rK   rb   rn   r†   rœ   r­   rµ   r%   r%   r%   r*   Ú<module>   s   $*_*&,