o
    oÇhÞ  ã                   @   sì   d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 dd„ Z
dd	„ Zd
d„ ZedeƒZe
deeƒZedeƒZe
deeƒZdd„ Zdd„ Zdd„ Zdd„ ZedeƒZedeeƒZedeƒZedeeƒZdd„ Zdd„ Zdd„ Zdd„ Zd S )!z/Benchmarks for polynomials over Galois fields. é    )Úgf_from_dictÚgf_factor_sqf)ÚZZ)Úpi)Ú	nextprimec                 C   s   t | |jd|jd|ji||ƒS )Né   r   )r   Úone)ÚnÚpÚK© r   ú|/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/benchmarks/bench_galoispolys.pyÚgathen_poly
   s   r   c                 C   sF   |j g| d  }td| d ƒD ]}||d  d |j  | ||< q|S )Nr   é   )r   Úrange)r	   r
   r   ÚfÚir   r   r   Ú
shoup_poly   s    r   c                 C   s   |t td|  t  ¡ ƒƒƒS )Nr   )r   Úintr   Úevalf)r	   r   r   r   r   Úgenprime   s   r   é
   é   c                   C   ó   t tttdd d S ©NÚ
zassenhaus©Úmethod©r   Úf_10Úp_10r   r   r   r   r   Ú!timeit_gathen_poly_f10_zassenhaus   ó   r!   c                   C   r   ©NÚshoupr   r   r   r   r   r   Útimeit_gathen_poly_f10_shoup#   r"   r%   c                   C   r   r   ©r   Úf_20Úp_20r   r   r   r   r   Ú!timeit_gathen_poly_f20_zassenhaus'   r"   r)   c                   C   r   r#   r&   r   r   r   r   Útimeit_gathen_poly_f20_shoup+   r"   r*   é   é   c                   C   r   r   ©r   ÚF_10ÚP_08r   r   r   r   r   Ú timeit_shoup_poly_F10_zassenhaus5   r"   r0   c                   C   r   r#   r-   r   r   r   r   Útimeit_shoup_poly_F10_shoup9   r"   r1   c                   C   r   r   ©r   ÚF_20ÚP_18r   r   r   r   r   Ú timeit_shoup_poly_F20_zassenhaus=   r"   r5   c                   C   r   r#   r2   r   r   r   r   Útimeit_shoup_poly_F20_shoupA   r"   r6   N)Ú__doc__Úsympy.polys.galoistoolsr   r   Úsympy.polys.domainsr   Úsympy.core.numbersr   Úsympy.ntheory.generater   r   r   r   r    r   r(   r'   r!   r%   r)   r*   r/   r.   r4   r3   r0   r1   r5   r6   r   r   r   r   Ú<module>   s0    



