U
    L?h&                     @   s   d dl m Z mZ d dlmZ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 d dlmZ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d Z$d S )!    )bisectbisect_left)mobiustotient)sieveSieve)
isprime	randprime	nextprime	prevprime
primerangeprimepiprime	primorial	compositecompositepi)cycle_length_primepi)mr)raisesc                   C   s
  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t ddkstt ddkstt ddkstt ddkstt ddkstt ddkstttdd  td t ddkstttdd  d S )N                  9     (  i  /  i    i9k     iٗ  #  iqp a  imb i iͱ
iiszyc                   S   s   t dS Nr   r    r&   r&   S/var/www/html/venv/lib/python3.8/site-packages/sympy/ntheory/tests/test_generate.py<lambda>       ztest_prime.<locals>.<lambda>i  i
  c                   S   s   t dS Nr%   r&   r&   r&   r'   r(      r)   )r   AssertionErrorr   
ValueErrorr   extendr&   r&   r&   r'   
test_prime   s"    
r/   c                   C   s  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t ddkstt ddkstt ddkstt ddkstt ddkstt ddkstt ddkstt ddksttd t ddkstd S )Nr+   r   r   r   r   r   r   r      r   >   r   f   r    i  r!   i4  r"   ih  r#   i
   iW ein    j i  i/  )r   r,   r   r.   r&   r&   r&   r'   test__primepi    s"    
r7   c                  C   s  ddl m}  |   tddks$ttddks4ttddksDttd	d
ksTttddksdttddkstttddksttddksttddksttddksttddksttddkst| d tddksttddkst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   s   t dS r$   )r   r&   r&   r&   r'   r(   F   r)   z test_composite.<locals>.<lambda>)sympy.ntheory.generater   _resetr   r,   r.   r   r-   r8   r&   r&   r'   test_composite4   s$    
rB   c                   C   s   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t ddkstt ddkstt ddkstt ddkstt ddkstt ddkstt ddksttd t ddkstd S )Nr   r   r   r   r   r   (   r      r   i  r    i	
  r!   i  r"   i  r#   iV  r3   iPr4   i؇Gr5   l   >e i	  i  )r   r,   r   r.   r&   r&   r&   r'   test_compositepiI   s     
rE   c               >   C   s<	  ddl m}  |   tddks$ttddks4ttddksDttdd	ksTttddksdttddkstttd	d
ksttddksttddkst| d | jd dkst| jd dk std| ksttddksttdd dd d kst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'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIg>}tt	|d D ]r}tdt	|| D ]X}t|| ||||  kstd|k rt|| dJ |||| dJ  kstqqt
tdKdL  t
tdMdL  tdd$ks>ttdd dd d ks\tt
tdNdL  t
tdOdL  dPD ]}t|dQ}t|jd dJ |jd dJ d dD ]`}t|dJ |jd dJ d D ]<}t|||}|t||t|| }	||	kstqАqt|jd |d dJ dD ]^}
t|dQ}||
 t|j|d t||
 ksft||d  t|j|ks,tq,q|t| ddJg kstt| ddddgkst| jdRdS t| dd	ddddd
gkstt| d	ddddd
gkstt| dTddddgks:tt| dUg ksRtt| dddddd
d	dddg	ks|tt| dVddddd
d	dddddgkstt| ddWdXddYdXdYdXddXddYg
kst| jdRdZ t| dd	dddXddYdXdYdXddXg
kstt| d[d\d]d^ td[d\D ks<tt| ddJg ksVtt| dJddJgksrtt| ddWddJddddJddddJg
kst| jdRd_ t| dd	ddddJddddJddg
kstt| d`dadbd^ td`daD kstt| ddJg kstt| dJddJgks:tttddJg ksRtttdddddgksptttddddddgkstttd`dadcdddedfdgdhdidjgkstt }tdkdldmD ]N}tddndoD ]:}t|||| }tt||| }	||	kstqڐqt }| jdRdS | d	 tdpD ]D}t|dpD ]2}t|||}tt||}	||	ksLtqLq>| d\ dqD ].\}}tt||t|||kstq| jdRdS | dr t	| jt	t| jkstt }|d dksttdddks"tt
tdsdL  t
tdtdL  tdJdgduksTtdvdL }tt|dXdwkstttt|dXdRdxdXddydddzd{d|d}dddzd{gksttt|dXdd~dksttt|dXddRddXddyddgkst| d tddk	s
ttddk	stt
tddL  t
tddL  d S )Nr   r8   r   r   r            r         r<   	   r+      r   Z   a   r;   rC   y      %   r=   +   /   5   ;   =   C   G   I   O   S   Y   e   g   k   m   q                                                               rD            i  i  r   i  i  i  i  i%  r   c                   S   s
   t ddS )Nr   r   r
   r&   r&   r&   r'   r(   }   r)   ztest_generate.<locals>.<lambda>c                   S   s
   t ddS )Nr   r+   rz   r&   r&   r&   r'   r(   ~   r)   c                   S   s   t dS r$   r   r&   r&   r&   r'   r(      r)   c                   S   s   t dS r*   r{   r&   r&   r&   r'   r(      r)   )r   r;   r   i@B )sieve_intervalTr%      "      r9   r:   r   i    c                 S   s   g | ]}t |qS r&   r   .0xr&   r&   r'   
<listcomp>   s     z!test_generate.<locals>.<listcomp>r   i  iL  c                 S   s   g | ]}t |qS r&   r   r   r&   r&   r'   r      s     i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is     ))i  iO  )i&  iJ )r6   i1u  )i iQi )iM iU i c                   S   s   t dS r$   r   r&   r&   r&   r'   r(      r)   c                   S   s   t dS r$   )r   r&   r&   r&   r'   r(      r)   Fc                 S   s   | d d d S )Nr   r   3   r&   )ir&   r&   r'   r(      r)   )r:   r   )values#         ,   2   )nmax)r   N)r   r   r    i  i  ir  io  c                   S   s   t dS Nr   r   r&   r&   r&   r'   r(      r)   c                   S   s   t dS )NrF   r   r&   r&   r&   r'   r(      r)   )r@   r   rA   r
   r,   r   Zextend_to_noZ_listrangelenr   r-   r   listZ_primeranger   r   r.   r   ZtotientrangeZmobiusrangesetr   nextr   )r   Z	primelistr   jr|   sheadtailABkabfuncr&   r&   r'   test_generate\   sL   
                                              
0

( 

"$" *...*..*      

(



r   c                  C   s   t ddd kstt ddd ks$tt dddks6tt dddksHtt dddksZtttdd  ttd	d  ttd
d  ttdd  ttdd  dD ]D} dD ]:}t | | | }| |  kr| | k rn nt|stqqd S )Nr;   r   r   r   r   c                   S   s
   t ddS )Nir~   r	   r&   r&   r&   r'   r(      r)   z test_randprime.<locals>.<lambda>c                   S   s
   t ddS )Nir   r   r&   r&   r&   r'   r(      r)   c                   S   s
   t ddS )Nr<      r   r&   r&   r&   r'   r(      r)   c                   S   s
   t ddS )Nr   r   r   r&   r&   r&   r'   r(      r)   c                   S   s
   t ddS )Nr   r   r   r&   r&   r&   r'   r(      r)   )d   i,  i  i )r	   r,   r   r-   r   )r   r   pr&   r&   r'   test_randprime   s    r   c                   C   s`   t ddkstt ddddks$tt ddks4tt ddddksHtt ddddks\td S )Nr   r   r   )Znthr:   r9   )r   r,   r&   r&   r&   r'   test_primorial   s
    r   c                   C   sF   dt kstdt kstdt ks$tdd t ks4tttdd  d S )Nr   g @r   r   c                   S   s
   t dS r   )r   searchr&   r&   r&   r'   r(      r)   ztest_search.<locals>.<lambda>)r   r,   r   r-   r&   r&   r&   r'   test_search   s
    r   c                   C   s   t d dksttt dd dd tddD ks8ttt ddd dd tdddD ksdttt dd dd	dd
gkstttdd  ttdd  ttdd  d S )Nr   r   r;   c                 S   s   g | ]}t | qS r&   r8   r   r&   r&   r'   r     s     z$test_sieve_slice.<locals>.<listcomp>r   c                 S   s   g | ]}t | qS r&   r8   r   r&   r&   r'   r     s     r   r   rG   c                   S   s   t d d S )Nr   r8   r&   r&   r&   r'   r(     r)   z"test_sieve_slice.<locals>.<lambda>c                   S   s   t d S r$   r8   r&   r&   r&   r'   r(     r)   c                   S   s   t dd S )Nr   r   r8   r&   r&   r&   r'   r(   	  r)   )r   r,   r   r   r   
IndexErrorr&   r&   r&   r'   test_sieve_slice  s    (, r   c                  C   s@   g } t D ]}|dkr q$| | q| tt dd ks<td S )NrG   r   r   )r   appendr   r,   )r   valuer&   r&   r'   test_sieve_iter  s    r   c                   C   s$   dt tkstdt tks td S )Nr   r   )reprr   r,   r&   r&   r&   r'   test_sieve_repr  s    r   c               	   C   s2   ddl m}  |   tddks$tW 5 Q R X d S )Nr   warns_deprecated_sympy)sympy.testing.pytestr   r   r,   r   r&   r&   r'   *test_deprecated_ntheory_symbolic_functions  s    r   N)%r   r   Z%sympy.functions.combinatorial.numbersr   r   r@   r   r   Zsympy.ntheoryr   r	   r
   r   r   r   r   r   r   r   r   r   Zsympy.ntheory.primetestr   r   r   r/   r7   rB   rE   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s&   0 		