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/ai/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    



