U
    -e                     @  sz   d dl 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 d dlmZ edd Zddd	d
Zdd ZdS )    )annotations)qs)
SievePolynomial_generate_factor_base_initialize_first_polynomial_initialize_ith_poly_gen_sieve_array_check_smoothness_trial_division_stage_gauss_mod_2_build_matrix_find_factor)slowc                   C  sd   t dddddhkstt ddddd	hks0tt d
ddddhksHtt dddddhks`td S )N   M0)	 d   i'  iˆ iц l   spO9V{i  l   8,2l   7l   wIPR3:z2Xi  iP  l   RFBp l   w+ l   gJ/
Q9u(l   8(WCl   +-A]L)r   AssertionError r   r   \/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/ntheory/tests/test_qs.py	test_qs_1   s    


r   None)returnc                    sP  d} d}t dddgdd}|ddks,t|d	d
ks>ttd| \}} |dksZt fddtdD dddddddddddddddgkst fddtdD d d dd	dd!d!d"d d#d$d%d&d%dgkst fd'dtd	D d(d)d*d+d,gkstt| | ||d-d.\}}|jd/ks"t|jd0ks2t|d1d2gksDt fd3dtdD d-d-ddd4d-d5dd6dd7d8d9ddgkst fd:dtdD d-d d dd;d#dd!dd d<d=dd>d#gkst fd?dtdD d d d	ddd	d@d!dAd	dBdCdDd d5gkst fdEdtd	D d-d-gd-dgdd-gdd6gd4d4ggks<tt|  d ||}|jd/ks\t|jdFksltt	| }|d-d	 dGdHdIdJd(gkstt
dK dLkstt
dM d- d-d d-d-d-d-d-d-d-d-d-d d-d-d d-d gkstt
dM d  sti }	t| | |||	dNdO\}
|	dPdQdRdSdTks2tfdUdtd	D dVdWdXdYdZgks\tfd[dtd	D d\d]d^d_d`gkstd- d d-d d d-d-d-d-d-d-d-d-d-d-d-d-d-d-gksttd-d-d gd d-d gd-d d-gd-d d gd-d d ggd-d d gdgd-d d gdDggdadadadbdbgd-d-d gd d-d-gd-d d-gd-d d gd-d d ggfksLtd S )cNr   2   r   i@  l40)	 
   P   l+O/)	    l0)	 i  R   c                   s   g | ]} | j qS r   )prime.0ifactor_baser   r   
<listcomp>    s     ztest_qs_2.<locals>.<listcomp>                           +   ;   =   C   G   I   O   c                   s   g | ]} | j qS r   )Ztmem_pr   r    r   r   r"   "   s                          c                   s   g | ]} | j qS r   )Zlog_pr   r    r   r   r"   $   s     i  ie  i  i	  iU  r   )seedi3J i/j
 i) i6@ c                   s   g | ]} | j qS r   )Zsoln1r   r    r   r   r"   ,   s           	         ?   c                   s   g | ]} | j qS r   )Zsoln2r   r    r   r   r"   .   s        8   7   :   c                   s   g | ]} | j qS r   )Za_invr   r    r   r   r"   0   s        (      -      c                   s   g | ]} | j qS r   )Zb_ainvr   r    r   r   r"   2   s     i= i   i#5  i+  i  i%  )r   Fi5 i d  )Z
ERROR_TERM)i  l{Y*)	 )i  l#))	 )i  lw()	 )i&  l0')	 )i!  iU iy i  c                   s   g | ]} | d  qS )r   r   r   smooth_relationr   r   r"   L   s     ilGplhFz$ l hr K lH\c                   s   g | ]} | d  qS )r3   r   r   rJ   r   r   r"   N   s     lY.)	 l   -\#l   [x l   %2 i1EtTF)r   evalr   r   ranger   abr   r   r	   r
   r   )nMZ
sieve_polyZidx_1000Zidx_5000gBZg_1Zsieve_arrayZpartial_relationsZpartial_relationr   )r!   rK   r   	test_qs_2   s           
 
 
 
 

  
     
                      **rT   c               
   C  sN  d} ddddddgfddddddgfdd	ddddgfd
dddddgfddddddgfg}t |}|ddddgddddgddddgddddgddddggkstt|\}}}|ddddgdgddddgdggkst|dddddgkst|ddddgddddgddddgddddgddddggks*tt|||d|| }|dksJtd S )Ni  iu% i}  r   r3   iXTi> i i 1     iO  i$iK  r$   r%   TF   )r   r   r   r   )NZsmooth_relationsmatrixZdependent_rowmarkZgauss_matrixfactorr   r   r   	test_qs_3\   sD    





(




     r[   N)
__future__r   Zsympy.ntheoryr   Zsympy.ntheory.qsr   r   r   r   r   r	   r
   r   r   r   Zsympy.testing.pytestr   r   rT   r[   r   r   r   r   <module>   s   0

F