a
    t@8b(                  	   @   s  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 edddddhksdJ ed	d
dddhks|J edddddhksJ edd
dddhksJ dZdZeg dddZeddksJ eddksJ e	de\ZZZedksJ dd ed D g d!ks&J d"d ed D g d#ksFJ d$d edD g d%ksfJ e
eeeeed d&\ZZejd'ksJ ejd(ksJ ed)d*gksJ d+d ed D g d,ksJ d-d ed D g d.ksJ d/d ed D g d0ksJ d1d edD d d gd d2gd3d gd3d4gd5d5ggksJJ eeed6eeZejd'ksjJ ejd7kszJ eeeZed d g d8ksJ ed9ed:ksJ ed;ed  d d  g d<ksJ ed;ed6 d=ksJ i Z eeeeeee d>d?\Z!Z"e d@dAdBdCdDks$J dEd edD g dFksDJ dGd edD g dHksdJ e!d  d2 d d  g dIksJ eg dJg dKg dLg dMg dMgg dMd3gg dMdNggg dOg dJg dPg dLg dMg dMgfksJ dQZ#dRdSg dTfdUdVg dWfdXdYg dZfd[d\g dWfd]d^g d_fgZ$ee$Z%e%g dTg dWg dZg dWg d_gksjJ ee%\Z&Z'Z(e&g dZd2gg d_d3ggksJ e'g d`ksJ e(g dTg d_g dZg d_g dWgksJ ee&e'e(d e$e#Z)e)daksJ dbS )c    )DictTuple)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_factorl   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]L2   )r   i@  l40)	 
   P   l+O/)	    l0)	 i  R   c                 C   s   g | ]}t | jqS  )factor_baseZprime.0ir   r   :lib/python3.9/site-packages/sympy/ntheory/tests/test_qs.py
<listcomp>       r      )                        +   ;   =   C   G   I   O   c                 C   s   g | ]}t | jqS r   )r   Ztmem_pr   r   r   r   r      r   )   r-   r   r   r      r.      r-               r2   r   c                 C   s   g | ]}t | jqS r   )r   Zlog_pr   r   r   r   r      r   )  ie  i  i	  iU  )Zseedi3J i/j
 i) i6@ c                 C   s   g | ]}t | jqS r   )r   Zsoln1r   r   r   r   r   !   r   )r   r   r   r       r      r#   	   r&         ?   r$   r#   c                 C   s   g | ]}t | jqS r   )r   Zsoln2r   r   r   r   r   #   r   )r   r-   r-   r      r0   r   r.   r   r-   8   7   r(   :   r0   c                 C   s   g | ]}t | jqS r   )r   Za_invr   r   r   r   r   %   r   )r-   r-   r   r    r   r      r.   (   r      -      r-   r6   c                 C   s   g | ]}t | jqS r   )r   Zb_ainvr   r   r   r   r   '   r   r   r   r7   r5   r-   i= )i   i#5  i+  i  r4   i%  )r   Fi5 )r   r   r   r   r   r   r   r   r   r-   r   r   r-   r   r-   Ti d  )Z
ERROR_TERM)i  l{Y*)	 )i  l#))	 )i  lw()	 )i&  l0')	 )i!  iU iy i  c                 C   s   g | ]}t | d  qS )r   smooth_relationr   r   r   r   r   =   r   )ilGplhFz$ l hr K lH\c                 C   s   g | ]}t | d  qS )r-   rD   r   r   r   r   r   ?   r   )lY.)	 l   -\#l   [x l   %2 i1Et)r-   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r-   )r-   r   r-   )r   r-   r   )r   r-   r-   rC   )TTTFF)r-   r   r   i  iu% i}  )r   r   r   r-   iXTi> )r   r-   r   r-   i i 1  )r   r   r   r      iO  i$iK  )r   r-   r   r   )TTFFT   N)*typingr   ZtDictr   ZtTupleZsympy.ntheoryr   Zsympy.ntheory.qsr   r   r   r   r	   r
   r   r   r   r   nMZ
sieve_polyevalZidx_1000Zidx_5000r   rangegBabZg_1Zsieve_arrayZpartial_relationsrE   Zpartial_relationNZsmooth_relationsZmatrixZdependent_rowZmarkZgauss_matrixZfactorr   r   r   r   <module>   s   0      "
$
  "$"
,",