o
    8Va                     @   s   d dl 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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 d dlmZ d dl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d Z&dd Z'dd Z(dS )    )	SievesieveSymbolSlimitIzoonanRational)isprimetotientmobius	randprime	nextprime	prevprime
primerangeprimepiprime	primorial	compositecompositepireduced_totient)cycle_length)mr)raisesc                   C   s
  t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t d	d
ks0J t ddks8J t ddks@J t ddksHJ t ddksPJ t ddksXJ t ddks`J t ddkshJ ttdd  td t ddks|J ttdd  d S )N                  9   i  (  i  /  i    i9k     iٗ  #  iqp a  imb i iͱ
iiszyc                   S      t dS Nr   r    r+   r+   C/usr/lib/python3/dist-packages/sympy/ntheory/tests/test_generate.py<lambda>       ztest_prime.<locals>.<lambda>i  i
  c                   S   r(   )Nr*   r+   r+   r+   r,   r-      r.   )r   r   
ValueErrorr   extendr+   r+   r+   r,   
test_prime	   s"   
r2   c                  C   s  t ddksJ t ddksJ t ddksJ t tdddks#J t ddks+J t ddks3J t d	dks;J t d
dksCJ t ddksKJ t ddksSJ t ddks[J t ddkscJ t ddkskJ t ddkssJ t ddks{J t ddksJ t ddksJ td t ddksJ td } t | | ddksJ td!d"d#}t ||ddksJ t tjtju sJ t tjdksJ t	t | | d$d%ksJ t
td&d'  t
td(d'  t
td)d'  t
td*d'  d S )+Nr/   r   r   r      g      @r   r   r   r!      r"   >   r#   f   r$   i  r%   i4  r&   ih  r'   i
   iW ein    j ii  i/  nrT)reald      c                   S      t tS Nr   r   r+   r+   r+   r,   r-   =   r.   ztest_primepi.<locals>.<lambda>c                   S   s   t dt S Nr   rA   r+   r+   r+   r,   r-   >       c                   S   r?   r@   )r   r   r+   r+   r+   r,   r-   ?   r.   c                   S   r?   r@   )r   r	   r+   r+   r+   r,   r-   @   r.   )r   r
   r   r1   r   Zsubsr   ZInfinityZNegativeInfinityr   r   r0   )r:   r;   r+   r+   r,   test_primepi   s<   
rD   c                  C   s  ddl m}  |   tddksJ tddksJ tddks"J td	d
ks*J tddks2J tddks:J tddksBJ tddksJJ tddksRJ tddksZJ tddksbJ tddksjJ | d tddkswJ tddksJ ttdd   d S )!Nr   r   r      r      r   
   r      )   :   r!   P   r"   ir  r#   i  r$   i  r%   i  r&   i(  r'   im  i  i  i
  i  c                   S   r(   r)   )r   r+   r+   r+   r,   r-   U   r.   z test_composite.<locals>.<lambda>)sympy.ntheory.generater   _resetr   r1   r   r0   rE   r+   r+   r,   test_compositeC   s$   
rO   c                   C   s   t ddksJ t ddksJ t ddksJ t ddks J t ddks(J t dd	ks0J t d
dks8J t ddks@J t ddksHJ t ddksPJ t ddksXJ t ddks`J t ddkshJ t ddkspJ td t ddks}J d S )Nr   r   r   r   r   r!   (   r"      r#   i  r$   i	
  r%   i  r&   i  r'   iV  r7   iPr8   i؇Gr9   l   >e i	  i  )r   r   r1   r+   r+   r+   r,   test_compositepiX   s    
rR   c                  C   sh  ddl m}  |   tddksJ tddksJ tddks"J tdd	ks*J tddks2J tddks:J td	d
ksBJ tddksJJ tddksRJ | d | jd dks`J | jd dk siJ d| v soJ tddkswJ tdd dd d ksJ tddksJ tdd dd d ksJ t| ddg ksJ t| ddddgksJ | jdd t| dd	g dksJ t| d	g dksJ t| dg dksJ t| dg ksJ t| dg d ksJ t| d!g d"ks	J t| 	dd#g d$ksJ | jdd% t| 	dd	g d&ks-J t| 	d'd(d)d* t
d'd(D ksBJ t| 	ddg ksOJ t| 	dddgks]J t| dd#g d+kslJ | jdd, t| dd	g d-ksJ t| d.d/d0d* t
d.d/D ksJ t| ddg ksJ t| dddgksJ ttddg ksJ ttddg d1ksJ ttddg dksJ ttd.d/g d2ksJ t }t
d3d4d5D ]'}t
dd6d7D ]}t|||| }tt||| }||ksJ qqt }|d dks$J tdddks.J ttd8d9  ttd:d9  ttd;d9  tddgd<u sNJ d=d9 }tt|d>d?ks^J tt|d>dd@g dAksnJ tt|d>ddBdCks|J tt|d>dddDg dEksJ | dF tdGdHksJ tdIdJksJ ttdKd9  ttdLd9  d S )MNr   rE   r   r   r   r3         r         rI   	   r/      r    Z   a   rH   rP   y   Y   r   Tr*   )r   r   r   r3   r      r   r   r   r3      )	r   r   r   r3   r   rU   rW   rV   rY   "   )r   r   r   r3   r   rU   rW   rV   rY   ra   r       )
rF   r   rG   rF   rG   rF   rH   rF   rT   rG   r   )
r   r   rF   r   rG   rF   rG   rF   rH   rF   i    c                 S      g | ]}t |qS r+   rd   .0xr+   r+   r,   
<listcomp>       z!test_generate.<locals>.<listcomp>)
r/   r   r/   r   r   r   r/   r   r/   r   r   )
r/   r   r/   r   r/   r   r   r   r/   r   i  iL  c                 S   rf   r+   rl   rg   r+   r+   r,   rj      rk   )r   r   r   )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is  c                   S   r(   r)   rd   r+   r+   r+   r,   r-      r.   ztest_generate.<locals>.<lambda>c                   S   r(   r)   )r   r+   r+   r+   r,   r-      r.   c                   S   r(   r)   r   r+   r+   r+   r,   r-      r.   Fc                 S   s   | d d d S )Nr   r   3   r+   )ir+   r+   r,   r-      s    rF   )rG   r   )values)rW   #   r   r         ,   2   r   r   rs   rt   )nmax)r   N)rw   rq   )rW   rr   r   r   rs   r$   i  i  ir  io  c                   S   r(   rB   r   r+   r+   r+   r,   r-      r.   c                   S   r(   )NrS   rx   r+   r+   r+   r,   r-      r.   )rM   r   rN   r   r   Zextend_to_noZ_listlistr   ZtotientrangerangeZmobiusranger   r   r0   r   nextr   r1   )r   srp   jABfuncr+   r+   r,   test_generatek   s   
**


r   c                  C   s   t ddd u s	J t ddd u sJ t dddksJ t dddks$J t dddks-J ttdd  ttd	d  ttd
d  ttdd  ttdd  dD ]#} dD ]}t | | | }| |  krk| | k rrn J t|stJ qVqRd S )NrH   r   r   r   r   c                   S   
   t ddS )Nir`   r   r+   r+   r+   r,   r-         
 z test_randprime.<locals>.<lambda>c                   S   r   )Nir   r   r+   r+   r+   r,   r-      r   c                   S   r   )NrI      r   r+   r+   r+   r,   r-      r   c                   S   r   )Nr   r   r   r+   r+   r+   r,   r-      r   c                   S   r   )Nr   r   r   r+   r+   r+   r,   r-      r   )r=   i,  i  i )r   r   r0   r   )abpr+   r+   r,   test_randprime   s    ,r   c                   C   s`   t ddksJ t ddddksJ t ddksJ t ddddks$J t ddddks.J d S )Nr   r   r   )ZnthrG   rF   rn   r+   r+   r+   r,   test_primorial   s
   r   c                   C   sF   dt v sJ dt vsJ dt vsJ dd t vsJ ttdd  d S )Nr   g @r   re   c                   S   s
   t dS rB   )r   searchr+   r+   r+   r,   r-      r   ztest_search.<locals>.<lambda>)r   r   r0   r+   r+   r+   r,   test_search   s
   r   c                   C   s   t d dksJ tt dd dd tddD ksJ tt ddd dd tdddD ks2J tt dd g d	ks@J ttd
d  ttdd  ttdd  d S )Nr   r   rH   c                 S      g | ]}t | qS r+   rE   rg   r+   r+   r,   rj      rk   z$test_sieve_slice.<locals>.<listcomp>r   c                 S   r   r+   rE   rg   r+   r+   r,   rj      rk   r   r_   c                   S   s   t d d S )Nr   rE   r+   r+   r+   r,   r-      rC   z"test_sieve_slice.<locals>.<lambda>c                   S   s   t d S r)   rE   r+   r+   r+   r,   r-      r.   c                   S   s   t dd S )Nr   r   rE   r+   r+   r+   r,   r-      rC   )r   ry   rz   r   
IndexErrorr+   r+   r+   r,   test_sieve_slice   s   (,r   c                  C   s@   g } t D ]}|dkr n| | q| tt dd ksJ d S )Nr3   r   r   )r   appendry   )rq   valuer+   r+   r,   test_sieve_iter   s   r   c                   C   s$   dt tv sJ dt tv sJ d S )Nr   r   )reprr   r+   r+   r+   r,   test_sieve_repr   s   r   N))Zsympyr   r   r   r   r   r   r   r	   r
   Zsympy.ntheoryr   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   Zsympy.ntheory.primetestr   Zsympy.testing.pytestr   r2   rD   rO   rR   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s    , <&V		