o
    GZht                     @  s   d dl mZ d dlZ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 d dlmZ edd ZdddZdd Zdd Zdd Zdd ZdS )    )annotationsN)_randint)qs	qs_factor)SievePolynomial_generate_factor_base_generate_polynomial_gen_sieve_array_check_smoothness_trial_division_stage_find_factor)slowc                   C  sd   t dddddhksJ t ddddd	hksJ t d
ddddhks$J t dddddhks0J d S )N   M0)	 d   '  iˆ iц l   spO9V{  l   8,2l   7l   wIPR3:z2X  l   RFBp l   w+ l   gJ/
Q9u(iP  l   8(WCl   +-A]Lr    r   r   J/var/www/auris/lib/python3.10/site-packages/sympy/ntheory/tests/test_qs.py	test_qs_1   s   


r   returnNonec               	     s  d} d}t dd| }|d|dd |    krdks"J  J |d|dd |    kr7dks:J  J td	| \}} |d
ksHJ  fddtdD g dksYJ  fddtdD g dksjJ  fddtdD g dks{J t| | ||td}t|}|jdksJ |j	dksJ  fddtdD g dksJ  fddtdD g dksJ  fddtdD ddgddgddgddgddggksJ t|}|jdksJ |j	dksJ t
| }|dd g dksJ td  d!ksJ td" d#ksJ i }	t| | |||	d$d%\}
|	d&d'd(d)d*ks*J fd+dtdD g d,ks<J fd-dtdD g d.ksNJ d d d/ksYJ |
t ksaJ d S )0Nr   2   
   P      l+O/)	    l0)	 r   R   c                      g | ]} | j qS r   )prime.0ifactor_baser   r   
<listcomp>        ztest_qs_2.<locals>.<listcomp>   )r                        +   ;   =   C   G   I   O   c                   r   r   )Ztmem_pr!   r$   r   r   r&   "   r'   )   r7   r)   r   r)      r8      r7               r<   r(   c                   r   r   )Zlog_pr!   r$   r   r   r&   $   r'   )  ie  i  i	  iU  r   i3J i/j
 c                   r   r   )Zsoln1r!   r$   r   r   r&   ,   r'   )r   r   r)   r*      r      r-   	   r0         ?   r.   r-   c                   r   r   )Zsoln2r!   r$   r   r   r&   .   r'   )r   r7   r7   r)      r:   r(   r8   r(   r7   8   7   r2   :   r:   c                   r   r   )Zb_ainvr!   r$   r   r   r&   0   r'   r)   rA   r?   i= )i   i#5  i+  i  r>   i%  )l         r   i5 )i R  r7   i d  )Z
ERROR_TERM)i  l{Y*)	 l            )i  l#))	 i5  )i  lw()	 l   %              @)i&  l0')	 l             )i!  iU iy i  c                      g | ]} | d  qS )r   r   r!   smooth_relationr   r   r&   H       )ii> is i i  c                   rI   )r7   r   r!   rJ   r   r   r&   J   rL   )lY.)	 l   -\#l   [x l   %2 i1Etl
                    )r   Zeval_vZeval_ur   ranger   r   nextabr	   r
   r   set)nMZ
sieve_polyZidx_1000Zidx_5000itgZg_1Zsieve_arrayZpartial_relationsZproper_factorr   )r%   rK   r   	test_qs_2   sj   00 

$$rV   c                  C  s(   d} g d}t t| |ddksJ d S )Ni  ))iu% i}  r@   )iXTi> r   )i i 1  r   )   iO  r   )i$iK  r         )rN   r   )NZsmooth_relationsr   r   r   	test_qs_3P   s   r[   c                  C  s2   d} t | ddD ]}| | dksJ | | } qd S )Nl   q`T<o r   r   r   r   )rZ   factorr   r   r   	test_qs_4\   s
   
r]   c                  C  s^   t ddddddksJ d} t | dd}t|dksJ tdd | D | ks-J d S )	Nisr   r   r7   )i  i l   kn.='w!& c                 s  s    | ]	\}}|| V  qd S )Nr   )r"   per   r   r   	<genexpr>h   s    z!test_qs_factor.<locals>.<genexpr>)r   lenmathproditems)rR   Zfactorsr   r   r   test_qs_factorc   s
   $re   c                  C  s   d} t | ddd usJ d S )Nl   ivT@ i  i N  r   )rZ   r   r   r   test_issue_27616k   s   rf   )r   r   )
__future__r   rb   Zsympy.core.randomr   Zsympy.ntheoryr   r   Zsympy.ntheory.qsr   r   r   r	   r
   r   r   Zsympy.testing.pytestr   r   rV   r[   r]   re   rf   r   r   r   r   <module>   s    $


9