a
    kº”ht  ã                   @  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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s0J ‚t d
ddƒddhksHJ ‚t dddƒddhks`J ‚d S )Nì   »M0)	 éd   é'  iË† iÑ† l   ©spÑOÑ9V{Óéè  l   ó8ã,2l   óÿ¯7l   wI±PR3:z2XéÐ  l   RÄFBp l   w+½ù l   ÛgºJª/´
Q9u(iPÃ  l   8(WÐCl   +-šA]L©r   © r   r   úI/var/www/auris/lib/python3.9/site-packages/sympy/ntheory/tests/test_qs.pyÚ	test_qs_1   s    
ÿ
ÿ
ÿr   ÚNone)Úreturnc               	     sÒ  d} d}t dd| ƒ}| d¡| d¡d |    kr<dksBn J ‚| d¡| d¡d |    krjdkspn J ‚t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sÐJ ‚‡ fdd„tdƒD ƒg d¢ksòJ ‚t| |ˆ ||tdƒƒ}t|ƒ}|jdks J ‚|j	dks0J ‚‡ fdd„tdƒD ƒg d¢ksTJ ‚‡ fdd„tdƒD ƒg d¢ksxJ ‚‡ fdd„tdƒD ƒddgddgddgddgddggks¶J ‚t|ƒ}|jdksÎJ ‚|j	dksÞJ ‚t
|ˆ ƒ}|dd… g d¢ksJ ‚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s¨J ‚ˆd d d/ks¾J ‚|
tƒ ksÎJ ‚d S )0Nr   é2   é
   éP   é   lýÿÿÿ+O/)	 é   lýÿÿÿ·0)	 r   éR   c                   s   g | ]}ˆ | j ‘qS r   )Úprime©Ú.0Úi©Úfactor_baser   r   Ú
<listcomp>    ó    ztest_qs_2.<locals>.<listcomp>é   )r   é   é   é   é   é   é   é   é+   é;   é=   éC   éG   éI   éO   c                   s   g | ]}ˆ | j ‘qS r   )Ztmem_pr    r#   r   r   r%   "   r&   )é   r6   r(   r   r(   é   r7   é   r6   é   é   é   é   r;   r'   c                   s   g | ]}ˆ | j ‘qS r   )Zlog_pr    r#   r   r   r%   $   r&   )éÆ  ie  iÉ  i—	  iU  r   i3J i/j
 c                   s   g | ]}ˆ | j ‘qS r   )Zsoln1r    r#   r   r   r%   ,   r&   )r   r   r(   r)   é   r   é   r,   é	   r/   é   é   é?   r-   r,   c                   s   g | ]}ˆ | j ‘qS r   )Zsoln2r    r#   r   r   r%   .   r&   )r   r6   r6   r(   é   r9   r'   r7   r'   r6   é8   é7   r1   é:   r9   c                   s   g | ]}ˆ | j ‘qS r   )Zb_ainvr    r#   r   r   r%   0   r&   r(   r@   r>   i= )iè   i#5  i+  i×  r=   i­%  )l         r   i‰5 )i R  r6   i d  )Z
ERROR_TERM)i¸  lýÿÿÿ{Y*)	 l            )iê  lýÿÿÿ×#))	 i5  )i  lýÿÿÿw()	 l   %              @)i&  lýÿÿÿ0')	 l             )iû!  iU‹ iy iý  c                   s   g | ]}ˆ | d  ‘qS )r   r   r    ©Úsmooth_relationr   r   r%   H   r&   )iÿÿÿi> is iŠ i‡¬  c                   s   g | ]}ˆ | d  ‘qS )r6   r   r    rH   r   r   r%   J   r&   )lýÿÿÿ—Y.)	 l   ¹-\#l   ©[x l   ¹%ñ2 i1¯Etl
                    )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$   rI   r   Ú	test_qs_2   sj    ..ÿÿÿÿÿ
ÿ
 ÿ

þ
ü$$rS   c                  C  s(   d} g d¢}t t| |dƒƒdks$J ‚d S )Ni  ))iðu% i}  r?   )iXÜTþi€> r   )iÐä® i 1  r   )é•   i O  r   )iæÞ$þiK  r   é   é   )rK   r   )ÚNZsmooth_relationsr   r   r   Ú	test_qs_3P   s    rX   c                  C  s2   d} t | ddƒD ]}| | dks$J ‚| | } qd S )Nl   ƒq`©T<oÃý r   r   r   r   )rW   Zfactorr   r   r   Ú	test_qs_4\   s    rY   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sZJ ‚d S )	Nis¨r   r   r6   )iñ  i£† l   kn.=¾'´w!& c                 s  s   | ]\}}|| V  qd S )Nr   )r!   ÚpÚer   r   r   Ú	<genexpr>h   r&   z!test_qs_factor.<locals>.<genexpr>)r   ÚlenÚmathÚprodÚitems)rO   Zfactorsr   r   r   Útest_qs_factorc   s
    ra   c                  C  s   d} t | ddƒd usJ ‚d S )Nl   òivT‰@ iˆ  i N  r   )rW   r   r   r   Útest_issue_27616k   s    rb   )Ú
__future__r   r^   Zsympy.core.randomr   Zsympy.ntheoryr   r   Zsympy.ntheory.qsr   r   r   r	   r
   r   r   Zsympy.testing.pytestr   r   rS   rX   rY   ra   rb   r   r   r   r   Ú<module>   s   $

9