o
    8Va/#                     @   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   Zdiff)Rr   fghcffcfg r*   C/usr/lib/python3/dist-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r/   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   Ztrunc_ground)
r$   r   r.   pqZhpZhqZhpqTr1   r*   r*   r+   test_chinese_remainder   s   "r5   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	   Zfateman_poly_F_1Zfateman_poly_F_2Zfateman_poly_F_3)r$   r   r.   r%   r&   r'   r(   r)   r1   uHvabcdtr*   r*   r+   !test_modgcd_multivariate_integers   st   "$"$((,.0:,  ""J,"******.r>   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%   r4   Zx_Zz_Zf_r=   sDZt_Zs_r*   r*   r+   test_to_ZZ_ANP_poly   s   rB   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   r0   r   zx, y, zr"   r         g      ?
   r   )r   r   r   r   oner   )	r?   r$   r   rF   r%   r&   r.   r1   r'   r*   r*   r+   test_modgcd_algebraic_field  s8   (*,: "*(". rG   c                  C   sp   t dt\} }t d| \}}}|d |d  |d |  d d}|d |d }}t||||jks6J d S )Nr=   zx, zr   r   r   )r   r   Zdropr   rF   )rA   r=   r$   r   r1   Zminpolyr%   r&   r*   r*   r+   test_modgcd_func_field>  s
   &rH   N)Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   r   Zsympy.polys.modulargcdr   r   r   r	   r
   r   r   r   Zsympyr   r,   r/   r5   r>   rB   rG   rH   r*   r*   r*   r+   <module>   s    (	L(a,