o
    oh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sZJ | |||||fksgJ |d d|d   | d }|d | d }| ||\}}}| ||\}}}	| | ||| |||ksJ | | ||| |||	ksJ d| }|d d
 }tdd| }tdd
 }d}| ||||fksJ | |||||fksJ d S )Nx                               )r   r   dup_half_gcdex	dup_gcdexdup_adddup_mul)
Rr
   fgsthSTH r"   v/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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sJ d S )Nr
   r   r   r   r   )r   r   
dup_invert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sJ d S )Nr
      r   r   r   r   r   	      r   u      i  i i=M  id i  iuLiif )r   r   dup_euclidean_prs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sgJ d S )Nr
   r(   r   r   r   r   r   r)   r*      r,   1   i7  i  r   )r   r   dup_primitive_prsr.   r"   r"   r#   test_dup_primitive_prsE   s   @0

r4   c                  C   s  t dt\} }| dddksJ | dddksJ | dddks%J |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sJ | ||| |ksJ |d d|  d }|d d }d| d }| |||||gksJ | ||dksJ |d d }|d d }d}| |||||gksJ | ||dksJ |d d }|d |d  d }| ||dks	J d|d  | }d	|d  d }| ||dks$J |d d|  d }|d | d	 }| ||dksAJ |d d|d   d|  d }|d d|d   d|  d }| ||dkslJ |d d|d   d|  d }|d d|d   d|  d }| ||dksJ |d d }|d d|d   d|  d }| ||dksJ |d d }|d }| ||dksJ 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_resultantdup_subresultantsdup_LC)r   r
   r   r   abcdr"   r"   r#   test_dup_subresultantsT   sV   @0      rI   c                  C   sr  t dt\} }}| dddksJ | ddd dksJ | dddks(J | dddks2J | dddks<J | dddksFJ | dddksPJ | dddksZJ | ddd dksfJ | dddkspJ | dddkszJ 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sJ | |||ksJ | ||d |ksJ | |||ksJ | |||ksJ |d  d }d|d  | |d  }d|d  d|  d }d|d  d|d   d|  d }| |}| |||||gksQJ | |||ks\J | ||d |ksiJ | |||kstJ | |||ksJ 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sRJ 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sXJ 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sJ d S )$Nx,yr   r   r   r   r   r)      r>   r   r:   r   6   r(   i     r   r   -      i     r,   	x,y,z,u,v   $   r   r
   ir@   i , i! ib i  )r   r   dmp_resultantdmp_prs_resultantdmp_zz_collins_resultantdmp_qq_collins_resultantdmp_LCdmp_subresultantsdropr   rB   )r   r
   yr   r   rE   rF   rzuvRtr   Rxr"   r"   r#   test_dmp_subresultants   s   $P
$
, ^> f$D>rc   c                  C   s  t dt\} }| ddksJ | |dksJ | |d d|d   d|  d dks0J | d	|d	  |d  d d
ksCJ | |d d|d   d|d   d|  d dks`J | d|d  d|d   d|d   |d  d dksJ d S )Nr
   r   r   r   r   r)   r1   pr   r   r      r   r:   r   rP    	BBu)r   r   dup_discriminantr&   r"   r"   r#   test_dup_discriminant   s   .&:Bri   c                  C   s  t dt\} }| ddksJ t dt\} }}| ddks!J | |dks*J | |d d|d   d|  d dksAJ | d	|d	  |d  d d
ksTJ | |d d|d   d|d   d|  d dksqJ | d|d  d|d   d|d   |d  d dksJ | |d | d|  d|d  |ksJ | ||d  d|  dksJ t dt\} }}}| || | dksJ t dt\} }}}}| |d | ||  | d| | |d  |ksJ t dt\} }}}}}| |d | |d |  ||  | d|d  |d  d| | | |  d| |d   d|d  |  |d |d   |ksIJ d S )Nr
   r   rJ   r   r   r)   r1   rd   r   re   r   r   rf   r   r:   r   rP   r   rg   ix,y,zx,y,z,urR   irS   )r   r   dmp_discriminantr[   )r   r
   r\   r^   r_   r`   r"   r"   r#   test_dmp_discriminant   s&   .&:>0"<(\rn   c                  C   sJ	  t dt\} }d\}}| ||| ||  krdks!J  J d\}}| ||| ||  kr8dks;J  J d\}}| ||| ||  krRdksUJ  J d\}}| ||| ||  krld	ksoJ  J d
d| d }}| ||| ||  krd| d d
dfksJ  J d| d d
}}| ||| ||  krd| d dd
fksJ  J d\}}| ||| ||  krdksJ  J d\}}| ||| ||  krdksJ  J d\}}| ||| ||  krdksJ  J d\}}| ||| ||  kr$dks'J  J |d d|  d d}}| ||| ||  krTd|d d|  d dfksWJ  J |d d|  d d}}| ||| ||  krd|d d|  d dfksJ  J d|d  d|  d d}}| ||| ||  krd|d d|  d dfksJ  J dd|d  d|  d }}| ||| ||  krdd|d d|  d fksJ  J d|d  d|  d |d }}| ||| ||  kr|d d| d dfksJ  J |d d|d  d|  d }}| ||| ||  krL|d dd| d fksOJ  J |d |}}| ||| ||  krnd||fksqJ  J |d d|d   d|d   d|  d }|d d|d   d|  d }|d d|  d }|d d|  d }|d }| |||||fksJ | |||||fksJ |d d }|d d|d   d }|d d }|d d }|d d }| |||||fksJ | |||||fksJ |d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d }d}|}|}| |||||fksWJ | |||||fkseJ t dt\} }|d |d  d|d   d|d   d|d   d|  d }d|d  d|d   d|d   d|  d }d}|}|}| |||||fksJ | |||||fksJ 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J | || |dd
 |ks/J t dt\} }tdd|d  | tdd }tdd| tdd }|d }| ||||tddfksgJ | ||||tddfksxJ t dt\} }d0| d1 }d2| d3 }d2| d3 }d4}d}| |||||fksJ d S )5Nr
   r   r   r   r   r   r   r   r   r   r   r8   r   r   rA   r   r   r8   r   r   rA   r   r   r   r   r   r   r   r   r   r8   r   r   rA   r   r   r8   r   r   rA   r8   r8   r   rA   rA      r(   r   r*   rf   r   r;   r   r)   l     p>Z6-(3{ CzVgsR&r2   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`( r:   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   dup_zz_heu_gcddup_rr_prs_gcdr   dup_qq_heu_gcddup_ff_prs_gcddup_diff)r   r
   r   r   r   cffcfgr"   r"   r#   test_dup_gcd  s   ,,,,::,,00FFFF"B"B6, @0@0







	

"" "" r   c               
   C   s
  t dt\} }}d\}}| ||| ||  krdks"J  J d\}}| ||| ||  kr9dks<J  J d\}}| ||| ||  krSdksVJ  J d\}}| ||| ||  krmd	kspJ  J d
d| d }}| ||| ||  krd| d d
dfksJ  J d| d d
}}| ||| ||  krd| d dd
fksJ  J d\}}| ||| ||  krdksJ  J d\}}| ||| ||  krdksJ  J d\}}| ||| ||  kr	dksJ  J d\}}| ||| ||  kr%dks(J  J |d d|  d d}}| ||| ||  krUd|d d|  d dfksXJ  J |d d|  d d}}| ||| ||  krd|d d|  d dfksJ  J d|d  d|  d d}}| ||| ||  krd|d d|  d dfksJ  J dd|d  d|  d }}| ||| ||  krdd|d d|  d fksJ  J d|d  d|  d |d }}| ||| ||  kr|d d| d dfksJ  J |d d|d  d|  d }}| ||| ||  krM|d dd| d fksPJ  J t dt\} }}}}|d d|  d d| d }}| ||| ||  kr|d |d dfksJ  J |d |d  d|d  |  |d  ||  | |d d|  d }}|d |d | |d  | |d }}}	| |||||	fksJ | |||||	fksJ | ||||	|fksJ | ||||	|fksJ t dt\} }}}t| jtdt\}}}| ||\}
}}	|
|kr2| |
||kr2| |
|	|ks4J | ||\}
}}	|
|krT| |
||krT| |
|	|ksVJ t dt\} }}}}}t| jtdt\}}}| ||\}
}}	|
|kr| |
||kr| |
|	|ksJ t dt\} }}}}}}}t| jtdt\}}}| ||\}
}}	|
|kr| |
||kr| |
|	|ksJ t dt\
} }}}}}}}}}t| jtdt\}}}| ||\}
}}	|
|kr| |
||kr| |
|	|ksJ t dt\} }}}t| jtdt\}}}| ||\}
}}	|
|kr<| |
||kr<| |
|	|ks>J | ||\}
}}	|
|kr^| |
||kr^| |
|	|ks`J t| jt	dt\}}}| ||\}
}}	|
|kr| |
||kr| |
|	|ksJ | ||\}
}}	|
|kr| |
||kr| |
|	|ksJ t dt\} }}}}}t| jt	dt\}}}| 
||\}
}}	|
|kr| |
||kr| |
|	|ksJ t dt\} }}tdd|d  | tdd }tdd| tdd }|d }| ||||tddfks"J | ||||tddfks3J t dt\} }}d| |d  d| |  d|  }d|d   }| ||d| d|d  d|  d d|d  fksqJ d S )!NrJ   ro   rp   rq   rr   rs   rt   ru   rv   r   r   r   r   rw   rx   ry   rz   r{   r|   r}   r~   rk   rj   rR   zx,y,z,u,v,a,br   zx,y,z,u,v,a,b,c,dr(   g @g@g      ?r   )r   r   dmp_zz_heu_gcddmp_rr_prs_gcdmap
from_denser   dmp_mulr   r	   dmp_inner_gcdr   dmp_qq_heu_gcddmp_ff_prs_gcdr   )r   r
   r\   r   r   r^   r_   r   r   r   r!   r`   rE   rF   rG   rH   r"   r"   r#   test_dmp_gcd  s   ,,,,::,,00FFFF"B"B">J, ""$
(r   c                  C   sV  t dt\} }| dddksJ | d|d  d| d|d  ks%J | d|d  d| d|d  ks9J | |d | ||d | ksKJ | |d | d| d|d  d|  kscJ | |d d|  ||d d|  ksyJ | d|d  | |d|d  | ksJ | d|d  | d| d|d  d|  ksJ d S )Nr
   r   r   r   r   )r   r   dup_lcmr&   r"   r"   r#   test_dup_lcm8  s   (($0,,8r   c                  C   s  t dt\} }}| dddksJ | |||| ksJ | d|d  d| |d  d|d  |d  ks:J | d|d  d| |d  d|d  |d  ksVJ | |d | ||d  |d |d  ksnJ d| |d  d| |d   d| |d   d| |d   }|d d|d   | }d| |d  d| |d   d| |d   d| |d   d| |d   d| |d   }| |||ksJ |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sIJ d S )NrJ   r   r   r   r   r   r:   r)   r   r>   rS   2   /   r   )r   r   dmp_lcm)r   r
   r\   r   r   r   r"   r"   r#   test_dmp_lcmG  s   880@`4HXr   c            	      C   s   t dt\} }}| ddksJ d|d  d|  d dd}}}tddD ]}||9 }||| | 7 }q(| |||ksCJ t dt\} }}}| tdksUJ | tdks^J t d	t\} }}}}| tdksqJ d S )
NrJ   r8   r   r   r   r   r   rj   x,y,z,t)r   r   dmp_contentranger[   f_4f_5f_6)	r   r
   r\   r   r   Fir^   r   r"   r"   r#   test_dmp_content_  s   $r   c            
      C   s0  t dt\} }}| ddksJ | ddksJ d|d  d|  d dd}}}tddD ]}||9 }||| | 7 }q1| ||||| fksPJ t d	t\} }}}| t\}}|dkrh|tksjJ | t\}}|dkry|tks{J t d
t\} }}}}	| t\}}|dkr|tksJ d S )NrJ   r   ro   r   )r   r   r   r   r   rj   r   )r   r   dmp_primitiver   r[   r   r   r   )
r   r
   r\   r   r   r   r   r^   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/J | j||dddd||fks?J | d }d| d }|d }d| d }| ||||fks`J | ||||fkslJ | d	d	d
ksvJ | jd	d	dddksJ | |d	dksJ | j|d	dddksJ | d	|dksJ | jd	|dddksJ d	}|}d}| j||dd||fksJ d S )Nr
   r   r   Fincluder   r   rL   r   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   T)r   r   
dup_cancel)	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s0J | j||dddd||fks@J | dddksJJ | jdddddksVJ | |dd	ks`J | j|dddd
kslJ | d|dksvJ | jd|dddksJ d S )NrJ   r   r   Fr   r   ro   r   r   r   r   r   )r   r   
dmp_cancel)r   r
   r\   r   r   r   r   r"   r"   r#   test_dmp_cancel  s    r   N)#__doc__sympy.polys.ringsr   sympy.polys.domainsr   r   r   sympy.polys.specialpolysr   r   r   r	   f_0f_1f_2f_3r   r   r   r$   r'   r/   r4   rI   rc   ri   rn   r   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s.    #GN  %