a
    kh&                     @   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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 t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ ttdd  td t ddksJ 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&   O/var/www/auris/lib/python3.9/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   r   
ValueErrorr   extendr&   r&   r&   r'   
test_prime   s"    
r.   c                   C   s  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 t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ td t ddksJ 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'   test__primepi    s"    
r6   c                  C   s  ddl m}  |   tddks$J tddks4J tddksDJ td	d
ksTJ tddksdJ tddkstJ tddksJ tddksJ tddksJ tddksJ tddksJ tddksJ | d tddksJ tddksJ 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,   r7   r&   r&   r'   test_composite4   s$    
rA   c                   C   s   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 t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ t ddksJ td t ddksJ d S )Nr   r   r   r   r   r   (   r      r   i  r    i	
  r!   i  r"   i  r#   iV  r2   iPr3   i؇Gr4   l   >e i	  i  )r   r   r-   r&   r&   r&   r'   test_compositepiI   s     
rD   c                  C   s&  ddl m}  |   tddks$J tddks4J tddksDJ tdd	ksTJ tddksdJ tddkstJ td	d
ksJ tddksJ tddksJ | d | jd dksJ | jd dk sJ d| v sJ tddksJ tdd dd d ksJ g d}tt|d D ]r}tdt|| D ]X}t|| ||||  ks^J d|k r:t|| d |||| d  ks:J q:q$t	t
dd  t	t
dd  tddksJ tdd dd d ksJ t	t
dd  t	t
dd  dD ]}t|d }t|jd d |jd d d dD ]`}t|d |jd d d D ]<}t|||}|t||t|| }	||	ksXJ qXq8t|jd |d d dD ]^}
t|d }||
 t|j|d t||
 ksJ ||d  t|j|ksJ qqt| ddg ks2J t| ddddgksPJ | jd!d" t| dd	g d#kszJ 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sJJ t| d/d0d1d2 td/d0D kstJ t| ddg ksJ t| dddgksJ t| dd+g d3ksJ | jd!d4 t| dd	g d5ksJ t| d6d7d8d2 td6d7D ksJ t| ddg ks6J t| dddgksRJ ttddg ksjJ ttddg d9ksJ ttddg d%ksJ ttd6d7g d:ksJ t }td;d<d=D ]N}tdd>d?D ]:}t|||| }tt||| }	||	ksJ qqt }| jd!d" | d	 td@D ]D}t|d@D ]2}t|||}tt||}	||	ksRJ qRqD| d0 dAD ].\}}tt||t|||ksJ q| jd!d" | dB t| jtt| jksJ t }|d d'ksJ tdddks(J t	t
dCd  t	t
dDd  tddgdEu sZJ dFd }tt|dGdHkszJ tt|dGd!dIg dJksJ tt|dGddKdLksJ tt|dGdd!dMg dNksJ | dO tdPdQksJ tdRdSksJ t	t
dTd  t	t
dUd  d S )VNr   r7   r   r   r            r         r;   	   r+      r   Z   a   r:   rB   y   )>r   r   r   rF   r   rH   rJ   rI   rL      r   %   r<   +   /   5   ;   =   C   G   I   O   S   Y   rN   e   g   k   m   q                                                               rC            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+   ry   r&   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*   rz   r&   r&   r&   r'   r(      r)   )r   r:   r   i@B )sieve_intervalTr%   )r   r   r   rF   r      r   r   r   rF   rP   )	r   r   r   rF   r   rH   rJ   rI   rL   "   )r   r   r   rF   r   rH   rJ   rI   rL   rP   r      )
r8   r   r9   r8   r9   r8   r:   r8   rG   r9   r   )
r   r   r8   r   r9   r8   r9   r8   r:   r8   i    c                 S   s   g | ]}t |qS r&   r   .0xr&   r&   r'   
<listcomp>   r)   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   s   g | ]}t |qS r&   r   r   r&   r&   r'   r      r)   )r   r   r   )i  i%  i'  i-  i?  iC  iE  iI     i.	  ix  i  is     ))i  iO  )i&  iJ )r5   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)   r8   )r9   r   )values)r8   rJ   #   r   r         ,   2   r   r   r   r   )nmax)r   N)r   r   )r8   rJ   r   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 )NrE   r   r&   r&   r&   r'   r(      r)   )r?   r   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\   s    
 
0

( 

"**

(



r   c                  C   s   t ddd u sJ t ddd u s$J t dddks6J t dddksHJ t dddksZJ 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|sJ 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   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s4J t ddddksHJ t ddddks\J d S )Nr   r   r   )Znthr9   r8   r   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s4J 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'   test_search   s
    r   c                   C   s   t d dksJ tt dd dd tddD ks8J tt ddd dd tdddD ksdJ tt dd g d	ksJ 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&   r7   r   r&   r&   r'   r     r)   z$test_sieve_slice.<locals>.<listcomp>r   c                 S   s   g | ]}t | qS r&   r7   r   r&   r&   r'   r     r)   r   r}   c                   S   s   t d d S )Nr   r7   r&   r&   r&   r'   r(     r)   z"test_sieve_slice.<locals>.<lambda>c                   S   s   t d S r$   r7   r&   r&   r&   r'   r(     r)   c                   S   s   t dd S )Nr   r   r7   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<J d S )NrF   r   r   )r   appendr   )r   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   c                  C   sF   ddl m}  |    tddks$J W d    n1 s80    Y  d S )Nr   warns_deprecated_sympy)sympy.testing.pytestr   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.   r6   rA   rD   r   r   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s&   0 		