U
    ZÊ¹jL  ã                   @   sÔ   d Z 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 eƒ \ZZZZZZZdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Z d!d"„ Z!d#d$„ Z"d%S )&zOTests for Euclidean algorithms, GCDs, LCMs and polynomial remainder sequences. é    )Úring)ÚZZÚQQÚRR)Úf_polysÚdmp_fateman_poly_F_1Údmp_fateman_poly_F_2Údmp_fateman_poly_F_3c            
      C   sÖ  t dtƒ\} }|d d|d   d|d   d|  d }|d |d  d|  d }tdd	ƒ | tdd	ƒ }tdd	ƒ|d  tdd	ƒ|  d }|d }|  ||¡||fks´t‚|  ||¡|||fksÎt‚|d d|d   | d }|d | d }|  ||¡\}}}|  ||¡\}}}	|  |  ||¡|  ||¡¡|k�sDt‚|  |  ||¡|  ||¡¡|	k�sjt‚d| }|d d
 }tddƒ| }tdd
ƒ }d}|  ||¡||fk�s¶t‚|  ||¡|||fk�sÒt‚d S )NÚxé   é   é   é   é   é   é   é   é   é    )r   r   Zdup_half_gcdexÚAssertionErrorZ	dup_gcdexZdup_addZdup_mul)
ÚRr
   ÚfÚgÚsÚtÚhÚSÚTÚH© r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_euclidtools.pyÚtest_dup_gcdex   s:    ,$
ÿÿ

ÿÿ
r!   c                  C   s<   t dtƒ\} }|  d| |d d ¡tddƒ| ks8t‚d S )Nr
   r   r   r   r   )r   r   Z
dup_invertr   ©r   r
   r   r   r    Útest_dup_invert1   s    r#   c               	   C   s  t dtƒ\} }|d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d	 }|  ||¡||tddƒ |d  td
dƒ|d   td
dƒ tddƒ |d  d|  tddƒ tddƒ| tddƒ tddƒ gk�s
t‚d S )Nr
   é   r   r   r   r   r   é	   é   r   éu   é   i¹  i¾Ž i=M  id� i¿  iu¯ÐLiiƒf )r   r   Zdup_euclidean_prsr   ©r   r
   r   r   r   r   r    Útest_dup_euclidean_prs6   s    @0
.$
úr*   c                  C   sÒ   t dtƒ\} }|d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d	 }|  ||¡||d
|d  |d  d d|d  d|  d d| d dgksÎt‚d S )Nr
   r$   r   r   r   r   r   r%   r&   éûÿÿÿé   r(   é1   i7  i  r   )r   r   Zdup_primitive_prsr   r)   r   r   r    Útest_dup_primitive_prsE   s    @0

úr.   c                  C   sª  t dtƒ\} }|  dd¡dks"t‚|  dd¡dks6t‚|  dd¡dksJt‚|d |d  d|d   d|d   d|d   d|  d	 }d|d  d	|d   d|d   d
|  d }d|d  d|d   d
 }d|d  d|  d }d| d }d}|  ||¡||||||gk�s t‚|  ||¡|  |¡k�s<t‚|d d|  d }|d d }d| d }|  ||¡|||gk�s„t‚|  ||¡dk�sšt‚|d d }|d d }d}|  ||¡|||gk�sÒt‚|  ||¡dk�sèt‚|d d }|d |d  d }|  ||¡dk�st‚d|d  | }d	|d  d }|  ||¡dk�sTt‚|d d|  d }|d | d	 }|  ||¡dk�sŽt‚|d d|d   d|  d }|d d|d   d|  d }|  ||¡dk�sät‚|d d|d   d|  d }|d d|d   d|  d }|  ||¡dk�s:t‚|d d }|d d|d   d|  d }|  ||¡dk�s|t‚|d d }|d }|  ||¡dk�s¦t‚d S ) Nr
   r   r   r$   r   r   r   r   r   r%   r&   r   éA   é}   éõ   in$  i0  idú éþÿÿÿé@   é   i	  é   éJ   éx   i@Þÿÿé
   é   é   r   éÿÿÿÿ)r   r   Údup_resultantr   Zdup_subresultantsZdup_LC)r   r
   r   r   ÚaÚbÚcÚdr   r   r    Útest_dup_subresultantsT   sV    @0"     rA   c                  C   sx  t dtƒ\} }}|  dd¡dks$t‚|  dd¡d dks<t‚|  dd¡dksPt‚|  dd¡dksdt‚|  dd¡dksxt‚|  dd¡dksŒt‚|  dd¡dks t‚|  dd¡dks´t‚|  dd¡d dksÌt‚|  dd¡dksàt‚|  dd¡d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|d   d|  d }|  |¡}|  ||¡||||gk�sÄt‚|  ||¡|k�sÚt‚|  ||¡d |k�sôt‚|  ||¡|k�s
t‚|  ||¡|k�s t‚|d  d }d|d  | |d  }d|d  d|  d }d|d  d|d   d|  d }|  |¡}|  ||¡|||gk�s¨t‚|  ||¡|k�s¾t‚|  ||¡d |k�sØt‚|  ||¡|k�sît‚|  ||¡|k�st‚t dtƒ\} }}}}	}
d|d  d| |  d| |  ||  }|d ||	  ||
  |	|
  }|d |d  d|d  | |	  d|d  | |
  d|d  |	 |
  d| |d  |	  d| |d  |
  d| | |	d   d| | |	 |
  d| | |
d   d| |	d  |
  d| |	 |
d   d|d  |	 |
  d| |	d  |
  d| |	 |
d   d|	d  |
d   }|  ||¡| 	|¡k�sªt‚t dt
ƒ\} }}}}	}
|d t
ddƒ| |  t
ddƒ| |  t
ddƒ| |  }|d ||	  ||
  |	|
  }t
ddƒ|d  |d  t
ddƒ|d  | |	  t
ddƒ|d  | |
  t
ddƒ|d  |	 |
  t
ddƒ| |d  |	  t
ddƒ| |d  |
  t
ddƒ| | |	d   t
ddƒ| | |	 |
  t
ddƒ| | |
d   t
ddƒ| |	d  |
  t
ddƒ| |	 |
d   t
ddƒ|d  |	 |
  t
ddƒ| |	d  |
  t
ddƒ| |	 |
d   |	d |
d   }|  ||¡| 	|¡k�s¶t‚t dtƒ\}}t d|ƒ\}}|d d|d   d|d   d }d| |d  |d  d| |d   d|d   d
| |  d }| ||¡d |d  d!|d   d"|d   d# k�stt‚d S )$Núx,yr   r   r   r   r   r%   é   éýÿÿÿr8   r   r4   r   é6   r$   iÙ  éØ   r   r   é-   é   i£  éá   r(   ú	x,y,z,u,vé   é$   r   r
   iúÿÿÿr:   i ¹, iÀŠ! i°b iä²  )r   r   Zdmp_resultantr   Zdmp_prs_resultantZdmp_zz_collins_resultantZdmp_qq_collins_resultantZdmp_LCZdmp_subresultantsÚdropr   r<   )r   r
   Úyr   r   r=   r>   ÚrÚzÚuÚvZRtr   ZRxr   r   r    Útest_dmp_subresultants›   s²    $P
$
, ^ÿÿÿÿÿþþþþþ> fÿÿÿÿþþþþýýý$DrS   c                  C   s  t dtƒ\} }|  d¡dks t‚|  |¡dks2t‚|  |d d|d   d|  d ¡dks`t‚|  d	|d	  |d  d ¡d
ks†t‚|  |d d|d   d|d   d|  d ¡dksÀt‚|  d|d  d|d   d|d   |d  d ¡dksþt‚d S )Nr
   r   r   r   r   r%   r,   épÒÿÿr   éÀÞÜr   r   é   r   r4   r   rH   ìüÿÿÿ 	BBu)r   r   Zdup_discriminantr   r"   r   r   r    Útest_dup_discriminanté   s    .&:rX   c                  C   s   t dtƒ\} }|  d¡dks t‚t dtƒ\} }}|  d¡dksBt‚|  |¡dksTt‚|  |d d|d   d|  d ¡dks‚t‚|  d	|d	  |d  d ¡d
ks¨t‚|  |d d|d   d|d   d|  d ¡dksât‚|  d|d  d|d   d|d   |d  d ¡dk�s"t‚|  |d | d|  ¡d|d   |¡k�sTt‚|  ||d  d|  ¡dk�sxt‚t dtƒ\} }}}|  || | ¡dk�s¦t‚t dtƒ\} }}}}|  |d | ||  | ¡d| | |d   |¡k�søt‚t dtƒ\} }}}}}|  |d | |d |  ||  | ¡d|d  |d  d| | | |  d| |d   d|d  |  |d |d    |¡k�sœt‚d S )Nr
   r   rB   r   r   r%   r,   rT   r   rU   r   r   rV   r   r4   r   rH   r   rW   iøÿÿÿúx,y,zúx,y,z,uéüÿÿÿrJ   iåÿÿÿrK   )r   r   Zdmp_discriminantr   rM   )r   r
   rN   rP   rQ   rR   r   r   r    Útest_dmp_discriminantõ   s&    .&:@2$>(\ÿr\   c                  C   s8	  t dtƒ\} }d\}}|  ||¡|  ||¡  kr:dks@n t‚d\}}|  ||¡|  ||¡  krldksrn t‚d\}}|  ||¡|  ||¡  krždks¤n t‚d\}}|  ||¡|  ||¡  krÐd	ksÖn t‚d
d| d  }}|  ||¡|  ||¡  k�rd| d d
dfk�s$n t‚d| d d
 }}|  ||¡|  ||¡  k�rld| d dd
fk�srn t‚d\}}|  ||¡|  ||¡  k�r¢dk�s¨n t‚d\}}|  ||¡|  ||¡  k�rØdk�sÞn t‚d\}}|  ||¡|  ||¡  k�rdk�sn t‚d\}}|  ||¡|  ||¡  k�rDdk�sJn t‚|d d|  d d }}|  ||¡|  ||¡  k�r¢d|d d|  d dfk�s¨n t‚|d d|  d d }}|  ||¡|  ||¡  k�r d|d d|  d dfk�sn t‚d|d  d|  d d }}|  ||¡|  ||¡  k�rbd|d d|  d dfk�shn t‚dd|d  d|  d  }}|  ||¡|  ||¡  k�rÄdd|d d|  d fk�sÊn t‚d|d  d|  d |d  }}|  ||¡|  ||¡  k�r&|d d| d dfk�s,n t‚|d d|d  d|  d  }}|  ||¡|  ||¡  k�rˆ|d dd| d fk�sŽn t‚|d | }}|  ||¡|  ||¡  k�rÊd||fk�sÐn t‚|d d|d   d|d   d|  d }|d d|d   d|  d }|d d|  d }|d d|  d }|d }|  ||¡|||fk�sht‚|  ||¡|||fk�s„t‚|d d }|d d|d   d }|d d }|d d }|d d }|  ||¡|||fk�sèt‚|  ||¡|||fk�st‚|d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d }d}|}|}|  ||¡|||fk�sœt‚|  ||¡|||fk�s¸t‚t dtƒ\} }|d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d }d}|}|}|  ||¡|||fk�s^t‚|  ||¡|||fk�szt‚t dtƒ\} }d|d   d!|d"   d#|d$   d%|d&   d'|d   d(|d)   d*|d+   d, }d-|d  d.|d)   d/|d+   d, }|  ||  |d¡¡d
 |k�s*t‚|  ||  |d¡¡d
 |k�sLt‚t dtƒ\} }tddƒ|d  | tddƒ }tddƒ| tddƒ }|d }|  ||¡||tddƒfk�s¼t‚|  ||¡||tddƒfk�sÞt‚t dtƒ\} }d0| d1 }d2| d3 }d2| d3 }d4}d}|  ||¡|||fk�	s4t‚d S )5Nr
   ©r   r   ©r   r   r   ©r   r   ©r   r   r   ©r2   r   ©r   r;   r   ©r   r2   ©r   r   r;   r   r   r   r   ©r   r   ©r   r   r   ©r2   r   ©r   r;   r   ©r   r2   ©r   r   r;   ©r2   r2   ©r   r;   r;   é   r$   r   r&   rV   r   r5   r   r%   lìÿÿÿ     p¢ƒ>�Zè6-(È·3Ã{ CÃzˆìVgÚsóR&r-   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`±( r4   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   Zdup_zz_heu_gcdZdup_rr_prs_gcdr   r   Zdup_qq_heu_gcdZdup_ff_prs_gcdZdup_diff)r   r
   r   r   r   ÚcffÚcfgr   r   r    Útest_dup_gcd  sÌ    ****<<....DDDD"@"@4, @0@0

ÿ
þ
ý
ü
û
úù	

ÿ
þý"" ""rt   c               
   C   sÔ
  t dtƒ\} }}d\}}|  ||¡|  ||¡  kr<dksBn t‚d\}}|  ||¡|  ||¡  krndkstn t‚d\}}|  ||¡|  ||¡  kr dks¦n t‚d\}}|  ||¡|  ||¡  krÒd	ksØn t‚d
d| d  }}|  ||¡|  ||¡  k�r d| d d
dfk�s&n t‚d| d d
 }}|  ||¡|  ||¡  k�rnd| d dd
fk�stn t‚d\}}|  ||¡|  ||¡  k�r¤dk�sªn t‚d\}}|  ||¡|  ||¡  k�rÚdk�sàn t‚d\}}|  ||¡|  ||¡  k�rdk�sn t‚d\}}|  ||¡|  ||¡  k�rFdk�sLn t‚|d d|  d d }}|  ||¡|  ||¡  k�r¤d|d d|  d dfk�sªn t‚|d d|  d d }}|  ||¡|  ||¡  k�rd|d d|  d dfk�sn t‚d|d  d|  d d }}|  ||¡|  ||¡  k�rdd|d d|  d dfk�sjn t‚dd|d  d|  d  }}|  ||¡|  ||¡  k�rÆdd|d d|  d fk�sÌn t‚d|d  d|  d |d  }}|  ||¡|  ||¡  k�r(|d d| d dfk�s.n t‚|d d|d  d|  d  }}|  ||¡|  ||¡  k�rŠ|d dd| d fk�s�n t‚t dtƒ\} }}}}|d d|  d d| d  }}|  ||¡|  ||¡  k�rü|d |d dfk�sn t‚|d |d  d|d  |  |d  ||  | |d d|  d  }}|d |d | |d  | |d   }}}	|  ||¡|||	fk�s”t‚|  ||¡|||	fk�s°t‚|  ||¡||	|fk�sÌt‚|  ||¡||	|fk�sèt‚t dtƒ\} }}}t| jtdtƒƒ\}}}|  ||¡\}
}}	|
|k�rR|  |
|¡|k�rR|  |
|	¡|k�sVt‚|  ||¡\}
}}	|
|k�r–|  |
|¡|k�r–|  |
|	¡|k�sšt‚t dtƒ\} }}}}}t| jtdtƒƒ\}}}|  ||¡\}
}}	|
|k�r|  |
|¡|k�r|  |
|	¡|k�st‚t dtƒ\} }}}}}}}t| jtdtƒƒ\}}}|  ||¡\}
}}	|
|k�r~|  |
|¡|k�r~|  |
|	¡|k�s‚t‚t dtƒ\
} }}}}}}}}}t| jtdtƒƒ\}}}|  ||¡\}
}}	|
|k�rø|  |
|¡|k�rø|  |
|	¡|k�süt‚t dtƒ\} }}}t| jt	dtƒƒ\}}}|  ||¡\}
}}	|
|k�rf|  |
|¡|k�rf|  |
|	¡|k�sjt‚|  ||¡\}
}}	|
|k�rª|  |
|¡|k�rª|  |
|	¡|k�s®t‚t| jt
dtƒƒ\}}}|  ||¡\}
}}	|
|k�	r|  |
|¡|k�	r|  |
|	¡|k�	s
t‚|  ||¡\}
}}	|
|k�	rJ|  |
|¡|k�	rJ|  |
|	¡|k�	sNt‚t dtƒ\} }}}}}t| jt
dtƒƒ\}}}|  ||¡\}
}}	|
|k�	r¼|  |
|¡|k�	r¼|  |
|	¡|k�	sÀt‚t dtƒ\} }}tddƒ|d  | tddƒ }tddƒ| tddƒ }|d }|  ||¡||tddƒfk�
s2t‚|  ||¡||tddƒfk�
sTt‚t dtƒ\} }}d| |d  d| |  d|  }d|d   }|  ||¡d| d|d  d|  d d|d  fk�
sÐt‚d S )!NrB   r]   r^   r_   r`   ra   rb   rc   rd   r   r   r   r   re   rf   rg   rh   ri   rj   rk   rl   rZ   rY   rJ   zx,y,z,u,v,a,br   zx,y,z,u,v,a,b,c,dr$   gÍÌÌÌÌÌ @gš™™™™™@g      ð?r   )r   r   Zdmp_zz_heu_gcdZdmp_rr_prs_gcdr   ÚmapZ
from_denser   Zdmp_mulr   r	   Zdmp_inner_gcdr   Zdmp_qq_heu_gcdZdmp_ff_prs_gcdr   )r   r
   rN   r   r   rP   rQ   r   rr   rs   r   rR   r=   r>   r?   r@   r   r   r    Útest_dmp_gcdŸ  sÖ    ****<<....DDDD"@"@"<J,ÿÿÿÿÿÿÿÿÿÿ ""$
(ÿrv   c                  C   sZ  t dtƒ\} }|  dd¡dks"t‚|  d|d  d| ¡d|d  ksJt‚|  d|d  d| ¡d|d  ksrt‚|  |d | |¡|d | ks–t‚|  |d | d| ¡d|d  d|  ksÆt‚|  |d d|  |¡|d d|  ksòt‚|  d|d  | |¡d|d  | k�s t‚|  d|d  | d| ¡d|d  d|  k�sVt‚d S )Nr
   r   r   r   r   )r   r   Zdup_lcmr   r"   r   r   r    Útest_dup_lcm8  s    (($0,.rw   c                  C   s˜  t dtƒ\} }}|  dd¡dks$t‚|  ||¡|| ks<t‚|  d|d  d| |d  ¡d|d  |d  kstt‚|  d|d  d| |d  ¡d|d  |d  ks¬t‚|  |d | ||d  ¡|d |d  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| |d   }|  ||¡|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   d|d  |d   d| |d   d|d   }|  ||¡|k�s”t‚d S )NrB   r   r   r   r   r   r4   r%   r   r8   rK   é2   é/   r   )r   r   Zdmp_lcmr   )r   r
   rN   r   r   r   r   r   r    Útest_dmp_lcmG  s    880@`4HXrz   c            	      C   sæ   t dtƒ\} }}|  d¡dks"t‚d|d  d|  d dd  }}}tddƒD ]}||9 }||| | 7 }qP|  |¡| |¡ks†t‚t dtƒ\} }}}|  t¡dksªt‚|  t¡dks¼t‚t d	tƒ\} }}}}|  t¡dksât‚d S )
NrB   r2   r   r   r   r   r   rY   úx,y,z,t)	r   r   Zdmp_contentr   ÚrangerM   Úf_4Úf_5Úf_6)	r   r
   rN   r   r   ÚFÚirP   r   r   r   r    Útest_dmp_content_  s    $r‚   c            
      C   s4  t dtƒ\} }}|  d¡dks"t‚|  d¡dks4t‚d|d  d|  d dd  }}}tddƒD ]}||9 }||| | 7 }qb|  |¡| |¡|| fks t‚t d	tƒ\} }}}|  t¡\}}|dkrÐ|tksÔt‚|  t¡\}}|dkrò|tksöt‚t d
tƒ\} }}}}	|  t¡\}}|dk�r,|tk�s0t‚d S )NrB   r   r]   r   )r   r   r   r   r   rY   r{   )	r   r   Zdmp_primitiver   r|   rM   r}   r~   r   )
r   r
   rN   r   r   r€   r�   rP   Úcontr   r   r   r    Útest_dmp_primitiveu  s     $ r„   c            	      C   s”  t dtƒ\} }d|d  d }|d d|  d }d| d }|d }|  ||¡||fks^t‚| j||dd�dd||fks~t‚| d }d| d }|d }d| d }|  ||¡||fksÀt‚|  ||¡||fksØt‚|  d	d	¡d
ksìt‚| jd	d	dd�dk�st‚|  |d	¡dk�st‚| j|d	dd�dk�s6t‚|  d	|¡dk�sLt‚| jd	|dd�dk�sft‚d	}|}d}| j||dd�||fk�s�t‚d S )Nr
   r   r   F©Úincluder   r   rD   r   r]   ©r   r   r   r   ©r   r   ©r   r   r   r   ©r   r   ©r   r   r   r   T)r   r   Z
dup_cancelr   )	r   r
   r   r   ÚpÚqr€   ÚGÚoner   r   r    Útest_dup_cancel�  s.     
r�   c                  C   s
  t dtƒ\} }}d|d  d }|d d|  d }d| d }|d }|  ||¡||fks`t‚| j||dd�dd||fks€t‚|  dd¡dks”t‚| jdddd�dks¬t‚|  |d¡d	ksÀt‚| j|ddd�d
ksØt‚|  d|¡dksìt‚| jd|dd�dk�st‚d S )NrB   r   r   Fr…   r   r]   r‡   rˆ   r‰   rŠ   r‹   )r   r   Z
dmp_cancelr   )r   r
   rN   r   r   rŒ   r�   r   r   r    Útest_dmp_cancelµ  s     r‘   N)#Ú__doc__Zsympy.polys.ringsr   Zsympy.polys.domainsr   r   r   Zsympy.polys.specialpolysr   r   r   r	   Zf_0Zf_1Zf_2Zf_3r}   r~   r   r!   r#   r*   r.   rA   rS   rX   r\   rt   rv   rw   rz   r‚   r„   r�   r‘   r   r   r   r    Ú<module>   s,   #GN  %