U
    ZÊ¹j„$  ã                   @   sè   d dl mZ d dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZmZ dd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zedd„ ƒZ dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dS )é    )Úgcd)ÚSieveÚsieve)ÚmrÚ_lucas_extrastrong_paramsÚis_lucas_prpÚ	is_squareÚis_strong_lucas_prpÚis_extra_strong_lucas_prpÚ
proth_testÚisprimeÚis_euler_pseudoprimeÚis_gaussian_primeÚis_fermat_pseudoprimeÚis_euler_jacobi_pseudoprimeÚMERSENNE_PRIME_EXPONENTSÚ_lucas_lehmer_primality_testÚis_mersenne_prime)ÚslowÚraises)ÚIÚFloatc                   C   s    t ddƒst‚t ddƒst‚d S )Né   é   é	   )r   ÚAssertionError© r   r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/ntheory/tests/test_primetest.pyÚtest_is_fermat_pseudoprime   s    r   c                  C   s\  t ddƒst‚t ddƒst‚t ddƒs*t‚t ddƒs8t‚t dd	ƒsFt‚t d
dƒsTt‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ddddddddddddddddg} | D ]}t |d ƒs¦t‚q¦d!d"dd#d$d%d&d'd(dd)d*d+d,d-d.d/d0d1g} | D ]}t |d2ƒsèt‚qèddd+d3d4d5d6d7d8d9d:g}|D ]<}td |ƒD ]*}t||ƒdk�r@�q(t ||ƒ�s(t‚�q(�qd S );Né   r   é   é   é   ée   é   iñ  é
   i,  é)   c                   S   s
   t ddƒS )Nr   é   ©r   r   r   r   r   Ú<lambda>   ó    z)test_euler_pseudoprimes.<locals>.<lambda>c                   S   s
   t ddƒS )Né   r   r(   r   r   r   r   r)      r*   c                   S   s
   t ddƒS )Nr    r"   r(   r   r   r   r   r)      r*   éU  i1  iQ  iÁ  iq  éÿ  i¡	  éÍ  éÁ  éI  iU  iÉ  é�   i!!  i(  éY)  é   éy   é¿  éc  i  éÑ  iÕ  éÑ   éÏ"  és0  ia<  éá=  é“@  é!I  é‘K  éá[  iU`  iim  r+   iQ   iA¶  ia& iaz i1  i™ i)Ú i±u )r   r   r   Ú
ValueErrorÚranger   )Z	euler_prpÚpZabsolute_euler_prpÚar   r   r   Útest_euler_pseudoprimes   s\           ÿ        ÿ    ÿrD   c                   C   s    t ddƒst‚t ddƒst‚d S )Né   r   r    )r   r   r   r   r   r   Ú test_is_euler_jacobi_pseudoprime6   s    rF   c                   C   st   t dƒdkst‚t dƒdks t‚t dƒdks0t‚t dƒdks@t‚t dƒd	ksPt‚t d
ƒdks`t‚t dƒdkspt‚d S )Nr+   )r   r+   r   r   )é   r'   r   r$   r   )r   r   r   rE   )é   r   r   é;   )é    r"   r   iß  )éu   rE   r   )r   r   r   r   r   r   Útest_lucas_extrastrong_params;   s    rL   c                   C   sd   t dƒdkst‚t dƒdks t‚t dƒdks0t‚t dƒdks@t‚t dƒdksPt‚t dƒdks`t‚d S )	Nr'   FéÝ  Té}*  r   é   é©   )r
   r   r   r   r   r   Útest_is_extra_strong_lucas_prpE   s    rQ   c               :   C   s  dd„ t ddƒD ƒ} t| ƒdks$t‚dd„ | D ƒddd	d
ddddddddddddgksZt‚dd„ | D ƒddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.gksžt‚d/d„ | D ƒd0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d	d
d?d@dAdBdddCdDdEdFdGdHdIdJdKdLdMdNdOd&dPdQdRdSdTdUdVdWdXdYdZd[g1k�st‚td\d]„ | D ƒƒ�r0t‚d^d„ | D ƒd_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�d�d‘d’d“d”d•d–d—g9k�sºt‚d˜d„ | D ƒdddedhdmdpdrdtdudd‡d�d—gk�sêt‚d™d„ | D ƒdšd›dedhdœd�dždŸd|d‹dŒd�gk�st‚d S ) Nc                 S   s    g | ]}|d  rt |ƒs|‘qS ©r3   ©r   ©Ú.0Únr   r   r   Ú
<listcomp>O   s     ÿztest_prps.<locals>.<listcomp>r   é † i‰níyc                 S   s   g | ]}t |d gƒr|‘qS rR   ©r   rT   r   r   r   rW   S   s      r-   r.   r/   r0   r1   r;   i�r  i/§  iõ¿  i™Í  iÿ  i©# iÅ: iñM i%Y ib c                 S   s   g | ]}t |d gƒr|‘qS )r+   rY   rT   r   r   r   rW   V   s      r4   r5   r6   r7   r8   r9   r2   r:   r<   r=   r>   r?   i…{  iÿ¬  i]¸  i¡Ú  i£ö  ia# i›4 iQB iiW iýY i} c                 S   s   g | ]}t |d gƒr|‘qS )éE  rY   rT   r   r   r   rW   Z   s      r   é   é   é1   éA   éQ   rZ   r,   iW  i¹  iu  i  ie  i  iÑ  iM  iÉ  iu  i3  iq2  iÃ:  i•>  i1N  iõV  iµZ  iI`  iaa  ia|  i+Š  ig–  iÍ¨  i�¬  iyÃ  ieÚ  iáÚ  iYæ  iÑæ  i™ï  i¡ÿ  i× iÁ iù+ iI2 iwO c                 s   s   | ]}t |d gƒV  qdS )l   ©j¹_‹|™ NrY   rT   r   r   r   Ú	<genexpr>a   s     ztest_prps.<locals>.<genexpr>c                 S   s   g | ]}t |ƒr|‘qS r   )r   rT   r   r   r   rW   b   s      iC  iy  i‡  i%  ió  iS  i‘  io#  iÛ#  rN   i›,  i�-  i_6  i÷9  ií>  iS?  içG  iJ  icJ  iãW  io[  iù_  iob  ie  iÕe  i»j  i÷  iˆ  i‡‰  i“˜  i#™  i	›  iu�  iC¬  iƒ·  i»  iÄ  iË  iŸÑ  i×Û  i—ä  iÙë  i‰ù  i… iÅ i¿  iE% i£- i»6 i·7 i'D iÃI i/P i¯` iËq iûz iŸ| c                 S   s   g | ]}t |ƒr|‘qS r   )r	   rT   r   r   r   rW   j   s      c                 S   s   g | ]}t |ƒr|‘qS r   )r
   rT   r   r   r   rW   m   s      rM   i§  iCm  iñs  ix  i�{  )rA   Úsumr   Úany)Zoddcompositesr   r   r   Ú	test_prpsM   sr                 þ
                    ý
                                           ú                                                  ù          þ          þÿrc   c                     s€   ddddddddd	d
dddddddddg} ddddddddg}t dƒD ]4‰ ˆ | krhtˆ ƒˆ |kkszt‚qFtt‡ fdd„ƒ qFd S )Nr+   r   r   r   r!   r[   é!   r&   r]   é9   r^   r_   éa   éq   é�   é‘   é¡   é±   éÁ   éÈ   c                      s   t ˆ ƒS )N)r   r   ©rV   r   r   r)   ~   r*   z!test_proth_test.<locals>.<lambda>)rA   r   r   r   r@   )ZA080075ZA080076r   rn   r   Útest_proth_tests   s           ÿro   c                  C   s*   t  dd¡D ]} t| ƒ| tkkst‚qd S )Nr+   éd   )r   Ú
primeranger   r   r   )rB   r   r   r   Ú test_lucas_lehmer_primality_test�   s    rr   c                   C   st   t dƒdkst‚t dƒdks t‚t dƒdks0t‚t dƒdks@t‚t dƒdksPt‚t dƒdks`t‚t d	ƒdkspt‚d S )
NéýÿÿÿFr+   Tr%   é   iÿ  iÿÿ iÿÿÿ)r   r   r   r   r   r   Útest_is_mersenne_prime†   s    ru   c                  C   sâ  t ƒ } |  d¡ t|  dd¡ƒ}tdƒD ]}||kt|ƒks(t‚q(tdƒsNt‚tdƒsZt‚tdƒsft‚tdƒsrt‚tdƒs~t‚td	ƒsŠt‚td
ƒs–t‚tdƒs¢t‚tdƒs®t‚ttdƒƒs¾t‚tdƒsÊt‚tdd d ƒsÞt‚tdd d ƒsòt‚tdd d ƒ�rt‚tdƒ�rt‚tdƒ�r$t‚tdƒ�r2t‚tdƒ�r@t‚tdƒ�rNt‚tdƒ�r\t‚tdƒ�rjt‚tdƒ�rxt‚ttdƒƒ�rŠt‚ttdƒƒ�rœt‚t d¡ tdƒ�s´t‚tdƒ�rÂt‚t	t
d d!„ ƒ t	t
d"d!„ ƒ d S )#NrX   r3   i¡† i¡Í±
l   ©{! l   ­\)l   yW-ƒ	l   GP‘F´Qw8 l   Ï­XƒFqíb l   ÕI’iß|Á	3mV&> l   å:_s½h1Ú•S3b l	   #–�:�gWj#0¶[µÎ z¸
531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127l   ÿÿÿÿ éY   r   i_  iY  l   ;n>Ôl   ßp¤l   ÁHe%�Z	 l   ûy5�D¬( l   --‰	l   qŽ.�;ðm l   å7yç_@I®7 l   …k$¯9úH©"úYÇaR  
8038374574536394912570796143419421081388376882875581458374889175222974273765333652186502336163960045457915042023603208766569966760987284043965408232928738791850869166857328267761771029389697739470167082304286871099974399765441448453411558724506334092790222752962294149842306881685404326457534018329786111298960644845216191652872597534901aŽ  
2887148238050771212671429597130393991977609459279722700926516024197432303799152733116328983144639225941977803110929349655578418949441740933805615113979999421542416933972905423711002751042080134966731755152859226962916775325475044445856101949404200039904432116776619949629539250452698719329070373564032273701278453899126120309244841494728976885406024976768122077071687938121709811322297802059565867i¸  i  is  c                   S   s   t dƒS )Ng       @rS   r   r   r   r   r)   Ô   r*   ztest_isprime.<locals>.<lambda>c                   S   s   t tdƒƒS )Nr3   )r   r   r   r   r   r   r)   Õ   r*   )r   ÚextendÚsetrq   rA   r   r   Úintr   r   r@   )ÚsZpsrV   r   r   r   Útest_isprime�   sD    

r{   c                   C   sd   dd„ t dƒD ƒdddddgks$t‚td	ƒr0t‚td
ƒr<t‚tdƒrHt‚tdƒrTt‚tdƒr`t‚d S )Nc                 S   s   g | ]}t |ƒr|‘qS r   )r   )rU   Úir   r   r   rW   Ù   s      z"test_is_square.<locals>.<listcomp>r[   r   r   r'   r   rO   iÀK i <Y.l    @7Zkl   ©á,3;, i ^ )rA   r   r   r   r   r   r   Útest_is_squareØ   s    $r}   c                   C   sH   t dt ƒst‚t dƒst‚t ddt  ƒs0t‚t ddt  ƒrDt‚d S )Nr$   r3   r+   )r   r   r   r   r   r   r   Útest_is_gaussianprimeâ   s    r~   N)'Úmathr   Zsympy.ntheory.generater   r   Zsympy.ntheory.primetestr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   Zsympy.core.numbersr   r   r   rD   rF   rL   rQ   rc   ro   rr   ru   r{   r}   r~   r   r   r   r   Ú<module>   s"   D"

%
H
