U
    	-e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st| |||||fkst|d d|d   | d }|d | d }| ||\}}}| ||\}}}	| | ||| |||ksDt| | ||| |||	ksjtd| }|d d
 }tdd| }tdd
 }d}| ||||fkst| |||||fkst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   c/var/www/html/Darija-Ai-Train/env/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  iuLiif )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st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st| ||dkst|d d }|d d }d}| |||||gkst| ||dkst|d d }|d |d  d }| ||dkstd|d  | }d	|d  d }| ||dksTt|d d|  d }|d | d	 }| ||dkst|d d|d   d|  d }|d d|d   d|  d }| ||dkst|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st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st| dddkst| dddkst| ddd dkst| dddkst| dddkst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st| |||kst| ||d |kst| |||ks
t| |||ks t|d  d }d|d  | |d  }d|d  d|  d }d|d  d|d   d|  d }| |}| |||||gkst| |||kst| ||d |kst| |||kst| |||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st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st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
   ir:   i , i! ib 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st| |d d|d   d|d   d|  d dkst| d|d  d|d   d|d   |d  d dkstd S )Nr
   r   r   r   r   r%   r,   pr   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st| d	|d	  |d  d d
kst| |d d|d   d|d   d|  d dkst| 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stt dt\} }}}}| |d | ||  | d| | |d  |kstt dt\} }}}}}| |d | |d |  ||  | d|d  |d  d| | | |  d| |d   d|d  |  |d |d   |kst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,urJ   irK   )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rdksn td\}}| ||| ||  krd	ksn 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rdksn td\}}| ||| ||  krdksn td\}}| ||| ||  krdksn td\}}| ||| ||  krDdksJn t|d d|  d d }}| ||| ||  krd|d d|  d dfksn 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rdd|d d|  d fksn 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sn t|d | }}| ||| ||  krd||fksn 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st|d d }|d d|d   d }|d d }|d d }|d d }| |||||fkst| |||||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st| |||||fkst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st| ||||tddfkst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>Z6-(3{ CzVgsR&r-   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`( r4   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   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rdksn td\}}| ||| ||  krd	ksn 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rdksn td\}}| ||| ||  krdksn td\}}| ||| ||  krdksn td\}}| ||| ||  krFdksLn t|d d|  d d }}| ||| ||  krd|d d|  d dfksn 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rdd|d d|  d fksn 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sn 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st| |||||	fkst| ||||	|fkst| ||||	|fkstt dt\} }}}t| jtdt\}}}| ||\}
}}	|
|krR| |
||krR| |
|	|ksVt| ||\}
}}	|
|kr| |
||kr| |
|	|kst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stt dt\
} }}}}}}}}}t| jtdt\}}}| ||\}
}}	|
|kr| |
||kr| |
|	|kstt dt\} }}}t| jt	dt\}}}| ||\}
}}	|
|krf| |
||krf| |
|	|ksjt| ||\}
}}	|
|kr| |
||kr| |
|	|kst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	st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
st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st| |d | d| d|d  d|  kst| |d d|  ||d d|  kst| 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st| |d | ||d  |d |d  kstd| |d  d| |d   d| |d   d| |d   }|d d|d   | }d| |d  d| |d   d| |d   d| |d   d| |d   d| |d   }| |||kst|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st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stt dt\} }}}| tdkst| tdkstt d	t\} }}}}| tdkst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stt d	t\} }}}| t\}}|dkr|tkst| t\}}|dkr|tkst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st| ||||fkst| d	d	d
kst| 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st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st| dddkst| jdddddkst| |dd	kst| j|dddd
kst| d|dkst| 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  %