U
    9%eR#                     @   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.t| j| }}t|||ddfksRtt|||ddfksjt| j|  }}t|||ddfkstt|||ddfkstd| | d }}t||d|dfkstd| d d|d  d  }}t||d| d dd| d fkst|d	 d
|d   d|d   d|  d
 }|d d|d   d|  d }|d d|  d }|d d|  d	 }|d }t|||||fkst|d	 d	 }|d	 d	|d   d	 }|d d }|d d }|d d }t|||||fkst|d
 |d  d|d	   d|d   d
|d   d|  d }d|d  d|d	   d	|d   d|  d }d}|}|}t|||||fkst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sFtd!| d" }d#| d$ }d#| d$ }d%}d}t|||||fkst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   AssertionErrordiff)Rr   fghcffcfg r,   `/var/www/html/Darija-Ai-API/env/lib/python3.8/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s0td| | d }}t||d|dfksZt|d|  ||  }}t||d||fkst|d d| |  |d  |d |d   }}t|||| || |d ||  |d  fkst||d  d| |  | ||d  |  }}t|||| | |d |d | d fksJt|d |d  |d |  d ||d  ||  d  }}t||d||fkstd| |d  d| |  d|  |d  d|  d }d| |d  d|  |d  d }t||d| | d|  | d |d |d | d fks<td|d  d|  d |d  }}t|||d d| d dfkst|d d|d  d|  d  }}t|||d dd| d fkstd|d  d| |  d|  d|  }|d | d }t|||d d| d|  |d fks2td|d  d| |  d|  d|  }d| | d|  d|d   d|  }t|||| d| d d| d fkstd S )Nx,yr   r   r   r   r   )r   r   r#   r   r$   )r&   r   yr'   r(   r,   r,   r-   test_modgcd_bivariate_integers[   s4    .4.2:8$B"&"&(.((r1   c            
      C   s   t dt\} }}d\}}|d | |d  d }|d  | d| |d   d }t||||}|||ksrt|||kstt d| \}}	d\}}|| d |	d  | }|d d|  |	 d }t||||}|||kst|||kstd S )Nx, y)r   r   r   r   r   z)r   r"   )r   r   r   Ztrunc_groundr$   )
r&   r   r0   pqhpZhqZhpqTr3   r,   r,   r-   test_chinese_remainder   s    "r8   c               
   C   s~  t dt\} }}| j| j }}t||dks0td|d  d|  d |d  }}t|||d d| d dfksvt|d d|d  d|  d  }}t|||d dd| d fkstd|d  d| |  d|  d|  }d| | d|  d|d   d|  }t|||| d| d d| d fks:t||d  d| |  | ||d  |  }}t|||| | |d |d | d fkst|d |d  |d |  d ||d  ||  d  }}t||d||fkst|d d|d   d|d   d	|  d }|d d
|d   d|  d
 }|d d|  d }|d d|  d }|d }t|||||fkstt dt\} }}}}	|| | | | | |	  }}t||d||fkst|	d d|	  d d|	 d  }}t|||	d |	d dfkst|d |	d  d|d  |	  |d  ||	  | |	d d|	  d  }}|	d |d |	 |d  | |	d   }}}t|||||fkstt|||||fkstt dt\} }}}|||  |||   }}t|||||  ddfkst|  \}}}t||\}
}}|
|krR|
| |krR|
| |ksVtt dt\} }}}}	}|  \}}}t||\}
}}|
|kr|
| |kr|
| |kstt dt\} }}}}	}}}|  \}}}t||\}
}}|
|kr|
| |kr|
| |kstt dt\
} }}}}	}}}}}|  \}}}t||\}
}}|
|krx|
| |krx|
| |ks|tt dt\} }}}|  \}}}t||\}
}}|
|kr|
| |kr|
| |kst|  \}}}t||\}
}}|
|kr|
| |kr|
| |kstt dt\} }}}}|  \}}}t||\}
}}|
|krv|
| |krv|
| |kszt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	   r$   Zfateman_poly_F_1Zfateman_poly_F_2Zfateman_poly_F_3)r&   r   r0   r'   r(   r)   r*   r+   r3   uHvabcdtr,   r,   r-   !test_modgcd_multivariate_integers   st    "$"$((..2:,  ""J,"******rA   c                  C   s   t ttd} td| \}}|tdd  }tdt\}}}|| | }t|||ksZtt|||kslttd| \}}}}	||d  ||	  td }tdt\}
}}td|
\}}}|d | | | }t|||kstt|||kstd S )Nr   r   r   zx_, z_zx, t, szt_, s_)r   r   r   r   r   r
   r$   r   )Ar&   r   r'   r7   Zx_Zz_Zf_r@   sDZt_Zs_r,   r,   r-   test_to_ZZ_ANP_poly   s    rE   c            	      C   s  t ttd} td| \}}| j}d| |d }}t|||||fksLtd| |td }}t|||||fksztd| d d|d  d  }}t|||d |dd| d fksttd| \}}}|td|  ||  }}t|||||fkst|| td|d   |td|  }}t||||td|  |tdfks\t|d dtd | |  d|d   |td|   }}t|||||fkstt ttdtd} td| \}}}}|d |d  tdd	 |  }|d
|d  d  |||   }}t|||d
|d  d || fksBt|d |d  d|d   dtd  }||d  |td td  }}t||||d |tdtd fkstt ttdd td } td| \}}|d |d  }}t||| j||fkstd S )Nr   r   r   r   r2   r   zx, y, zr"   r         g      ?
   r   )r   r   r   r   oner   r$   )	rB   r&   r   rI   r'   r(   r0   r3   r)   r,   r,   r-   test_modgcd_algebraic_field  s8    (*.: "*(".rJ   c                  C   sp   t dt\} }t d| \}}}|d |d  |d |  d d}|d |d  }}t||||jksltd S )Nr@   zx, zr   r   r   )r   r   Zdropr   rI   r$   )rD   r@   r&   r   r3   Zminpolyr'   r(   r,   r,   r-   test_modgcd_func_field>  s
    &rK   N)Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   r   Zsympy.polys.modulargcdr   r   r   r	   r
   r   r   r   Z(sympy.functions.elementary.miscellaneousr   r.   r1   r8   rA   rE   rJ   rK   r,   r,   r,   r-   <module>   s   (	L(a,