a
    kh%                     @   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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J t ddsJ d S )N      	   )r    r   r   P/var/www/auris/lib/python3.9/site-packages/sympy/ntheory/tests/test_primetest.pytest_is_fermat_pseudoprime   s    r   c                  C   s  t ddsJ t ddsJ t dds*J t dds8J t dd	sFJ t d
dsTJ ttdd  ttdd  ttdd  g d} | D ]}t |dsJ qg d} | D ]}t |dsJ qg d}|D ]2}td|D ]"}t||dkrqt ||sJ qqd 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    iq    	      I  iU  i     i!!  i(  Y)     )y     r,   c  i    i     "  r3   s0  ia<  =  @  !I  K  [  iU`  iim  r*   )r,   r.   r<   iQ  iA  ia& iaz i1 i i) iu )r   r   
ValueErrorranger   )Z	euler_prppZabsolute_euler_prpar   r   r   test_euler_pseudoprimes   s*    rE   c                   C   s    t ddsJ t ddsJ d S )N   r   r   )r   r   r   r   r    test_is_euler_jacobi_pseudoprime6   s    rG   c                   C   st   t ddksJ t ddks J t ddks0J t ddks@J t dd	ksPJ t d
dks`J t ddkspJ d S )Nr*   )r   r*   r   r   )   r&   r   r#   r   )r   r   r   rF   )   r   r   ;   )    r!   r   i  )u   rF   r   )r   r   r   r   r   test_lucas_extrastrong_params;   s    rM   c                   C   sd   t ddksJ t ddks J t ddks0J t ddks@J t ddksPJ t ddks`J d S )	Nr&   F  T}*  r         r
   r   r   r   r   test_is_extra_strong_lucas_prpE   s    rS   c                  C   s   dd t ddD } t| dks$J dd | D g dks>J dd | D g d	ksXJ d
d | D g dksrJ tdd | D rJ dd | D g dksJ dd | D g dksJ dd | D g dksJ d S )Nc                 S   s    g | ]}|d  rt |s|qS r4   r   .0nr   r   r   
<listcomp>O   s   ztest_prps.<locals>.<listcomp>r   順 inyc                 S   s   g | ]}t |d gr|qS rT   r   rV   r   r   r   rY   S   r)   )r-   r/   r0   r1   r2   r<   ir  i/  i  i  i  i# i: iM i%Y ib c                 S   s   g | ]}t |d gr|qS )r*   r[   rV   r   r   r   rY   V   r)   )r5   r6   r7   r8   r9   r:   r3   r;   r=   r>   r?   r@   i{  i  ]  i  i  ia# i4 iQB iiW iY i} c                 S   s   g | ]}t |d gr|qS )E  r[   rV   r   r   r   rY   Z   r)   )1r         1   A   Q   r]   r+   iW  i  iu  i  ie  i  i  r0   r1   iM  i  iu  i3  r:   r;   iq2  i:  i>  i1N  iV  iZ  iI`  iaa  ia|  i+  ig  iͨ  i  r\   iy  ie  i  iY  i  i  i  i i i+ iI2 iwO c                 s   s   | ]}t |d gV  qdS )l   j_| Nr[   rV   r   r   r   	<genexpr>a   r)   ztest_prps.<locals>.<genexpr>c                 S   s   g | ]}t |r|qS r   )r   rV   r   r   r   rY   b   r)   )9iC  iy  i  i%  i  S    io#  i#  rO   i,  i-  i_6  i9  >  iS?  iG  J  icJ  W  io[  _  ob  ie  ie  ij  i  i  i  铘  i#  i	  u  iC  i  i  i  i  i  i    i  i  i    E% i- i6 i7 i'D iI i/P i` iq iz | c                 S   s   g | ]}t |r|qS r   )r	   rV   r   r   r   rY   j   r)   )rd   re   rO   rf   rg   rh   ri   rj   rl   rm   rp   rq   c                 S   s   g | ]}t |r|qS r   rR   rV   r   r   r   rY   m   r)   )rN   i  re   rO   iCm  is  ix  i{  rk   rn   ro   rp   )rB   sumany)Zoddcompositesr   r   r   	test_prpsM   s    rt   c                     sR   g d} g d}t dD ]4  | v r:t  |v ksLJ qtt fdd qd S )N)r*   r   r   r   r    r^   !   r%   r`   9   ra   rb   a   q                  )r*   r   r   r    r%   rw   rx   r}      c                      s   t  S )N)r   r   rX   r   r   r(   ~   r)   z!test_proth_test.<locals>.<lambda>)rB   r   r   rA   )ZA080075ZA080076r   r   r   test_proth_tests   s    r   c                  C   s*   t ddD ]} t| | tv ksJ qd S )Nr*   d   )r   
primeranger   r   )rC   r   r   r    test_lucas_lehmer_primality_test   s    r   c                   C   st   t ddu sJ t ddu s J t ddu s0J t ddu s@J t ddu sPJ t ddu s`J t d	du spJ d S )
NFr*   Tr$      i  i i)r   r   r   r   r   test_is_mersenne_prime   s    r   c                  C   s  t  } | d t| dd}tdD ]}||v t|ks(J q(tdsNJ tdsZJ tdsfJ tdsrJ tds~J td	sJ td
sJ tdsJ tdsJ ttdsJ tdsJ tdd d sJ tdd d sJ tdd d rJ tdrJ tdr$J tdr2J tdr@J tdrNJ tdr\J tdrjJ tdrxJ ttdrJ ttdrJ td tdsJ tdrJ tt	d d!  tt	d"d!  d S )#NrZ   r4   i iͱ
l   {! l   \)l   yW-	l   GPFQw8 l   XFqb l   Ii|	3mV&> l   :_sh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_@I7 l   k$9H"YaR  
8038374574536394912570796143419421081388376882875581458374889175222974273765333652186502336163960045457915042023603208766569966760987284043965408232928738791850869166857328267761771029389697739470167082304286871099974399765441448453411558724506334092790222752962294149842306881685404326457534018329786111298960644845216191652872597534901a  
2887148238050771212671429597130393991977609459279722700926516024197432303799152733116328983144639225941977803110929349655578418949441740933805615113979999421542416933972905423711002751042080134966731755152859226962916775325475044445856101949404200039904432116776619949629539250452698719329070373564032273701278453899126120309244841494728976885406024976768122077071687938121709811322297802059565867i  i  is  c                   S   s   t dS )Ng       @rU   r   r   r   r   r(      r)   ztest_isprime.<locals>.<lambda>c                   S   s   t tdS )Nr4   )r   r   r   r   r   r   r(      r)   )
r   extendsetr   rB   r   intr   r   rA   )sZpsrX   r   r   r   test_isprime   sD    

r   c                   C   s^   dd t dD g dksJ tdr*J tdr6J tdrBJ tdrNJ td	rZJ d S )
Nc                 S   s   g | ]}t |r|qS r   )r   rW   ir   r   r   rY      r)   z"test_is_square.<locals>.<listcomp>r^   )r   r   r&   r   rP   iK i <Y.l    @7Zkl   ,3;, i ^ )rB   r   r   r   r   r   test_is_square   s    r   c                   C   sH   t dt sJ t dsJ t ddt  s0J t ddt  rDJ d S )Nr#   r4   r*   )r   r   r   r   r   r   test_is_gaussianprime   s    r   c                   C   s   dd dD g dksJ d S )Nc                 S   s   g | ]}t |g d qS ))r4   r*   r   r#   r[   r   r   r   r   rY      r)   z$test_issue_27145.<locals>.<listcomp>)r   r4   r!   )FTFr   r   r   r   r   test_issue_27145   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   rE   rG   rM   rS   rt   r   r   r   r   r   r   r   r   r   r   r   <module>   s$   D"

%
H
