o
    ohR#                     @   s   d dl mZ d dlmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZ d dlmZ dd Zdd Zd	d
 Zdd Zdd Zdd Zdd ZdS )    )ring)ZZQQAlgebraicField)modgcd_univariatemodgcd_bivariate._chinese_remainder_reconstruction_multivariatemodgcd_multivariate_to_ZZ_poly_to_ANP_polyfunc_field_modgcd_func_field_modgcd_m)sqrtc                  C   s  t dt\} }| j| j}}t||dksJ | j|}}t|||ddfks)J t|||ddfks5J | j| }}t|||ddfksHJ t|||ddfksTJ d| | d}}t||d|dfksiJ d| d d|d  d }}t||d| d dd| d fksJ |d	 d
|d   d|d   d|  d
 }|d d|d   d|  d }|d d|  d }|d d|  d	 }|d }t|||||fksJ |d	 d	 }|d	 d	|d   d	 }|d d }|d d }|d d }t|||||fksJ |d
 |d  d|d	   d|d   d
|d   d|  d }d|d  d|d	   d	|d   d|  d }d}|}|}t|||||fksRJ d|d  d|d   d|d   d|d   d|d   d|d   d|d   d }d|d  d|d   d |d   d }t|||d |ksJ d!| d" }d#| d$ }d#| d$ }d%}d}t|||||fksJ d S )&Nxr   r   r   r                                 	   l     p>Z6-(3{ CzVgsR&1   l       	` %'('@$@9$` V *   l      `%Nwgej^r0cu`ZhD #   l      ]%5u[ov&+/
c>_o],   l    @)-P/'X=vw+U9+; l    _I	,4~XsR`Y?t
U    l   y[p?u;ZW`(    l   EAy\^
l     mc@Atsl\o#MkE6w# l    @r/sLxFJGjAl   3sd%u%g%9 i[T l         qRvl        @	l        P\l        `i*  )r   r   zeror   diff)Rr   fghcffcfg r+   u/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/polys/tests/test_modulargcd.pytest_modgcd_univariate_integers   sx   (, @0







	

r-   c                  C   s  t dt\} }}| j| j}}t||dksJ d| | d}}t||d|dfks-J |d|  || }}t||d||fksDJ |d d| |  |d  |d |d  }}t|||| || |d ||  |d  fksuJ ||d  d| |  | ||d  | }}t|||| | |d |d | d fksJ |d |d  |d |  d ||d  ||  d }}t||d||fksJ d| |d  d| |  d|  |d  d|  d }d| |d  d|  |d  d }t||d| | d|  | d |d |d | d fksJ d|d  d|  d |d }}t|||d d| d dfks@J |d d|d  d|  d }}t|||d dd| d fksdJ d|d  d| |  d|  d|  }|d | d }t|||d d| d|  |d fksJ d|d  d| |  d|  d|  }d| | d|  d|d   d|  }t|||| d| d d| d fksJ d S )Nx,yr   r   r   r   r   )r   r   r#   r   )r%   r   yr&   r'   r+   r+   r,   test_modgcd_bivariate_integers[   s4   .4.0:8$B"&"&(.((2r0   c            
      C   s   t dt\} }}d\}}|d | |d  d }|d  | d| |d   d }t||||}|||ks9J |||ksBJ t d| \}}	d\}}|| d |	d  | }|d d|  |	 d }t||||}|||ksuJ |||ks~J d S )Nx, y)r   r   r   r   r   z)r   r"   )r   r   r   trunc_ground)
r%   r   r/   pqhphqhpqTr2   r+   r+   r,   test_chinese_remainder   s   "r:   c               
   C   sx  t dt\} }}| j| j}}t||dksJ d|d  d|  d |d }}t|||d d| d dfks;J |d d|d  d|  d }}t|||d dd| d fks^J d|d  d| |  d|  d|  }d| | d|  d|d   d|  }t|||| d| d d| d fksJ ||d  d| |  | ||d  | }}t|||| | |d |d | d fksJ |d |d  |d |  d ||d  ||  d }}t||d||fksJ |d d|d   d|d   d	|  d }|d d
|d   d|  d
 }|d d|  d }|d d|  d }|d }t|||||fks?J t dt\} }}}}	|| | | | | |	 }}t||d||fksfJ |	d d|	  d d|	 d }}t|||	d |	d dfksJ |d |	d  d|d  |	  |d  ||	  | |	d d|	  d }}|	d |d |	 |d  | |	d }}}t|||||fksJ t|||||fksJ t dt\} }}}|||  |||  }}t|||||  ddfksJ |  \}}}t||\}
}}|
|kr&|
| |kr&|
| |ks(J t dt\} }}}}	}|  \}}}t||\}
}}|
|krU|
| |krU|
| |ksWJ t dt\} }}}}	}}}|  \}}}t||\}
}}|
|kr|
| |kr|
| |ksJ t dt\
} }}}}	}}}}}|  \}}}t||\}
}}|
|kr|
| |kr|
| |ksJ t dt\} }}}|  \}}}t||\}
}}|
|kr|
| |kr|
| |ksJ |  \}}}t||\}
}}|
|kr
|
| |kr
|
| |ksJ t dt\} }}}}|  \}}}t||\}
}}|
|kr8|
| |kr8|
| |ks:J d S )Nr.   r   r   r   r   r   r   r   r   r   r   r   zx,y,z,uzx,y,zz	x,y,z,u,vzx,y,z,u,v,a,bzx,y,z,u,v,a,b,c,dzx,y,z,t)r   r   r#   r	   fateman_poly_F_1fateman_poly_F_2fateman_poly_F_3)r%   r   r/   r&   r'   r(   r)   r*   r2   uHvabcdtr+   r+   r,   !test_modgcd_multivariate_integers   st   "$"$((,.0:,  ""J,"******.rF   c                  C   s   t ttd} td| \}}|tdd  }tdt\}}}|| | }t|||ks-J t|||ks6J td| \}}}}	||d  ||	  td }tdt\}
}}td|
\}}}|d | | | }t|||kspJ t|||ksyJ d S )Nr   r   r   zx_, z_zx, t, szt_, s_)r   r   r   r   r   r
   r   )Ar%   r   r&   r9   x_z_f_rE   sDt_s_r+   r+   r,   test_to_ZZ_ANP_poly   s   rO   c            	      C   s  t ttd} td| \}}| j}d| |d}}t|||||fks&J d| |td}}t|||||fks=J d| d d|d  d }}t|||d |dd| d fks`J td| \}}}|td|  || }}t|||||fksJ || td|d   |td| }}t||||td|  |tdfksJ |d dtd | |  d|d   |td|  }}t|||||fksJ t ttdtd} td| \}}}}|d |d  tdd	 |  }|d
|d  d  |||  }}t|||d
|d  d || fksJ |d |d  d|d   dtd  }||d  |td td }}t||||d |tdtd fksZJ t ttdd td } td| \}}|d |d }}t||| j||fksJ d S )Nr   r   r   r   r1   r   zx, y, zr"   r         g      ?
   r   )r   r   r   r   oner   )	rG   r%   r   rS   r&   r'   r/   r2   r(   r+   r+   r,   test_modgcd_algebraic_field  s8   (*,: "*(". rT   c                  C   sp   t dt\} }t d| \}}}|d |d  |d |  d d}|d |d }}t||||jks6J d S )NrE   zx, zr   r   r   )r   r   dropr   rS   )rL   rE   r%   r   r2   minpolyr&   r'   r+   r+   r,   test_modgcd_func_field>  s
   &rW   N)sympy.polys.ringsr   sympy.polys.domainsr   r   r   sympy.polys.modulargcdr   r   r   r	   r
   r   r   r   (sympy.functions.elementary.miscellaneousr   r-   r0   r:   rF   rO   rT   rW   r+   r+   r+   r,   <module>   s    (	L(a,