o
    8Va                  	   @   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s2J ed	d
dddhks>J edddddhksJJ edd
dddhksVJ dZdZeg dddZeddkskJ eddkstJ ede\ZZZed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 d%ksJ 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sJ d1d edD d d gd d2gd3d gd3d4gd5d5ggksJ e	eed6eeZejd'ks+J ejd7ks3J e
eeZed d g d8ksEJ ed9ed:ksOJ ed;ed  d d  g d<ksaJ ed;ed6 d=ksmJ i Zeeeeeeed>d?\ZZ ed@dAdBdCdDksJ dEd edD g dFksJ dGd edD g dHksJ 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s+J ee#\Z$Z%Z&e$g dZd2gg d_d3ggksCJ e%g d`ksLJ e&g dTg d_g dZg d_g dWgksbJ ee$e%e&d e"e!Z'e'daksrJ 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      g | ]}t | jqS  )factor_baseZprime.0ir   r   =/usr/lib/python3/dist-packages/sympy/ntheory/tests/test_qs.py
<listcomp>       r      )                        +   ;   =   C   G   I   O   c                 C   r   r   )r   Ztmem_pr   r   r   r   r      r   )   r.   r    r   r       r/      r.               r3   r   c                 C   r   r   )r   Zlog_pr   r   r   r   r      r   )  ie  i  i	  iU  )Zseedi3J i/j
 i) i6@ c                 C   r   r   )r   Zsoln1r   r   r   r   r   !   r   )r   r   r    r!      r      r$   	   r'         ?   r%   r$   c                 C   r   r   )r   Zsoln2r   r   r   r   r   #   r   )r   r.   r.   r       r1   r   r/   r   r.   8   7   r)   :   r1   c                 C   r   r   )r   Za_invr   r   r   r   r   %   r   )r.   r.   r   r!   r    r      r/   (   r      -      r.   r7   c                 C   r   r   )r   Zb_ainvr   r   r   r   r   '   r   r   r    r8   r6   r.   i= )i   i#5  i+  i  r5   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      g | ]}t | d  qS )r   smooth_relationr   r   r   r   r   =       )ilGplhFz$ l hr K lH\c                 C   rE   )r.   rF   r   r   r   r   r   ?   rH   )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.   rD   )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   r   Z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_relationsrG   Zpartial_relationNZsmooth_relationsZmatrixZdependent_rowZmarkZgauss_matrixZfactorr   r   r   r   <module>   s    0"
$
  "$"
,",