U
    ZÊ¹j�  ã                   @  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   ©spÑOÑ9V{Óiè  l   ó8ã,2l   óÿ¯7l   wI±PR3:z2Xi¸  iPÃ  l   RÄFBp l   w+½ù l   ÛgºJª/´
Q9u(l   8(WÐCl   +-šA]L)r   ÚAssertionError© r   r   úZ/var/www/html/bwave/python/venv/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s–t‚‡ fdd„tdƒD ƒd d dd	dd!d!d"d d#d$d%d&d%dgksÒt‚‡ fd'd„td	ƒD ƒd(d)d*d+d,gksút‚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�s‚t‚‡ fd:d„tdƒD ƒd-d d dd;d#dd!dd d<d=dd>d#gk�sÀt‚‡ fd?d„tdƒD ƒd d d	ddd	d@d!dAd	dBdCdDd d5gk�sþt‚‡ 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�s–t‚t
dKˆ ƒdLk�sªt‚t
dMˆ ƒd- d-d… d-d-d-d-d-d-d-d-d-d d-d-d d-d gk�sèt‚t
dMˆ ƒd  �süt‚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�s†t‚ˆd- d d-d… d d-d-d-d-d-d-d-d-d-d-d-d-d-d-gk�sÂt‚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@  lýÿÿÿ»40)	 é
   é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   Fi‰5 i d  )Z
ERROR_TERM)i¸  lýÿÿÿ{Y*)	 )iê  lýÿÿÿ×#))	 )i  lýÿÿÿw()	 )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üÿÿÿh¤Fz$ lüÿÿÿ h³r K lýÿÿÿ°H\—c                   s   g | ]}ˆ | d  ‘qS )r3   r   r   rJ   r   r   r"   N   s     lýÿÿÿ—Y.)	 l   ¹-\#l   ©[x l   ¹%ñ2 i1¯EtTF)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sžt‚t|ƒ\}}}|ddddgdgddddgdggksÔt‚|dddddgksê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�s*t‚t|||d|| ƒ}|dk�sJt‚d S )Ni  iðu% i}  r   r3   iXÜTþi€> iÐä® i 1  é•   i O  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