U
    ZÊ¹jR#  ã                   @   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s�t‚t||ƒ|ddfks¨t‚d| | dƒ }}t||ƒd|dfksÒt‚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�s°t‚|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�s¨t‚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�sŒt‚d S )&NÚx©r   r   r   r   é   éÿÿÿÿé   é   é   é   é   é   é   é   é   é	   lìÿÿÿ     p¢ƒ>�Zè6-(È·3Ã{ CÃzˆìVgÚsóR&é1   l       À	Í`”ç ò%³'(Õ'»@ó$@¥9$` ÑV é*   l      `µ%³Nw‚g¹ej^íôr�0c’u`Z§hD é#   l      ]%³5…œu[o¦vÈ&Á+Ú/
có>_o],é   l    @ü)-ÀPµ/Í'X=‚vØw+U9+; l    _ÖIÈ	†,ü4~XsRò`Y?t
U¼ é   l   y[Ùpñ?÷uÿ;ÃZàW`±( é   l   ñEÙA‘y·\¼^
l     Àmc@Ats lÍ\o#MkïEœ6w# l    @¼r/sÜL—xFJŽG jëA�l   €3ƒsèd%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/bwave/python/venv/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sˆt‚|d d| |  |d  |d |d   }}t||ƒ|| || |d ||  |d  fksêt‚||d  d| |  | ||d  |  }}t||ƒ|| | |d |d | d fk�sJt‚|d |d  |d |  d ||d  ||  d  }}t||ƒd||fk�sžt‚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�s„t‚|d d|d  d|  d  }}t||ƒ|d dd| d fk�sÌt‚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�s°t‚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s„t‚t d| ƒ\}}	d\}}|| d |	d  | }|d d|  |	 d }t||||ƒ}| |¡|ksêt‚| |¡|ksüt‚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s¼t‚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�sšt‚|d |d  |d |  d ||d  ||  d  }}t||ƒ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�s„t‚t dtƒ\} }}}}	|| | | | | |	  }}t||ƒd||fk�sÒt‚|	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�s¦t‚t||ƒ|||fk�sÀt‚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�s´t‚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�sÖt‚|  ¡ \}}}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sàt‚t||ƒ|ksòt‚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sÀt‚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�s°t‚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�sºt‚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,