
    gE                         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 Zd	 Zd
 Zd Zd Zd Zd Z d Z!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                  z   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    sJ t          d	
          t          d	
          k    sJ t          d
          t          d
          k    sJ t          dd          d
          t          dd          d
          k    sJ ddt                    t	                    k    sJ t                    t	                    k    sJ t                    t	                    k    sJ t          t          fd           t          t          fd           t          d          t                    k    sJ t          d          t                    k    sJ t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          d          t                    cxk    r.t          dd          cxk    rt          d          k    sn J t          d          t                    k    sJ t          t          fd           t          t          fd           t          t          f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    sJ d S )(N            	   r   r      r      )r   r   r   r      )i  i  i  i  r   dps ;L  primec                  *    t           d          S )Nr   r#   r'   r   bdqs   b/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/discrete/tests/test_convolutions.py<lambda>z"test_convolution.<locals>.<lambda>"       k!QAQ???     c                  *    t           d          S )N   r)   r*   r+   s   r/   r0   z"test_convolution.<locals>.<lambda>#   r1   r2   T)dyadicFc                  *    t           dd          S Nr   T)r#   r5   r*   )r,   r-   s   r/   r0   z"test_convolution.<locals>.<lambda>(       k!QAdCCC r2   c                  *    t           d          S NT)r'   r5   r*   )r,   r-   ps   r/   r0   z"test_convolution.<locals>.<lambda>)       k!QaEEE r2   c                  *    t           dd          S r7   r*   ar,   s   r/   r0   z"test_convolution.<locals>.<lambda>*   r8   r2   c                  *    t           d          S r:   r*   )r,   cr;   s   r/   r0   z"test_convolution.<locals>.<lambda>+   r<   r2   )subsetrB   r5   c                  *    t           dd          S )NTrC   r*   r>   s   r/   r0   z"test_convolution.<locals>.<lambda>2   s    k!QtDIII r2   c                  *    t           dd          S )NTr4   )rB   r#   r*   )rA   r-   s   r/   r0   z"test_convolution.<locals>.<lambda>3   s    k!QtCCC r2   c                  *    t           d          S )NT)rB   r'   r*   )r?   rA   r.   s   r/   r0   z"test_convolution.<locals>.<lambda>4   s    k!Qt1EEE r2   r   r   r   i
         "       +   q      )
r   r   r   r   r   r   	TypeErrorr   r   r   )er?   r,   rA   r-   r;   r.   s    @@@@@@r/   test_convolutionrQ      s   	
HQNNDGGXa^^4AAA   A	Xa^^Xa^^,Aq!1 5 55555q!###q!'C'C'CCCCCq!###q!'C'C'CCCCCq!ABB%Q'''?1QRR5!+K+K+KKKKK 	AA q!1%%%AQ)G)G)GGGGGq!1%%%AQ)G)G)GGGGGq!1%%%AQ)G)G)GGGGG
9??????@@@
9??????@@@ q!D)))-=a-C-CCCCCq!E***k!Q.?.?????
9CCCCCDDD
9EEEEEEFFF
9CCCCCDDD
9EEEEEEFFF q!D)))-?1-E-E / / / /1T%888/ / / /Aq.../ / / / / / q!E***k!Q.?.?????
9IIIIIJJJ
9CCCCCDDD
9EEEEEEFFF sQC  OQC!$=$=====q!1 5 55555 1!A88Xa^^<LLLLLq!R#r):):HROO!)"a(2q//8CQSCTCT!)"a!2 2 2 2 2 2 2r2   c            
         dt          dd          t          d          t          dd          g} g d}t          g dg dd	          t          g dg dd	          cxk    rt          g dg d          k    sn J t          g dg 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	          t          | |t          |           t          |          z   dz
  	          k    sJ t          | |d	          t          dd          t          dd          t          dd          t          dd          gk    sJ t          | |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	          t          | |d	          t          j        gz   k    sJ d#d$t	          d%          d&d'g} t	          d(          d)d*d+g}t          | |d,d-          t          | |d,d-          cxk    rt          | |d,.          k    sn J t          | |d,d-          g d/k    sJ t          | |d,d-          g d0k    sJ t          | |d,d-          t          | |d,.          dgz   k    sJ t          d1          \  }}}}}t          d2          \  }}}	}
}|||||g}|||	|
|g}t          | |d3d4          g d5k    sJ t          | |d3d4          g d6k    sJ t          ||d3d4          ||z  ||z  z   ||z  z   |	|z  z   |
|z  z   ||z  z   ||z  z   ||z  ||z  z   ||z  z   |	|z  z   |
|z  z   ||z  z   ||z  ||z  z   |	|z  z   |	|z  z   |
|z  z   ||z  z   ||z  ||z  z   |	|z  z   |
|z  z   |
|z  z   ||z  z   gk    sJ t          ||d3d4          ||z  ||z  z   |	|z  z   |	|z  z   |
|z  z   ||z  z   ||z  z   ||z  ||z  z   |	|z  z   |
|z  z   |
|z  z   ||z  z   ||z  ||z  z   |	|z  z   |
|z  z   ||z  ||z  z   |	|z  z   |
|z  z   ||z  ||z  z   ||z  ||z  z   gk    sJ t          | |d3d7          g d8k    sJ t          | dd          |d3d7          g d9k    sJ t          | |d d:         d3d7          g d;k    sJ t          ||d3d7          ||z  ||z  z   ||z  z   |	|z  z   |	|z  z   |
|z  z   ||z  z   ||z  ||z  z   ||z  z   |
|z  z   ||z  z   ||z  z   ||z  ||z  z   |	|z  z   ||z  z   gk    sJ t          ||d3d7          ||z  ||z  z   ||z  z   ||z  ||z  z   |	|z  z   ||z  z   ||z  |	|z  z   |
|z  z   ||z  z   ||z  ||z  z   |	|z  z   |
|z  z   ||z  ||z  z   gk    sJ t          t          d<            d S )=Nr   r   r   r   r   r   r   r   r   r   r4   r   cycle)   rW      r   r   r    r   iT i\g  i9w  iL,  iu+  i  iE  i8  r4   iN  iN  i  i;  /      i  i@  i  i	  i  i		  i;Q   i  iui  i  i  i' r%   )r'   rV   r&   )`   iB  ih
  <    )i#  i  i  r]   r^   i?  ix5  z	u v w x yz	p q r s tT)r5   rV   )l   PFn	l   \1AHl   !)l   *<	l   dl   JE8J   uR!    pj$)rB   rV   )l   ^tB   XO r_   r`      Xrl   	)l   @0o l   |	?l   X'9 l   :K>r!   )l   2Q#ra   rb   l   x4* r`   rc   c                  .    t          g dg dd          S )NrS   rT   r!   rU   r*    r2   r/   r0   z)test_cyclic_convolution.<locals>.<lambda>   s    {999iiirJJJ r2   )	r   r   r   lenr   Zeror	   r   
ValueError)r?   r,   uvwr   r   r;   r.   rstrA   r-   s                 r/   test_cyclic_convolutionro   A   s	   	
HQNNDGGXa^^4AAyyy)))1555			999A6662 2 2 2IIIyyy112 2 2 2 2 2 yyy)))1555EEEE	!Q!Q!Q!QRSUVXA	!Q!Q!Q!QHAq!1%%%1CFFSVVOa$78889 9 9 9 q!1%%%(5%*@*@(5RWBXBX$UD118D$3G3G*I I I I I q!1%%%(5%*@*@(3PSBTBTV^_aceVfVf$T400(5$2G2GRVX\I]I]*_ _ _ _ _ q!1%%%Aq***afX56 6 6 6 
w$1A	
55%(Aq!<q9991L:::6 6 6 6Aq5556 6 6 6 6 6 q!<q999 >Q >Q >Q Q Q Q Q q!<q999 >S >S >S S S S S q!<q9991L111QC78 8 8 8 K((MAq!QK((MAq!Q	
Aq!QA	
Aq!QAq!D222FFFG G G G q!D222 7H 7H 7H H H H H q!D222qS1Q3Y1_qs"QqS(1Q3.14qS1Q3Y1_qs"QqS(1Q3.qS1Q3Y1_qs"QqS(1Q3.qS1Q3Y1_qs"QqS(1Q3.00 0 0 0 q!D222qS1Q3Y1_qs"QqS(1Q3.14qS1Q3Y1_qs"QqS(1Q3.qS1Q3Y1_qs"qS1Q3Y1_qs"qS1Q3YqS1Q3Y    q!D222 72 72 72 2 2 2 2 quaA666EEEF F F F q!CRC&Q777 <Q <Q <Q Q Q Q Q q!D222qS1Q3Y1_qs"QqS(1Q3.14qS1Q3Y1_qs"QqS(1Q3.qS1Q3Y1_qs"$$ $ $ $
 q!D222qS1Q3Y1_qS1Q3Y1_qs"qS1Q3Y1_qs"qS1Q3Y1_qs"qS1Q3Y	    :JJKKKKKr2   c            	         t          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          z  z   gd	dt          z  z   g          d
dt          z  z   gk    sJ t          dd	t          z  z   ddt          z  z   ddt          z  dz  z   gt          d	d          dt          z  dz  z   g          t          dd          t          dz  dz  z   t          dd          t          dz  dz  z   t          dd          t          dz  dz  z   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          z  dt
          z  g          t          d          t          z  dt          d          t
          z  z   t
          t          z  t          t          d$          z  z   t          d          z   t          d	          t          z  dz   t          d	          t          d$          z  gk    sJ t          d%d&gg d'          g d(k    sJ t          d)d*gd+d,g          g d-k    sJ t          t          d.            t          t          d/            d S )0Nc              3   L   K   | ]}d D ]}t          g ||          g k    V   dS ))Nr   r"   N)r   ).0r   r   s      r/   	<genexpr>z'test_convolution_fft.<locals>.<genexpr>   sC      YYqyYY!r1!,,,2YYYYYYYr2   r   rS   rT   r      rX         r   r4   r   r   r         rz   r   r   r   r   i#   0   it   :   i     r4   r    rz   rK   rY      -   r      i  i_7  i  i  rI   r!   i	  ic  )i  i  i )iYr i|/aiXl   X i iDioii )l   "$l   m2I l   Pq^$c                  6    t          t          t                    S Nr   r   r   re   r2   r/   r0   z&test_convolution_fft.<locals>.<lambda>   s    oa33 r2   c                  R    t          t          t          gt          t          g          S r   r   re   r2   r/   r0   z&test_convolution_fft.<locals>.<lambda>   s    1v1v>> r2   )allr   r
   r   r   r   r   r   r   rO   rh   re   r2   r/   test_convolution_fftr      s6   YYR!IYYYYYYYY999iii004G4G4GGGGGA3			**iii7777Aq6999--@@@@A!G9q1Q3wi00R!A#XJ>>>>A!GQ1Wa!A#a%i88Aq>>AaCPQE;Q:RSSc22b((3*;*;aeBh*FQSUWHXHX[\]`[`ad[dHdef f f f HQNNHQNN;hq!nnhWXZ[nn^fghjk^l^l=mnn%-b"%5%5xB7G7GRTVXIYIY[cdegh[i[i$jk k k k HQNNHQNNHQNNKhWXZ[nn^fghjk^l^lnvwxz{n|n|M}~~!)!R(2r2B2BHTSXDYDY[cdgil[m[mowxy{}o~o~ @ @ @ @ B477+d1ggqtQqS-ABB!WWRZT!WWQY"r#b''z0ADGG0K,0GGBJNDGGCGGOMM M M M D%=*=*=*=>>DDDE E E E FH-&/ABBIIIJ J J J 933444
:>>?????r2   c                      d ddt           f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    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           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           t          t          fd           t          t           fd           d S )Nr$   r%   iʚ;c              3   T   K   | ]"}fD ]}t          g ||           g k    V  #dS )r&   Nr   )rr   r   r   r;   r.   rl   s      r/   rs   z'test_convolution_ntt.<locals>.<genexpr>   sN      [[RSUVXYQZ[[Ar1A..."4[[[[[[[r2   r   r   r   r4   r   r       )iy}  i  iv  i  )i}  r[   iT )icigiO4i1iۺij)i9 ie0 ir   )iE  i,S  it  i8  )i  i  ib  i  i  i  i  )r      rz   b   C   )r   r4   r   r    r   )rz   L      N   E   c                  .    t          ddgddg           S )Nr   r   r   r   r   )rl   s   r/   r0   z&test_convolution_ntt.<locals>.<lambda>   s    1v1vqAA r2   c                  V    t          t          t          gt          t          g           S r   r   r   r   )r.   s   r/   r0   z&test_convolution_ntt.<locals>.<lambda>   s    1v1vqAA r2   c                  :    t          t          t                     S r   r   )r;   s   r/   r0   z&test_convolution_ntt.<locals>.<lambda>   s    oaA66 r2   )r   r   r   rh   rO   )r;   r.   rl   s   @@@r/   test_convolution_nttr      s    	AAA [[[[[[rA3i[[[[[[[[A3Q''A3....Aq6A3**q"g55555557K7K7KQOO TZ TZ TZ Z Z Z Z:::<V<V<VXYZZ0Z0Z0Z[ [ [ [ ///!DD#$8$8$8///1MMN N N N///1E1E1EqII#$8$8$8:N:N:NPQRRS S S S :AAAABBB
:AAAABBB
9666677777r2   c                  	   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    sJ dt          dd	          t          d	          t          dd          ddt          z  z   g} g d}d	dt          z  z   ddt          z  z   d	t          dd          dg}t          | |          dt          d	          z  dz   dt          z  z   dt          d	          z  t          dd          z   dt          z  z   dt          d	          z  t          dd          z   dt          z  z   dt          d	          z  t          dd          z   dt          d	          z  d z   d!t          z  z   t          d"d          d#t          z  z   d$t          d	          z  t          d%d          z   d&t          z  z   d't          d	          z  t          d(d          z   d)t          z  z   gk    sJ t          ||          t          d*d
          d+t          z  z   t          d,d          d-t          z  z   t          d.d
          d/t          z  z   t          d0d	          d1t          z  z   d2d3t          z  z   t          d4d          d5t          z  z   t          d6d
          d7t          z  z   t          d8d          d9t          z  z   gk    sJ t          | d	d          |          t          d:d          t          d;z  dz  z   d<t          d=z  dz  z   t          d>d          t          d?z  dz  z   t          d@dA          dt          z  z   t          dBd          dCdDt          z  z   dEdEgk    sJ t	          dF          \  }}t          gg          z  z  z   z  z  z   gk    sJ t          |gg          z  z  z   z  z  z   |z  |z  gk    sJ t          |g|g          z  z  z   ||z  z   z  z  z   |z  |z  z   |z  |z  z   gk    sJ t          t          fdG           t          t          fdH           d S )INr   rS   rT   )rK   ru   rw   rv   r   r   r4   r    r   r   r   r   =   rN   i     i  *   )^   3   5   r   rW   rv   ru   r   in     i  rI      r   i  A   r   i  ru   i  i  i     rW   i"  i	  rv   i\     i  i  iG  i^  i{  i  i  i'  i  i9  is  iE  i  4   i  [   ii%  r!         r}   i     8   rK   (   r   u v w x y zc                  $    t                     S r   r   r   s   r/   r0   z'test_convolution_fwht.<locals>.<lambda>       .q!44 r2   c                  0    t          z   z             S r   r   )ri   rj   r   r   s   r/   r0   z'test_convolution_fwht.<locals>.<lambda>   s    .qsAE:: r2   )r   r   r   r
   r	   r   rO   )	r?   r,   rA   rk   zri   rj   r   r   s	        @@@@r/   test_convolution_fwhtr      sj   B##r))))B$$****IIIyyy115E5E5EEEEEXa^^Xa^^Xa^^LqRSU]^_abUcUcNdee%-b!__hr26F6FQTVYHZHZ\dehjl\m\m$no o o o 
HQNNDGGXa^^Q1W=A$$$A	
QqS!ac'1hq!nna0AAq!!baj3&6Q&>$&tAwwJ$1C1C$Cc!e$K$&tAwwJ$1B1B$BRT$I$&tAwwJ$1C1C$C$&tAwwJ$4s1u$<$,T2$6$6Q$>$&tAwwJ$1B1B$BSU$J$&tAwwJ$1C1C$Cc!e$K&M M M M M Aq!!htQ&7&7#a%&?$PQARARUXYZUZAZqCE!8D!#4#4s1u#<dSUlHUY[\L]L]`cde`eLeqBqD (4"3"3bd":&< < < < < AabbE1%%(3*:*:QsU1W*Db1S5QR7lS""Q&b(9(9BqD(@(2q//SUXZ[\X\S\^_ab*d d d d d }--Aq!Q1QFQF++!ac	1Q319/EEEEEQ1I1v..	
1qsAaC!A#IqsAaC() ) ) ) Q1I1ay11	
1qsQqS!A#!)QqS1Q3Y!ac	:; ; ; ; 944444555
9:::::::;;;;;r2   c                  f   t          g g           g k    sJ t          g t          dd          g          g k    sJ t          dt          dz  dz  z   gt          dd          g          dt          dz  dz  z   gk    sJ dt          dd          t          d          ddt          z  z   g} g d}dt          dz  dz  z   ddt          z  z   dt          dd          d	g}t          | |          d
t          dd          dd
t          d          z  z   dt          d          z  t          dd          z   dt          z  z   ddddt          d          z  z   dt          d          z  dz   dt          z  z   gk    sJ t          ||          dt          dz  dz  z   dt          dz  dz  z   dt          dz  dz  z   t          dd          t          dz  dz  z   ddt          z  z   dt          d z  dz  z   d!d"t          z  z   t          d#d          d$t          z  z   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z  dz  z   d"t          d'z  d	z  z   dt          d(d          d	dd)d)gk    sJ t	          d*          \  }}}t          ||g|g          z  |z  |z  z   |z  ||z  gk    sJ t          ||g|g          |z  z  ||z  z   ||z  |z  |z  z   gk    sJ t          |g|g          t          |g|g          k    sJ t          t          fd+           t          t          fd,           d S )-Nr   r   r4   r   r   r   r   )@   G   7   rY   !      rI   r   r   i  r   r   i  i@  r   T   rI   r               i  ie  n   i  i  i     i{  i  i  rG   i  i   i  r{   I      r   r   c                  $    t                     S r   )r   r   r   s   r/   r0   z)test_convolution_subset.<locals>.<lambda>%  s    0A66 r2   c                  @    t          t          dd                     S Nr   r   )r   r   ri   s   r/   r0   z)test_convolution_subset.<locals>.<lambda>&  s    0!QCC r2   )r   r   r
   r   r	   r   rO   	r?   r,   rA   rj   rk   r   ri   r   r   s	         @@@r/   test_convolution_subsetr     sN   b"%%++++b8Aq>>"233r9999q1Q3q5ykHQNN+;<<QqSUKKKK	
HQNNDGGQ1W-A$$$A	
QqSUA!GQA2Aa##HS!,<,<b2d1gg:o(*477
XdA5F5F(FQ(NPRTV(*RQZDGGc9ICPQE9Q(S S S S S a##aeAgsQtVAX~(+aeAgxa7H7H1T6RS87S(+bd
C!C%'M(+bd
HT14E4EA4M(O O O O O
 a##'9!Q'?'?????aeQ''#q!!2xQ'7'7RRHI I I I aeQ''1QYQrT!VQb(9(91b!QGH H H H }--Aq!Q1q!Qi!Q00QqS!A#!)QqS!A#4NNNNNq!QlQF33qS!A#!)QqS!A#!)<= = = = q!fq!Qi00&1ay1a&99: : : : 966666777
9CCCCDDDDDr2   c                  L	   t          g g           g k    sJ t          g t          dd          g          g k    sJ t          dt          dz  dz  z   gt          dd          g          dt          dz  dz  z   gk    sJ dt          dd          t          d          dd	t          z  z   g} g d
}dt          dz  dz  z   ddt          z  z   dt          dd          dg}t          | |          dt          dd          ddt          d          z  z   dt          d          z  dz   dt          z  z   dt          dd          ddt          d          z  z   dt          d          z  t          dd          z   dt          z  z   gk    sJ t          ||          ddt          z  z   dd t          z  z   d!t          d"z  dz  z   t          d#d          t          d$z  dz  z   d%t          d&z  dz  z   d't          d(z  dz  z   d)t          d*z  dz  z   t          d+d          d,t          z  z   gk    sJ t          | |          t          ||           k    sJ t          ||d d-                   ddt          z  z   dd t          z  z   d!t          d"z  dz  z   t          d#d          t          d$z  dz  z   d.t          d&z  dz  z   d/t          d(z  dz  z   d0t          d*z  dz  z   t          d1d          d,t          z  z   gk    sJ t          | |d d-                   dt          dz  dz  z   t          d2d          t          d3z  d4z  z   dd5t          d          z  z   dt          d          z  t          z  dz  z   d6d7t          d          z  dz  z   dt          d          z  t          z  z   t          d8z  dz  z   gk    sJ t	          d9          \  }}}t          ||g|g          z  |z  |z  z   ||z  z   |z  ||z  gk    sJ t          ||g|g          |z  z  ||z  z   |z  z   ||z  |z  |z  z   z  z   gk    sJ t          |g|g          t          |g|g          k    sJ t          t          fd:           t          t          fd;           d S )<Nr   r   r4   r   r   r   r   r    r   )B   Q   _   1   %   Y   r   r   H   rI   r   r   ig  r         i  i;
  r   i  r   6   r   i5  i     ,   i<  i)  i     i  iy  i%  J   iV  ik  i})  rJ   i|` i  r!   o   i%  i  i7[  iS  i  r   rG   imi  ir1  r   c                  $    t                     S r   )r   r   s   r/   r0   z'test_covering_product.<locals>.<lambda>Q  r   r2   c                  @    t          t          dd                     S r   )r   r   r   s   r/   r0   z'test_covering_product.<locals>.<lambda>R  s    .x1~~qAA r2   )r   r   r
   r   r	   r   rO   r   s	         @@@r/   test_covering_productr   )  s7   B##r))))B!Q 011R7777Q1QYK(1a..)9::q1Q3q5ykIIII	
HQNNDGGQ1W-A$$$A	
QqSUBAIq(1b//26AAq!!b(4*;*;R#d1gg+=M(+DGGd(:T!V(CR(0a(8(8"r$q''z/(*477
XdA5F5F(Fa(O&Q Q Q Q Q
 Aq!!cBqDj$q.(,quQw8J8JQuWUVY8V(,qtAvuqwqy7H(-"Q8K8KdSTf8T&V V V V V
 Aq!!%5a%;%;;;;;Aq"v&&3A:teAg~)-#a%9K9KaPUgVWi9W),qtAvtagai7G),qtAvxr7J7JTRSV7S+U U U U U
 Aq"v&&1qs1u9$S!,,qvby8!baj.1TRSWW9UV;WX=:X 3tAww;r>1BtAwwJqL@1U72:M+O O O O O }--Aq!Q1Q1I1v..qS!A#!)ac/1Q3!<= = = = Q1aL1a&11qS!A#!)ac/1Q3!ac	AaCHI I I I QFQ1I..$aAYA778 8 8 8 944444555
9AAAABBBBBr2   c            	         t          g g           g k    sJ t          g t          dd          g          g k    sJ t          dt          dz  dz  z   gt          dd          g          dt          dz  dz  z   gk    sJ dt          d          t          dd          dt          z  z   ddt          z  z   g} g d	}dt          dz  dz  z   dd
t          z  z   dt          dd          dg}t          | |          dt          d          z  t          dd          z   dt          z  z   dt          d          z  dz   dt          z  z   t          dd          dt          z  z   ddt          z  z   ddddgk    sJ t          ||          t          dd          t          dz  dz  z   t          dd          dt          z  z   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 z  dz  z   t          d!d          d"t          z  z   t          d#d          t          d$d          ddddgk    sJ t          | |d d%                   t          d&d          d't          d          z  z   dt          d          z  t          z  dz  z   t          d(z  d)z  z   d*dt          d          z  z   d
t          d          z  t          z  z   d+t          z  z   t          d,d          d-t          z  z   dgk    sJ t	          d.          \  }}}t          ||g|g          z  |z  z   |z  z   |z  z   ||z  z   ||z  ddgk    sJ t          ||g|g          |z  z  z   ||z  z   ||z  z   |z  z   |z  z   |z  z  z   ddgk    sJ t          |g|g          t          |g|g          k    sJ t          t          fd/           t          t          fd0           d S )1Nr   r   r4   r   r   r   r   r    )r   r   r   r~   $   O   rv   r   r   ru      iC  i^     i  i  iI  i@  r   iP  r   i) i1%  iE  iB  i@K  i6  r!   i  i!  i2  i  i,     rG   i  r   ir      r   r   c                  $    t                     S r   )r   r   s   r/   r0   z+test_intersecting_product.<locals>.<lambda>x  s    21a88 r2   c                  @    t           t          dd                    S )Nr    r   )r   r   r   s   r/   r0   z+test_intersecting_product.<locals>.<lambda>y  s    21hq!nnEE r2   )r   r   r
   r   r	   r   rO   r   s	         @@@r/   test_intersecting_productr   U  s   B''2----Xa^^$455;;;;QqSUhq!nn-=>>1qs1u9+MMMM	
DGGXa^^ac)1qs73A$$$A	
QqSUA!GQB4A1%%#d1gg+q8I8I*IDQRF*R #DGGc 1CE 98C;K;KdSTf;T #c!eQ1a*9 9 9 9 9  1%%(62*>*>4*I##d1f,hub.A.A8CQSCTCTVZ\]_`bc*e e e e e  1%%)=a)C)CCCCC!""q"v..8E23F3F4PQ3QUB''$q&0(5"2E2ExPSUWGXGXZ[]^`acd3f f f f f  1SbS6**c1%%477
2QtAwwYq[]BQtVBYN!DGG)OaQik1BqD8(3:J:JRPQT:QSTVV V V V }--Aq!Q1Aq	Aq622qS1Q3Y1_qs2QqS8!A#q!DE E E E  Aq!q!f551qsQqS1Q3.14qs:AaC!A#Iq!LM M M M  AAq	22(!QQF;;< < < < 988888999
9EEEEFFFFFr2   c                     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    sJ 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   rS   rT   rt   rx   r   ry   )rG   r   r   )r   r4   r   )iU   r}   ir{   rz   )r   r   r   r!   )r   r   r!   r   )r   r   r   r   r   r   )ir   r   r   ir   rL   W   )	r   r4   r   r   iY  rz   iii)iWiiii2iie  i  i  iyiK  i֗  im  i  ii)r   re   r2   r/   test_convolution_intr   |  s\   A3$$++++Aq6A3''A3....999iii004G4G4GGGGGA3			**iii7777Aq6999--@@@@>>>:::66:T:T:TTTTT===---88<O<O<OOOOO***,,, 
: 
: 
:: : : : : :r2   N)#sympy.core.numbersr   r   r   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   
sympy.corer   r	   r
   sympy.discrete.convolutionsr   r   r   r   r   r   r   r   sympy.testing.pytestr   	sympy.abcr   r   rQ   ro   r   r   r   r   r   r   r   re   r2   r/   <module>r      s   0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 9 9 9 9 9 9 $ $ $ $ $ $ $ $ $ $                    ( ' ' ' ' '        22 22 22j\L \L \L~@ @ @<8 8 86'< '< '<T#E #E #EL)C )C )CX$G $G $GN: : : : :r2   