o
    *ήc                     @   s  d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dl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 )!    )IRationalnanzoo)S)Symbol)sieveSieve)limit)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+   H/tmp/pip-target-vg8gfxp4/lib/python/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-   A   r.   ztest_primepi.<locals>.<lambda>c                   S   s   t dt S Nr   rA   r+   r+   r+   r,   r-   B       c                   S   r?   r@   )r   r   r+   r+   r+   r,   r-   C   r.   c                   S   r?   r@   )r   r   r+   r+   r+   r,   r-   D   r.   )r   r   r   r1   r   subsr   InfinityNegativeInfinityr
   r   r0   )r:   r;   r+   r+   r,   test_primepi!   s<   
rG   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-   Y   r.   z test_composite.<locals>.<lambda>)sympy.ntheory.generater   _resetr   r1   r   r0   rH   r+   r+   r,   test_compositeG   s$   
rR   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_compositepi\   s    
rU   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   rH   r   r   r   r3         r         rL   	   r/      r    Z   a   rK   rS   y   Y   r   Tr*   )r   r   r   r3   r      r   r   r   r3      )	r   r   r   r3   r   rX   rZ   rY   r\   "   )r   r   r   r3   r   rX   rZ   rY   r\   rd   r       )
rI   r   rJ   rI   rJ   rI   rK   rI   rW   rJ   r   )
r   r   rI   r   rJ   rI   rJ   rI   rK   rI   i    c                 S      g | ]}t |qS r+   rg   .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   ri   r+   ro   rj   r+   r+   r,   rm      rn   )r   r   r   )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is  c                   S   r(   r)   rg   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    rI   )rJ   r   )values)rZ   #   r   r         ,   2   r   r   rv   rw   )nmax)r   N)rz   rt   )rZ   ru   r   r   rv   r$   i  i  ir  io  c                   S   r(   rB   r   r+   r+   r+   r,   r-      r.   c                   S   r(   )NrV   r{   r+   r+   r+   r,   r-      r.   )rP   r   rQ   r   r   extend_to_no_listlistr   totientrangerangemobiusranger	   r   r0   r   nextr   r1   )r   srs   jABfuncr+   r+   r,   test_generateo   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 )NrK   r   r   r   r   c                   S   
   t ddS )Nirc   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   )NrL      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   )nthrJ   rI   rq   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   rh   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   rK   c                 S      g | ]}t | qS r+   rH   rj   r+   r+   r,   rm      rn   z$test_sieve_slice.<locals>.<listcomp>r   c                 S   r   r+   rH   rj   r+   r+   r,   rm      rn   r   rb   c                   S   s   t d d S )Nr   rH   r+   r+   r+   r,   r-      rC   z"test_sieve_slice.<locals>.<lambda>c                   S   s   t d S r)   rH   r+   r+   r+   r,   r-      r.   c                   S   s   t dd S )Nr   r   rH   r+   r+   r+   r,   r-      rC   )r   r~   r   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   appendr~   )rt   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),sympy.core.numbersr   r   r   r   sympy.core.singletonr   sympy.core.symbolr   rP   r   r	   sympy.series.limitsr
   sympy.ntheoryr   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.ntheory.primetestr   sympy.testing.pytestr   r2   rG   rR   rU   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s(    <&V		