§
    OŠtjÀE  ã                   óÀ   — 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   €€€úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/discrete/tests/test_convolutions.pyú<lambda>z"test_convolution.<locals>.<lambda>"   ó   ø€ �k¨!¨Q°A¸QÐ?Ñ?Ô?€ ó    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¨!¨Q°A¸dÐCÑCÔC€ r2   c                  ó*   •— t          ‰ ‰‰d¬¦  «        S ©NT)r'   r5   r*   )r,   r-   Úps   €€€r/   r0   z"test_convolution.<locals>.<lambda>)   ó   ø€ �k¨!¨Q°aÀÐ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¨!¨Q°tÀDÐ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¨!¨Q°tÀÐ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¨!¨Q°tÀ1Ð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ï  øøøøøø€ à	
�H�Q˜‰NŒN�D ™GœG¥X¨a°¡^¤^Ð4€AØÐÐ€AØˆˆ€AØ Ð Ð €AØ	�X�a˜‰^Œ^�X a¨™^œ^Ð,€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˜!˜A˜B˜Bœ% QÐ'Ñ'Ô'­?¸1¸Q¸R¸R¼5À!ÈÐ+KÑ+KÔ+KÒKÐKÐKÐKð 	€AØ€Aõ �q˜! 1Ð%Ñ%Ô%­¸¸AÀQÐ)GÑ)GÔ)GÒGÐGÐGÐGÝ�q˜! 1Ð%Ñ%Ô%­¸¸AÀQÐ)GÑ)GÔ)GÒGÐGÐGÐGÝ�q˜! 1Ð%Ñ%Ô%­¸¸AÀQÐ)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ð /ð /ò /ð /Ý˜˜1 T°%Ð8Ñ8Ô8ð/ð /ò /ð /å˜A˜q¨Ð.Ñ.Ô.ò/ð /ð /ð /ð /ð /õ �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õ ˜�s˜Q˜CÑ Ô ¥O°Q°C¸!¸Ñ$=Ô$=Ò=Ð=Ð=Ð=Ý�q˜!ÑÔ¥°°1Ñ 5Ô 5Ò5Ð5Ð5Ð5õ �  1™œ�­°!°A©¬¨Ñ8Ô8½XÀaÈ¹^¼^Ð<LÒLÐLÐLÐLÝ�q˜!ÑÔ  R­°#°rÑ):Ô):½HÀRÈ¹O¼OÝ!)¨"¨a¡¤µ(¸2¸q±/´/Å8ÈCÐQSÑCTÔCTÝ!)¨"¨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   iíT i\g  i9w  iL,  iu+  iÀ  iE  i8  r4   iÑN  iÀN  i¤  i;  é/   é   ií  i@  i¬  iÁ	  iÜ  i		  i;Q é   iž¤  iu‘„i°‚  iµÝ  iº²  i'™ r%   )r'   rV   r&   )é`   iúB  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   çJE8ÖJì   ×uR!å ì   pj$)rB   rV   )l   ^÷tBì   �XO¥ éŠÀÀr_   r`   ì   ¹X™r¸l   	ê)l   @0©o¥ 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   € �{¨9¨9¨9°i°i°iÀrÐ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	  € à	
�H�Q˜‰NŒN�D ™GœG¥X¨a°¡^¤^Ð4€AØÐÐ€Aå�y�y�y ) ) )°1Ð5Ñ5Ô5Ý˜	˜	˜	 9 9 9°AÐ6Ñ6Ô6ð2ð 2ò 2ð 2å˜I˜I˜I y y yÑ1Ô1ò2ð 2ð 2ð 2ð 2ð 2õ �y�y�y ) ) )°1Ð5Ñ5Ô5¸¸¸ÒEÐEÐEÐEå	�!�Q‰Œ� ! Q™œ­°!°Q©¬½À!ÀQ¹¼ÍÐRSÐUVÉÌÐX€AÝ	�!�Q‰Œ� ! Q™œ­°!°Q©¬½À!ÀQ¹¼ÐH€Aå�q˜! 1Ð%Ñ%Ô%Ý˜˜1¥C¨¡F¤F­S°©V¬V¡O°aÑ$7Ð8Ñ8Ô8ò9ð 9ð 9ð 9õ �q˜! 1Ð%Ñ%Ô%­(°5¸%Ñ*@Ô*@Å(È5ÐRWÑBXÔBXÝ$ U¨DÑ1Ô1µ8¸DÀ$Ñ3GÔ3Gð*Iò Ið Ið Ið Iõ �q˜! 1Ð%Ñ%Ô%­(°5¸%Ñ*@Ô*@Å(È3ÐPSÑBTÔBTÕV^Ð_aÐceÑVfÔVfÝ$ T¨4Ñ0Ô0µ(¸5À$Ñ2GÔ2GÍÐRVÐX\ÑI]ÔI]ð*_ò _ð _ð _ð _õ �q˜! 1Ð%Ñ%Ô%Ý˜A˜q¨Ð*Ñ*Ô*­a¬f¨XÑ5ò6ð 6ð 6ð 6ð 
ˆw�˜$™œ ¨Ð1€AÝ	
ˆ5‰Œ�5˜% Ð(€Aå�q˜! <°qÐ9Ñ9Ô9Ý˜˜1 L¸Ð:Ñ:Ô:ð6ð 6ò 6ð 6å˜A˜q¨Ð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Ý˜˜1 LÐ1Ñ1Ô1°Q°CÑ7ò8ð 8ð 8ð 8õ ˜KÑ(Ô(�M€A€qˆ!ˆQ�Ý˜KÑ(Ô(�M€A€qˆ!ˆQ�Ø	
ˆAˆq�!�Qˆ€AØ	
ˆAˆq�!�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Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.°°1±Ñ4Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.ð0ò0ð 0ð 0ð 0õ �q˜! D°Ð2Ñ2Ô2Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.°°1±Ñ4Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"Øˆq‰S�1�Q‘3‰YØˆq‰S�1�Q‘3‰Yðòð ð ð õ �q˜! D°Ð2Ñ2Ô2ð 72ð 72ð 72ò 2ð 2ð 2ð 2õ �q˜˜˜”u˜a¨°AÐ6Ñ6Ô6ØEÐEÐEòFð Fð Fð Fõ �q˜!˜C˜R˜Cœ&¨°QÐ7Ñ7Ô7ð <Qð <Qð <Qò Qð Qð Qð Qõ �q˜! D°Ð2Ñ2Ô2Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.°°1±Ñ4Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ" Q q¡SÑ(¨1¨Q©3Ñ.Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"ð$ò$ð $ð $ð $õ
 �q˜! D°Ð2Ñ2Ô2Øˆq‰S�1�Q‘3‰Y˜˜1™‰_Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"Øˆq‰S�1�Q‘3‰Y˜˜1™‰_˜q ™sÑ"Øˆq‰S�1�Q‘3‰Yð	òð ð ð õ �:Ð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ÐY°qÈyÐYÐYÈ!�˜r 1¨!Ð,Ñ,Ô,°Ò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   iÚÿÿÿét   é:   i  é¯   r4   r    rz   rK   rY   é   é-   r   é   iØ  i_7  i  i±  rI   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                  ó6   — t          t          t          ¦  «        S ©N©r   r   r   re   r2   r/   r0   z&test_convolution_fft.<locals>.<lambda>º   s   € �o­aµÑ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   € �µµ1¨v½½1°vÑ>Ô>€ r2   )Úallr   r
   r   r   r   r   r   r   rO   rh   re   r2   r/   Útest_convolution_fftrŠ       s6  € ÝÐYÐY¸RÀ!À¸IÐYÑYÔYÑYÔYÐYÐYÐYÝ˜9˜9˜9 i i iÑ0Ô0Ð4GÐ4GÐ4GÒGÐGÐGÐGÝ˜A˜3 	 	 	Ñ*Ô*¨i¨i¨iÒ7Ð7Ð7Ð7Ý˜A˜q˜6 9 9 9Ñ-Ô-°°°Ò@Ð@Ð@Ð@å˜A ¥!¡™G˜9 q¨1­Q©3¡w iÑ0Ô0°R¸!½A¹#±X°JÒ>Ð>Ð>Ð>Ý˜A ¥!¡™G Q¨­1©¡W¨a°!µA±#°a±%©iÐ8½8ÀAÀq¹>¼>ÈAÍaÉCÐPQÉEÑ;QÐ:RÑSÔSÝ�c˜2ÑÔ¥ 2¡ b¡Ñ(­(°3¸Ñ*;Ô*;½aÀ¹eÀB¹hÑ*FÍÐQSÐUWÑHXÔHXÕ[\Ð]`Ñ[`ÐadÑ[dÑHdÐeòfð fð fð fõ �H Q¨™NœN­H°Q¸©N¬NÐ;½hÀqÈ!¹n¼nÍhÐWXÐZ[ÉnÌnÕ^fÐghÐjkÑ^lÔ^lÐ=mÑnÔnÝ%-¨b°"Ñ%5Ô%5µxÀÀBÑ7GÔ7GÍÐRTÐVXÑIYÔIYÕ[cÐdeÐghÑ[iÔ[iÐ$jòkð kð kð kõ �H Q¨™NœN­H°Q¸©N¬N½HÀQÈ¹N¼NÐKÍhÐWXÐZ[ÉnÌnÕ^fÐghÐjkÑ^lÔ^lÕnvÐwxÐz{Ñn|Ôn|ÐM}Ñ~Ô~Ý!)¨!¨R¡¤µ(¸2¸rÑ2BÔ2BÅHÈTÐSXÑDYÔDYÕ[cÐdgÐilÑ[mÔ[mÕowÐxyÐ{}Ño~Ôo~Ð ò@ð @ð @ð @õ �B¥¥4¨¡7¤7Ð+­d°1©g¬g°q½±t¸Q½q¹SÐ-AÑBÔBÝ˜!‘W”W�R‘Z ¥T¨!¡W¤W­Q¡Y¡µµ"±µr½#¸b¹'¼'±zÑ0AÅDÈÁGÄGÑ0KÝ,0°©G¬GµB©J¸©N½DÀ¹G¼GÅCÈÁGÄG¹OðMòMð Mð Mð Mõ ˜D %˜=Ð*=Ð*=Ð*=Ñ>Ô>ØDÐDÐDòEð Eð Eð Eõ ˜F HÐ-°¸&Ð/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   øè è € Ð[Ð[¸ÐRSÐUVÐXYÐQZÐ[Ð[ÈA�˜r 1¨AÐ.Ñ.Ô.°"Ò4Ð[Ð[Ð[Ð[Ð[Ð[Ð[r2   r   r   r   r4   r   r    é   )iy}  i ¤  iv  i‘  )i„}  r[   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Ž   é   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   ø€ �°°1¨v¸¸1°v¸qÑ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   ø€ �µµ1¨v½½1°v¸qÑAÔA€ r2   c                  ó:   •— t          t          t          ‰ ¦  «        S r†   r˜   )r;   s   €r/   r0   z&test_convolution_ntt.<locals>.<lambda>Ö   s   ø€ �o­aµ°AÑ6Ô6€ r2   )r‰   r   r   rh   rO   )r;   r.   rl   s   @@@r/   Útest_convolution_nttrš   ¾   s  øøø€ ð 	€AØ€AØ€Aõ Ð[Ð[Ð[Ð[Ð[Ð[¸rÀAÀ3¸iÐ[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ý˜A˜3   QÑ'Ô'¨A¨3Ò.Ð.Ð.Ð.Ý˜A˜q˜6 A 3¨Ñ*Ô*¨q°"¨gÒ5Ð5Ð5Ð5åÐ5Ð5Ð5Ð7KÐ7KÐ7KÈQÑOÔOð TZð TZð TZò Zð Zð Zð ZåÐ:Ð:Ð:Ð<VÐ<VÐ<VÐXYÑZÔZØ0ZÐ0ZÐ0Zò[ð [ð [ð [õ Ð/Ð/Ð/°°°À!ÑDÔDÝ#Ð$8Ð$8Ð$8¸/¸/¸/È1ÑMÔMòNð Nð Nð NåÐ/Ð/Ð/Ð1EÐ1EÐ1EÀqÑIÔIÝ#Ð$8Ð$8Ð$8Ð:NÐ:NÐ:NÐPQÑ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µ  é[   iÊÿÿÿi%  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°©s°A¸±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  Ñ$Ô$¨Ò*Ð*Ð*Ð*Ý˜I˜I˜I y y yÑ1Ô1Ð5EÐ5EÐ5EÒEÐEÐEÐEå�X a¨™^œ^­X°a¸©^¬^½XÀaÈ¹^¼^ÐLÈqÐRSÕU]Ð^_ÐabÑUcÔUcÐNdÑeÔeÝ%-¨b°!¡_¤_µh¸rÀ2Ñ6FÔ6FÍÐQTÐVYÑHZÔHZÕ\dÐehÐjlÑ\mÔ\mÐ$nòoð oð oð oð 
�H�Q˜‰NŒN�D ™GœG¥X¨a°¡^¤^°Q¸½1¹±WÐ=€AØ$Ð$Ð$€AØ	
ˆQ�q‰S‰�!�a�‘c‘'˜1�h q¨!™nœn¨aÐ0€Aå˜A˜qÑ!Ô! b­¨a©¬¡j°3Ñ&6¸½Q¹Ñ&>Ø$&¥t¨A¡w¤w¡Jµ¸$ÀÑ1CÔ1CÑ$CÀcÍ!ÁeÑ$KØ$&¥t¨A¡w¤w¡Jµ¸$ÀÑ1BÔ1BÑ$BÀRÍÁTÑ$IØ$&¥t¨A¡w¤w¡Jµ¸$ÀÑ1CÔ1CÑ$CØ$&¥t¨A¡w¤w¡J°Ñ$4°s½1±uÑ$<Ý$,¨T°2Ñ$6Ô$6¸½Q¹Ñ$>Ø$&¥t¨A¡w¤w¡Jµ¸$ÀÑ1BÔ1BÑ$BÀSÍÁUÑ$JØ$&¥t¨A¡w¤w¡Jµ¸$ÀÑ1CÔ1CÑ$CÀcÍ!ÁeÑ$Kð&Mò Mð Mð Mð Mõ ˜A˜qÑ!Ô!¥h¨t°QÑ&7Ô&7¸#½a¹%Ñ&?ÅÈ$ÐPQÑARÔARÐUXÕYZÑUZÑAZÝ��qÑÔ˜C¥™EÑ!¥8¨D°!Ñ#4Ô#4°s½1±uÑ#<¸dÀSÍÁU¹lÍHÐUYÐ[\ÑL]ÔL]Ð`cÕdeÑ`eÑLeÝ��qÑÔ˜B�q™DÑ ¥(¨4°Ñ"3Ô"3°b½±dÑ":ð&<ò <ð <ð <ð <õ ˜A˜a˜b˜bœE 1Ñ%Ô%­(°3¸Ñ*:Ô*:½Q¸s¹UÀ1¹WÑ*DÀbÍ1ÈSÉ5ÐQRÉ7ÁlÝ�S˜"ÑÔ¥ "¡ Q¡Ñ&­°°bÑ(9Ô(9¸B½q¹DÑ(@Å(È2ÈqÁ/Ä/ÐSUÐXZÕ[\ÑX\ÑS\Ð^_Ðabð*dò dð dð dð dõ ˜}Ñ-Ô-Ñ€A€qˆ!ˆQ��1å˜Q ˜F Q¨ FÑ+Ô+°°!±°a¸±c±	¸1¸Q¹3ÀÀ1Á¹9Ð/EÒEÐEÐEÐEå˜Q  1˜I¨¨1 vÑ.Ô.Ø	
ˆ1‰ˆq�‰s‰�A�a‘C˜!˜A™#‘I˜q ™s A a¡CÐ(ò)ð )ð )ð )õ ˜Q  1˜I¨¨1¨a yÑ1Ô1Ø	
ˆ1‰ˆq�‰s‰�Q�q‘S‰˜!˜A™#  !¡™) Q q¡S¨1¨Q©3¡Y°°!±°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 "Ñ%Ô%¨Ò+Ð+Ð+Ð+Ý˜b¥8¨A¨q¡>¤>Ð"2Ñ3Ô3°rÒ9Ð9Ð9Ð9Ý˜q¥1 Q¡3 q¡5™y˜k­H°Q¸©N¬NÐ+;Ñ<Ô<ÀÅQÀqÁSÈÁUÁÀÒKÐKÐKÐKà	
�H�Q˜‰NŒN�D ™GœG Q¨­1©¡WÐ-€AØ$Ð$Ð$€AØ	
�Qˆq‰S�‰U‰�A˜�!™‘G˜Q¥¨¨A¡¤°Ð2€Aå˜a Ñ#Ô#¨­H°S¸!Ñ,<Ô,<¸bÀ2ÅdÈ1ÁgÄgÁ:¹oØ(*­4°©7¬7©
µX¸dÀAÑ5FÔ5FÑ(FÈÍQÉÑ(NÐPRÐTVØ(*¨Rµ°Q±´©Z©¸½DÀ¹G¼G¹ÀcÑ9IÈCÕPQÉEÑ9Qð(Sò Sð Sð Sð Sõ ˜a Ñ#Ô#¨­a°©e°A©g©°s½Q¸t¹VÀA¹X±~Ø(+­a°©e°A©g©µxÀÀaÑ7HÔ7HÍ1ÈTÉ6ÐRSÉ8Ñ7SØ(+¨bµ©d©
°C½!¸C¹%À¹'±MØ(+¨bµ©d©
µH¸TÀ1Ñ4EÔ4EÈÍAÉÑ4Mð(Oò Oð Oð Oð Oõ
 ˜a Ñ#Ô#Õ'9¸!¸QÑ'?Ô'?Ò?Ð?Ð?Ð?Ý˜a   œe QÑ'Ô'Ø•˜#˜qÑ!Ô! 2¥x°°QÑ'7Ô'7¸¸RÀÀRÐHòIð Ið Ið Iõ ˜a   œe QÑ'Ô'Ø•�1‘�Q‘‰Y˜�Q˜r™T !™V™ Q­°°bÑ(9Ô(9¸1¸bÀ!ÀQÐGòHð Hð Hð Hõ ˜}Ñ-Ô-Ñ€A€qˆ!ˆQ��1å˜q ! Q˜i¨!¨Q¨Ñ0Ô0°Q°q±S¸!¸A¹#ÀÀ!Á¹)ÀQÀqÁSÈ!ÈAÉ#Ð4NÒNÐNÐNÐNÝ˜q ! Q¨˜l¨Q°¨FÑ3Ô3Ø˜q™S ! A¡#¨¨!©¡)¨Q¨q©S°!°A±#¸¸!¹±)Ð<ò=ð =ð =ð =õ ˜q !˜f q¨!¨Q iÑ0Ô0Ý&¨¨1¨a y°1°a°&Ñ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¼¦  iây  i%  éJ   i“V  ik  i})  rJ   i|` iÈ  r!   éo   i%  i­  i7[  iS  i�  rŽ   rG   imþÿÿi  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Ô1°RÒ7Ð7Ð7Ð7Ý˜Q¥ 1¡ Q¡™Y˜K­(°1°a©.¬.Ð)9Ñ:Ô:¸qÅ1ÀQÁ3ÀqÁ5¹y¸kÒIÐIÐIÐIà	
�H�Q˜‰NŒN�D ™GœG Q¨­1©¡WÐ-€AØ$Ð$Ð$€AØ	
�Qˆq‰S�‰U‰�B˜�A™‘I˜q¥(¨1¨b¡/¤/°2Ð6€Aå˜A˜qÑ!Ô! b­(°4¸Ñ*;Ô*;¸RÀ#ÅdÈ1ÁgÄgÁ+Ñ=MØ(+­D°©G¬G©°dÑ(:¸TÅ!¹VÑ(CÀRÝ(0°°aÑ(8Ô(8¸"¸rÅ$ÀqÁ'Ä'¹z¹/Ø(*­4°©7¬7©
µX¸dÀAÑ5FÔ5FÑ(FÈÍaÉÑ(Oð&Qò Qð Qð Qð Qõ
 ˜A˜qÑ!Ô! c¨B­q©D¡j°$¸½q¹±.Ø(,­q°©u°Q©w©½ÀÈÑ8JÔ8JÍQÈuÉWÐUVÉYÑ8VØ(,­q°©t°A©v©°u½qÀ¹wÀq¹yÑ7HØ(-µ°"±°Q±©½ÀÈÑ8KÔ8KÈdÕSTÉfÑ8Tð&Vò Vð Vð Vð Võ
 ˜A˜qÑ!Ô!Õ%5°a¸Ñ%;Ô%;Ò;Ð;Ð;Ð;Ý˜A˜q  " œvÑ&Ô&¨3°µA±©:°t¸eÅA¹g±~Ø)-µ°#±°a±©½À%ÈÑ9KÔ9KÍaÐPUÉgÐVWÉiÑ9WØ),­q°©t°A©v©°t½aÀ¹gÀa¹iÑ7GØ),­q°©t°A©v©µxÀÀrÑ7JÔ7JÈTÕRSÉVÑ7Sð+Uò Uð Uð Uð Uõ
 ˜A˜q  " œvÑ&Ô&¨1­q°©s°1©u©9Ý$ S¨!Ñ,Ô,­q°©v°b©yÑ8¸!¸bÅÀaÁÄ¹j¹.È1ÍTÐRSÉWÌWÉ9ÕUVÉ;ÐWXÉ=Ñ:XØ  3¥t¨A¡w¤w¡;¨r¡>Ñ1°Bµt¸A±w´w±J½q±LÑ@Å1ÀUÁ7È2Á:ÑMð+Oò Oð Oð Oð Oõ ˜}Ñ-Ô-Ñ€A€qˆ!ˆQ��1å˜Q  1˜I¨¨1 vÑ.Ô.Ø˜q™S ! A¡#¨¨!©¡)¨a°©c¡/°1°Q±3¸¸!¹Ð<ò=ð =ð =ð =õ ˜Q  1 a˜L¨1¨a¨&Ñ1Ô1Ø˜q™S ! A¡#¨¨!©¡)¨a°©c¡/°1°Q±3¸¸!¹¸aÀ¹c¹	ÀAÀaÁC¹ÐHòIð Ið Ið Iõ ˜Q ˜F Q¨¨1 IÑ.Ô.Ý$ a¨¨A Y°°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%  iœE  iB  i@K  i6  r!   iý  i®!  i2  i€  iô,  éü   éþÿÿÿé�ÿÿÿrG   iÍ  r­   iÕÿÿÿr·   éõ   r»   r®   c                  ó$   •— t          ‰ ‰¦  «        S r†   )r   rÆ   s   €€r/   r0   z+test_intersecting_product.<locals>.<lambda>x  s   ø€ Õ2°1°aÑ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   ø€ Õ2°1µh¸qÀ!±n´nÑEÔE€ r2   )r   r   r
   r   r	   r   rO   rÊ   s	         @@@r/   Útest_intersecting_productrê   U  sî  øøø€ Ý  BÑ'Ô'¨2Ò-Ð-Ð-Ð-Ý ¥X¨a°¡^¤^Ð$4Ñ5Ô5¸Ò;Ð;Ð;Ð;Ý ¥Q q¡S¨¡U¡ ­h°q¸!©n¬nÐ-=Ñ>Ô>À1ÅqÈÁsÈ1ÁuÁ9À+ÒMÐMÐMÐMà	
�D�‰GŒG•X˜a ‘^”^ a­¡cÑ)¨1¨qµ©s©7Ð3€AØ$Ð$Ð$€AØ	
�Qˆq‰S�‰U‰�A˜�!™‘G˜Q¥¨¨B¡¤°Ð4€Aå  1Ñ%Ô%¨#­d°1©g¬g©+½ÀÀqÑ8IÔ8IÑ*IÈDÕQRÉFÑ*RØ #¥D¨¡G¤G¡¨cÑ 1°C½±EÑ 9½8ÀCÈÑ;KÔ;KÈdÕSTÉfÑ;TØ # c­!¡e¡¨Q°°1°að*9ò 9ð 9ð 9ð 9õ    1Ñ%Ô%­(°6¸2Ñ*>Ô*>ÅÀ4ÁÈÁÑ*IÝ˜ Ñ#Ô# d­1¡fÑ,­h°u¸bÑ.AÔ.AÅ8ÈCÐQSÑCTÔCTÐVZÐ\]Ð_`Ðbcð*eò eð eð eð eõ    1Ñ%Ô%Õ)=¸aÀÑ)CÔ)CÒCÐCÐCÐCÝ  ! " "¤ q¨¨"¨¤vÑ.Ô.µ8¸EÀ2Ñ3FÔ3FÍÈ4ÉÐPQÉÑ3QÝ˜U BÑ'Ô'¨$­q©&Ñ0µ(¸5À"Ñ2EÔ2EÅxÐPSÐUWÑGXÔGXÐZ[Ð]^Ð`aÐcdð3fò fð fð fð fõ    1 S b S¤6Ñ*Ô*Ý˜c 1Ñ%Ô%¨­4°©7¬7©
Ñ2°Qµt¸A±w´w±Y½q±[À±]ÑBÅQÀtÁVÈBÁYÑNØ˜!�D ™GœG™)‘O a­¨Q©¬¡iµ¡kÑ1°Bµq±DÑ8½(À3ÈÑ:JÔ:JÈRÕPQÉTÑ:QÐSTðVòVð Vð Vð Võ ˜}Ñ-Ô-Ñ€A€qˆ!ˆQ��1å  A q 	¨A¨q¨6Ñ2Ô2Ø˜q™S 1 Q¡3™Y¨¨1©™_¨q°©sÑ2°Q°q±SÑ8¸!¸A¹#¸qÀ!ÐDòEð Eð Eð Eõ    A q¨! ¨q°!¨fÑ5Ô5Ø˜1™˜q ™s™ Q q¡S™¨1¨Q©3Ñ.°°1±Ñ4°q¸±sÑ:¸A¸a¹CÀ!ÀAÁ#¹IÀqÈ!ÐLòMð Mð Mð Mõ    A ¨¨A¨q¨	Ñ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   )iÎÿÿÿéU   r}   iÔÿÿÿr{   rz   )r   r   r   r!   )r   r   r!   r   )r   r   r   rå   r   r   )i«þÿÿrì   r   r   i¹ÿÿÿræ   rL   éW   )	r   r4   r   rŽ   iY  rz   i²ÿÿÿiùÿÿÿi§ÿÿÿ)iWùÿÿié÷ÿÿi”öÿÿiöïÿÿií2þÿiÒÙÿÿiŽe  i¥  i…  ióyÿÿiK  iÖ—  im  i¼  i¬îÿÿiÁáÿÿ)r   re   r2   r/   Útest_convolution_intrï   |  s\  € Ý˜A˜3  Ñ$Ô$¨¨Ò+Ð+Ð+Ð+Ý˜A˜q˜6 A 3Ñ'Ô'¨A¨3Ò.Ð.Ð.Ð.Ý˜9˜9˜9 i i iÑ0Ô0Ð4GÐ4GÐ4GÒGÐGÐGÐGÝ˜A˜3 	 	 	Ñ*Ô*¨i¨i¨iÒ7Ð7Ð7Ð7Ý˜A˜q˜6 9 9 9Ñ-Ô-°°°Ò@Ð@Ð@Ð@Ý˜>˜>˜>¨:¨:¨:Ñ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2ðj\Lð \Lð \Lð~@ð @ð @ð<8ð 8ð 8ð6'<ð '<ð '<ðT#Eð #Eð #EðL)Cð )Cð )CðX$Gð $Gð $GðN:ð :ð :ð :ð :r2   