
    sgL                         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 Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"y)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                     t        dt              \  } }|dz  d|dz  z  z
  d|dz  z  z
  d|z  z   dz   }|dz  |dz  z   d|z  z
  dz
  }t        dd	       |z  t        dd	      z   }t        dd	      |dz  z  t        dd	      |z  z
  dz   }|dz   }| j                  ||      ||fk(  sJ | j                  ||      |||fk(  sJ |dz  d|dz  z  z   |z
  dz   }|dz  |z
  dz   }| j                  ||      \  }}}| j                  ||      \  }}}	| j	                  | j                  ||      | j                  ||            |k(  sJ | j	                  | j                  ||      | j                  ||            |	k(  sJ d|z  }|dz  d
z
  }t        dd      |z  }t        dd
       }d}| j                  ||      ||fk(  sJ | j                  ||      |||fk(  sJ y )Nx                               )r   r   dup_half_gcdex	dup_gcdexdup_adddup_mul)
Rr   fgsthSTHs
             U/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_euclidtools.pytest_dup_gcdexr%      s+   R=DAq	1qAv!Q$A%*A	1q!tacAA	Aa
R!WA
1Q1r!Awqy 1$A	AAAq!aV+++;;q!Aq	)))	1qAvAA	1q1Akk!QGAq!kk!QGAq!99QYYq!_YYq!_&)*+ + +99QYYq!_YYq!_&)*+ + + 	
!A	1r	A
1R
A	Ab	A	AAq!aV+++;;q!Aq	)))    c                      t        dt              \  } }| j                  d|z  |dz  dz
        t        dd      |z  k(  sJ y )Nr   r   r   r   r   )r   r   
dup_invertr   r   s     r$   test_dup_invertr*   1   s@    R=DAq<<!QTBY'2a8A:555r&   c            
         t        dt              \  } }|dz  |dz  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz
  }d|dz  z  d|dz  z  z   d|dz  z  z
  d|z  z
  d	z   }| j                  ||      ||t        dd       |dz  z  t        d
d      |dz  z  z   t        d
d      z
  t        dd       |dz  z  d|z  z
  t        dd      z   t        dd      |z  t        dd      z
  t        dd       gk(  sJ y )Nr      r   r   r   r   r   	      r   u      i  i i=M  id i  iuLiif )r   r   dup_euclidean_prsr   r   r   r   s       r$   test_dup_euclidean_prsr3   6   s5   R=DAq	1q!ta1fqAv%!Q$.14q8A	!Q$1a4!AqD& 1Q3&+Aq!$			AaA1Q1$r!Aw.	CAqD1Q3C+
6%Rt_,	Jy	!!)# # # #r&   c                  P   t        dt              \  } }|dz  |dz  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz
  }d|dz  z  d|dz  z  z   d|dz  z  z
  d|z  z
  d	z   }| j                  ||      ||d
|dz  z  |dz  z   dz
  d|dz  z  d|z  z   dz
  d|z  dz
  dgk(  sJ y )Nr   r,   r   r   r   r   r   r-   r.      r0   1   i7  i  r   )r   r   dup_primitive_prsr2   s       r$   test_dup_primitive_prsr9   E   s    R=DAq	1q!ta1fqAv%!Q$.14q8A	!Q$1a4!AqD& 1Q3&+Aq!$		
1a4!Q$
1a4"Q$Q	)   r&   c                  <   t        dt              \  } }| j                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      dk(  sJ |dz  |dz  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   d	z
  }d|dz  z  d	|dz  z  z   d|dz  z  z
  d
|z  z
  dz   }d|dz  z  d|dz  z  z
  d
z   }d|dz  z  d|z  z   dz
  }d|z  dz
  }d}| j                  ||      ||||||gk(  sJ | j                  ||      | j	                  |      k(  sJ |dz  d|z  z
  dz   }|dz  dz
  }d|z  dz
  }| j                  ||      |||gk(  sJ | j                  ||      dk(  sJ |dz  dz   }|dz  dz
  }d}| j                  ||      |||gk(  sJ | j                  ||      dk(  sJ |dz  dz
  }|dz  |dz  z
  dz   }| j                  ||      dk(  sJ d|dz  z  |z
  }d	|dz  z  dz   }| j                  ||      dk(  sJ |dz  d|z  z
  dz   }|dz  |z
  d	z   }| j                  ||      dk(  sJ |dz  d|dz  z  z
  d|z  z   dz
  }|dz  d|dz  z  z
  d|z  z   dz
  }| j                  ||      dk(  sJ |dz  d|dz  z  z
  d|z  z   dz
  }|dz  d|dz  z  z
  d|z  z   dz
  }| j                  ||      dk(  sJ |dz  dz
  }|dz  d|dz  z  z   d|z  z   dz
  }| j                  ||      dk(  sJ |dz  dz
  }|dz
  }| j                  ||      dk(  sJ y ) 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ds           r$   test_dup_subresultantsrO   T   s   R=DAq??1a A%%%??1a A%%%??1a A%%%	1q!ta1fqAv%!Q$.14q8A	!Q$1a4!AqD& 1Q3&+A
1a4!AqD&1A
1a4#a%#AQAAq!$Aq!Q(::::??1a AHHQK///	1qs
QA	1qA	!aAq!$Aq	111??1a A%%%	1qA	1qA
Aq!$Aq	111??1a A%%%	1qA	1q!taA??1a A%%%	!Q$
A	!Q$
A??1a B&&&	1qs
QA	1q1A??1a C'''	1qAv1q A	1r!Q$wA#A??1a E)))	1qAv1q A	1r!Q$wA"A??1a A%%%	1qA	1qAv!aA??1a B&&&	1qA	AA??1a B&&&r&   c                     t        dt              \  } }}| j                  dd      dk(  sJ | j                  dd      d   dk(  sJ | j	                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      dk(  sJ | j                  dd      d   dk(  sJ | j	                  dd      dk(  sJ | j                  dd      dk(  sJ d|dz  z  |z  |dz  z
  dz
  }|dz  ||dz  z  z   dz
  }d|z  |dz  z  |dz  z   d|z  z
  dz   }d	|d
z  z  d|dz  z  z
  |dz  z   d|dz  z  z
  d|dz  z  z   d|dz  z  z   d|z  z
  dz   }| j                  |      }| j                  ||      ||||gk(  sJ | j                  ||      |k(  sJ | j                  ||      d   |k(  sJ | j	                  ||      |k(  sJ | j                  ||      |k(  sJ |dz   dz   }d|dz  z  |z  |dz  z   }d|dz  z  d|z  z   dz   }d|dz  z  d|dz  z  z   d|z  z   dz   }| j                  |      }| j                  ||      |||gk(  sJ | j                  ||      |k(  sJ | j                  ||      d   |k(  sJ | j	                  ||      |k(  sJ | j                  ||      |k(  sJ t        dt              \  } }}}}	}
d|dz  z  d|z  |z  z
  d|z  |z  z
  ||z  z   }|dz  ||	z  z
  ||
z  z
  |	|
z  z   }|dz  |dz  z  d|dz  z  |z  |	z  z
  d|dz  z  |z  |
z  z
  d|dz  z  |	z  |
z  z   d|z  |dz  z  |	z  z
  d|z  |dz  z  |
z  z
  d|z  |z  |	dz  z  z   d|z  |z  |	z  |
z  z   d|z  |z  |
dz  z  z   d|z  |	dz  z  |
z  z
  d|z  |	z  |
dz  z  z
  d|dz  z  |	z  |
z  z   d|z  |	dz  z  |
z  z
  d|z  |	z  |
dz  z  z
  d|	dz  z  |
dz  z  z   }| j	                  ||      |j                  |      k(  sJ t        dt              \  } }}}}	}
|dz  t        dd      |z  |z  z
  t        dd      |z  |z  z
  t        dd      |z  |z  z   }|dz  ||	z  z
  ||
z  z
  |	|
z  z   }t        dd      |dz  z  |dz  z  t        dd      |dz  z  |z  |	z  z
  t        dd      |dz  z  |z  |
z  z
  t        dd      |dz  z  |	z  |
z  z   t        dd      |z  |dz  z  |	z  z
  t        dd      |z  |dz  z  |
z  z
  t        dd      |z  |z  |	dz  z  z   t        dd      |z  |z  |	z  |
z  z   t        dd      |z  |z  |
dz  z  z   t        dd      |z  |	dz  z  |
z  z
  t        dd      |z  |	z  |
dz  z  z
  t        dd      |dz  z  |	z  |
z  z   t        dd      |z  |	dz  z  |
z  z
  t        dd      |z  |	z  |
dz  z  z
  |	dz  |
dz  z  z   }| j                  ||      |j                  |      k(  sJ t        dt              \  }}t        d|      \  }}|dz  d|dz  z  z
  d|dz  z  z   dz   }d|z  |dz  z  |dz  z   d|z  |dz  z  z   d|dz  z  z
  d
|z  |z  z
  dz   }|j                  ||      d |dz  z  d!|dz  z  z   d"|dz  z  z   d#z   k(  sJ y )$Nx,yr   r   r   r   r   r-      rD   r   r@   r   6   r,   i     r   r   -      i     r0   	x,y,z,u,v   $   r   r   irF   i , i! ib i  )r   r   dmp_resultantdmp_prs_resultantdmp_zz_collins_resultantdmp_qq_collins_resultantdmp_LCdmp_subresultantsdropr   rH   )r   r   yr   r   rK   rL   rzuvRtr   Rxs                 r$   test_dmp_subresultantsrj      s   5"oGAq!??1a A%%%q!$Q'1,,,%%a+q000%%a+q000??1a A%%%??1a A%%%??1a A%%%??1a A%%%q!$Q'1,,,%%a+q000%%a+q000	!Q$q1a4!A	1qAvA	!AqD1a4"Q$"A
1b52ad7QT!Bq!tG+a1f4s1a4x?#a%G"LA	Aq!$Aq!444??1a A%%%q!$Q'1,,,%%a+q000%%a+q000	
A	A	!Q$q1a4A
1a4"Q$AAqD3q!t8c!e#b(A	Aq!$Aq	111??1a A%%%q!$Q'1,,,%%a+q000%%a+q000K,Aq!Q1	!Q$1Q1Q1$A	1qs
QqS1Q3A	1QT	AadF1HQJ1a4!+a1fQhqj81Q3q!t8A:E	!AqD
	qSU1a4Z	 "$Q$q&(1*	-/0s1uQTz	:<>qDAIaK	H
1Qq!t	1fQhqj	!#%a419Q;	/13Aa1	=?A!Q$wq!t|	LA %%a+qvvay888K,Aq!Q1	1r!Awqy{R!WQYq[(2a719Q;6A	1qs
QqS1Q3A
1RAadR"Xad]1_Q..Ab!Q$q1BBR!WQPQT\RS^TUEUU
1R
1a4	qHQJq!tOA-	.021Q	!AqD0@	ACEa719Q;q=QR?	S
1Q	!AqD	a719QT>!+	,.01gaik!Q$.>	?ACAaAaPQAQ	R 	1Q	!Q$q	 a719Q;q!t+	, /0d1a4i	8A
 %%a+qvvay888bMEBbMEB	1qAv!Q$"A
1QT	AqD2a419$qAv-1Q6:AAq!WQT\GAqDL%@6!Q$;%NQV%VVVVr&   c                     t        dt              \  } }| j                  d      dk(  sJ | j                  |      dk(  sJ | j                  |dz  d|dz  z  z   d|z  z   dz
        dk(  sJ | j                  d	|d	z  z  |dz  z   dz         d
k(  sJ | j                  |dz  d|dz  z  z   d|dz  z  z   d|z  z
  dz         dk(  sJ | j                  d|dz  z  d|dz  z  z   d|dz  z  z   |dz  z   dz         dk(  sJ y )Nr   r   r   r   r   r-   r6   pr   r   r      r   r@   r   rW    	BBu)r   r   dup_discriminantr)   s     r$   test_dup_discriminantrq      s6   R=DAqa A%%%a A%%%adQq!tVmac1B676AAAa1fq!tma/0H<<<adQq!tVma1f4r!t;b@AQFFFbAg1a4/"QT'9AqD@1DEI\\\\r&   c                  2   t        dt              \  } }| j                  d      dk(  sJ t        dt              \  } }}| j                  d      dk(  sJ | j                  |      dk(  sJ | j                  |dz  d|dz  z  z   d|z  z   dz
        dk(  sJ | j                  d	|d	z  z  |dz  z   dz         d
k(  sJ | j                  |dz  d|dz  z  z   d|dz  z  z   d|z  z
  dz         dk(  sJ | j                  d|dz  z  d|dz  z  z   d|dz  z  z   |dz  z   dz         dk(  sJ | j                  |dz  |z  d|z  z         d|dz  z  j                  |      k(  sJ | j                  ||dz  z  d|z  z         dk(  sJ t        dt              \  } }}}| j                  ||z  |z         dk(  sJ t        dt              \  } }}}}| j                  |dz  |z  ||z  z   |z         d|z  |z  |dz  z   j                  |      k(  sJ t        dt              \  } }}}}}| j                  |dz  |z  |dz  |z  z   ||z  z   |z         d|dz  z  |dz  z  d|z  |z  |z  |z  z   d|z  |dz  z  z
  d|dz  z  |z  z
  |dz  |dz  z  z   j                  |      k(  sJ y )Nr   r   rQ   r   r   r-   r6   rl   r   rm   r   r   rn   r   r@   r   rW   r   ro   ix,y,zx,y,z,urY   irZ   )r   r   dmp_discriminantrb   )r   r   rc   re   rf   rg   s         r$   test_dmp_discriminantrw      s   R=DAqa A%%%5"oGAq!a A%%%a A%%%adQq!tVmac1B676AAAa1fq!tma/0H<<<adQq!tVma1f4r!t;b@AQFFFbAg1a4/"QT'9AqD@1DEI\\\\ad1fqsl+1a4~~a/@@@@a1fqsl+q000gr"JAq!QacAg&!+++B'MAq!Qad1fqslQ./BqDFQTM3G3G3JJJJK,Aq!Q1ad1fq!tAvo!3a78	QT!Q$Aa!	#ac!Q$h	.1a4	9AqDAI	EKKANO O Or&   c                  V   t        dt              \  } }d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rd	k(  sJ  J d
d|z  dz   }}| j                  ||      | j                  ||      cxk(  rd|z  dz   d
dfk(  sJ  J d|z  dz   d
}}| j                  ||      | j                  ||      cxk(  rd|z  dz   dd
fk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J |dz  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J |dz  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J d|dz  z  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J dd|dz  z  d|z  z   dz   }}| j                  ||      | j                  ||      cxk(  rdd|dz  d|z  z   dz   fk(  sJ  J d|dz  z  d|z  z   dz   |dz   }}| j                  ||      | j                  ||      cxk(  r|dz   d|z  dz   dfk(  sJ  J |dz   d|dz  z  d|z  z   dz   }}| j                  ||      | j                  ||      cxk(  r|dz   dd|z  dz   fk(  sJ  J |dz
  |}}| j                  ||      | j                  ||      cxk(  r	d||fk(  sJ  J |dz  d|dz  z  z   d|dz  z  z   d|z  z   dz   }|dz  d|dz  z  z   d|z  z   dz   }|dz  d|z  z   dz   }|dz  d|z  z   dz   }|dz   }| j                  ||      |||fk(  sJ | j                  ||      |||fk(  sJ |dz  dz
  }|dz  d|dz  z  z   dz   }|dz  dz   }|dz  dz
  }|dz  dz   }| j                  ||      |||fk(  sJ | j                  ||      |||fk(  sJ |dz  |dz  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz
  }d|dz  z  d|dz  z  z   d|dz  z  z
  d|z  z
  dz   }d}|}|}| j                  ||      |||fk(  sJ | j                  ||      |||fk(  sJ t        dt              \  } }|dz  |dz  z   d|dz  z  z
  d|dz  z  z
  d|dz  z  z   d|z  z   dz
  }d|dz  z  d|dz  z  z   d|dz  z  z
  d|z  z
  dz   }d}|}|}| j                  ||      |||fk(  sJ | j                  ||      |||fk(  sJ t        dt              \  } }d|d z  z  d!|d"z  z  z   d#|d$z  z  z   d%|d&z  z  z   d'|dz  z  z
  d(|d)z  z  z   d*|d+z  z  z   d,z   }d-|dz  z  d.|d)z  z  z   d/|d+z  z  z
  d,z
  }| j                  || j                  |d            d
   |k(  sJ | j                  || j                  |d            d
   |k(  sJ t        dt              \  } }t	        dd      |dz  z  |z   t	        dd      z   }t	        dd      |z  t	        dd      z   }|dz   }| j                  ||      ||t	        dd      fk(  sJ | j                  ||      ||t	        dd      fk(  sJ t        dt              \  } }d0|z  d1z   }d2|z  d3z   }d2|z  d3z   }d4}d}| j                  ||      |||fk(  sJ y )5Nr   r   r   r   r   r   r   r   r   r   r   r>   r   r   rG   r   r   r>   r   r   rG   r   r   r   r   r   r   r   r   r   r>   r   r   rG   r   r   r>   r   r   rG   r>   r>   r   rG   rG      r,   r   r.   rn   r   rA   r   r-   l     p>Z6-(3{ CzVgsR&r7   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cfgs          r$   test_dup_gcdr     s
   R=DAqDAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;IzIIIIIacAgqAAq!Q%5%5a%;N!aANNNNNQ37AqAAq!Q%5%5a%;N!aANNNNNDAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;J{JJJJJa4!A#:>1qAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUa4!A#:>1qAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUQT6AaC<!QqAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUa1fqslQqAAq!Q%5%5a%;U1adQqSjSTn?UUUUUUQT6AaC<!QUqAAq!Q%5%5a%;RAqsQwPQ?RRRRRRq5!AqD&1Q3,"qAAq!Q%5%5a%;RAq!A#PQ'?RRRRRRr61qAAq!Q%5%5a%;H1ayHHHHH	1qAv1a4"Q$&*A	1qAv1q A	1qs
QA
Q$1*q.C
a%CAq!ac]222Aq!ac]222	1qA	1qAvA	1qA
Q$(C
Q$(CAq!ac]222Aq!ac]222	1q!ta1fqAv%!Q$.14q8A	!Q$1a4!AqD& 1Q3&+A	A
C
CAq!ac]222Aq!ac]222R=DAq	1q!ta1fqAv%!Q$.14q8A	!Q$1a4!AqD& 1Q3&+A	A
C
CAq!ac]222Aq!ac]222R=DAqdefhjejj
]^_ac^c
c	d
XYZ\^Y^
^	_ SSTVXSX
X	Y LArE
Q		R
 DArE
I	J :!Q$
>	? /	/A Gq"u
L
@B
FG
8A
=> //A
 Aqzz!Q/03q888Aqzz!Q/03q888R=DAq
1Q1q2a7"A
1Q	BqGA	AAAq!aBqG_444Aq!aBqG_444R=DAqq #99A111A111A
C
CAq!ac]222r&   c            
      n   t        dt              \  } }}d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rd	k(  sJ  J d
d|z  dz   }}| j                  ||      | j                  ||      cxk(  rd|z  dz   d
dfk(  sJ  J d|z  dz   d
}}| j                  ||      | j                  ||      cxk(  rd|z  dz   dd
fk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J d\  }}| j                  ||      | j                  ||      cxk(  rdk(  sJ  J |dz  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J |dz  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J d|dz  z  d|z  z   dz   d}}| j                  ||      | j                  ||      cxk(  rd|dz  d|z  z   dz   dfk(  sJ  J dd|dz  z  d|z  z   dz   }}| j                  ||      | j                  ||      cxk(  rdd|dz  d|z  z   dz   fk(  sJ  J d|dz  z  d|z  z   dz   |dz   }}| j                  ||      | j                  ||      cxk(  r|dz   d|z  dz   dfk(  sJ  J |dz   d|dz  z  d|z  z   dz   }}| j                  ||      | j                  ||      cxk(  r|dz   dd|z  dz   fk(  sJ  J t        dt              \  } }}}}|dz  d|z  z   dz   d|z  dz   }}| j                  ||      | j                  ||      cxk(  r|dz   |dz   dfk(  sJ  J |dz  |dz  z  d|dz  z  |z  z   |dz  z   ||z  z   |z   |dz  d|z  z   dz   }}|dz   |dz  |z  |dz  z   |z   |dz   }	}}| j                  ||      |||	fk(  sJ | j                  ||      |||	fk(  sJ | j                  ||      ||	|fk(  sJ | j                  ||      ||	|fk(  sJ t        dt              \  } }}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ | j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \  } }}}}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \  } }}}}}}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \
  } }}}}}}}}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \  } }}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ | j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ | j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \  } }}}}}t	        | j
                  t        dt                    \  }}}| j                  ||      \  }
}}	|
|k(  r*| j                  |
|      |k(  r| j                  |
|	      |k(  sJ t        dt              \  } }}t        dd      |dz  z  |z   t        dd      z   }t        dd      |z  t        dd      z   }|dz   }| j                  ||      ||t        dd      fk(  sJ | j                  ||      ||t        dd      fk(  sJ t        dt              \  } }}d|z  |dz  z  d|z  |z  z
  d|z  z   }d|d z  z  }| j                  ||      d|z  d|dz  z  d|z  z
  dz   d|dz  z  fk(  sJ y )!NrQ   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rt   rs   rY   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   rc   r   r   re   rf   r    r   r   r#   rg   rK   rL   rM   rN   s                   r$   test_dmp_gcdr     s8   5"oGAq!DAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;IzIIIIIacAgqAAq!Q%5%5a%;N!aANNNNNQ37AqAAq!Q%5%5a%;N!aANNNNNDAqAq!Q%5%5a%;HyHHHHHDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;IzIIIIIDAqAq!Q%5%5a%;J{JJJJJa4!A#:>1qAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUa4!A#:>1qAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUQT6AaC<!QqAAq!Q%5%5a%;U1a4!A#:PQ>ST?UUUUUUa1fqslQqAAq!Q%5%5a%;U1adQqSjSTn?UUUUUUQT6AaC<!QUqAAq!Q%5%5a%;RAqsQwPQ?RRRRRRq5!AqD&1Q3,"qAAq!Q%5%5a%;RAq!A#PQ'?RRRRRRB'MAq!Qa4!A#:>1Q37qAAq!Q%5%5a%;PAq1ua?PPPPPPa419qAvax!Q$&1,q0!Q$1*q.qAa%Aa!Q$*AECsAAq!ac]222Aq!ac]222Aq!ac]222Aq!ac]222gr"JAq!Q!,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - ""1a(KAsC6aii3'1,ii3'1,- - K,Aq!Q1!,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - "/26Aq!Q1a!,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - $((;R#@ Aq!Q1aAq!,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - gr"JAq!Q!,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - ""1a(KAsC6aii3'1,ii3'1,- - !,, 4Q ;<GAq!""1a(KAsC6aii3'1,ii3'1,- - ""1a(KAsC6aii3'1,ii3'1,- - K,Aq!Q1!,, 4Q ;<GAq!//!Q'KAsC6aii3'1,ii3'1,- - 5"oGAq!
1Q1q2a7"A
1Q	BqGA	AAAq!aBqG_444Aq!aBqG_4445"oGAq!Aad
SU1Ws1u$AAqDAAq!	QAqD3q5 3&AqD12 2 2r&   c                     t        dt              \  } }| j                  dd      dk(  sJ | j                  d|dz  z  d|z        d|dz  z  k(  sJ | j                  d|dz  z  d|z        d|dz  z  k(  sJ | j                  |dz  |z   |      |dz  |z   k(  sJ | j                  |dz  |z   d|z        d|dz  z  d|z  z   k(  sJ | j                  |dz  d|z  z   |      |dz  d|z  z   k(  sJ | j                  d|dz  z  |z   |      d|dz  z  |z   k(  sJ | j                  d|dz  z  |z   d|z        d|dz  z  d|z  z   k(  sJ y )Nr   r   r   r   r   )r   r   dup_lcmr)   s     r$   test_dup_lcmr   8  s|   R=DAq99Q?a99Qq!tVQqS!Qq!tV+++99Qq!tVQqS!Qq!tV+++99QTAXq!QTAX---99QTAXqs#qAv!|33399QTAaCZ#q!tacz11199Qq!tVaZ#qAvz11199Qq!tVaZ1%1a4!A#555r&   c                  P   t        dt              \  } }}| j                  dd      dk(  sJ | j                  ||      ||z  k(  sJ | j                  d|dz  z  d|z  |dz  z        d|dz  z  |dz  z  k(  sJ | j                  d|dz  z  d|z  |dz  z        d|dz  z  |dz  z  k(  sJ | j                  |dz  |z  ||dz  z        |dz  |dz  z  k(  sJ d|z  |dz  z  d|z  |dz  z  z
  d|z  |dz  z  z
  d|z  |dz  z  z   }|dz  d|dz  z  z
  |z   }d|z  |dz  z  d|z  |dz  z  z
  d|z  |dz  z  z
  d|z  |dz  z  z   d|z  |dz  z  z   d|z  |dz  z  z
  }| j                  ||      |k(  sJ |dz  d|dz  z  |z  z
  d|z  |dz  z  z
  d|dz  z  z
  }|dz  d|dz  z  |z  z   d	|dz  z  |dz  z  z   d
|z  |dz  z  z   d|dz  z  z   }|dz  |dz  |z  z   d|dz  z  |dz  z  z
  d|dz  z  |dz  z  z
  d|z  |dz  z  z
  d|dz  z  z
  }| j                  ||      |k(  sJ y )NrQ   r   r   r   r   r   r@   r-   r   rD   rZ   2   /   r   )r   r   dmp_lcm)r   r   rc   r   r   r    s         r$   test_dmp_lcmr   G  s   5"oGAq!99Q?a99Q?ac!!!99Qq!tVQqSAX&!AqD&A+55599Qq!tVQqSAX&!AqD&A+55599QT!VQq!tV$1QT	111	!AqD1Q3q!t8ac!Q$h&1QT1A	1qAvA	!AqD1Q3q!t8ac!Q$h&1QT1AaC1H<qs1a4xGA99Q?a	1qAvax!A#ad("Qq!tV+A	1qAvax"QT'!Q$,&Aad2Qq!tV;A	1q!tAv1a41$r!Q$wq!t|3bd1a4i?"QT'IA99Q?ar&   c                      t        dt              \  } }}| j                  d      dk(  sJ d|dz  z  d|z  z   dz   dd}}}t        dd      D ]  }||z  }|||z  |z  z  } | j                  |      |j	                  |      k(  sJ t        dt              \  } }}}| j                  t
              dk(  sJ | j                  t              dk(  sJ t        d	t              \  } }}}}| j                  t              dk(  sJ y )
NrQ   r>   r   r   r   r   r   rs   x,y,z,t)r   r   dmp_contentrangerb   f_4f_5f_6)	r   r   rc   r   r   Fire   r   s	            r$   test_dmp_contentr   _  s   %_FAq==!!!1fqslQ1!qA1a[ 	Q	QT!V ==qvvay(((GR HAq1=="""=="""i$JAq1Q=="""r&   c                     t        dt              \  } }}| j                  d      dk(  sJ | j                  d      dk(  sJ d|dz  z  d|z  z   dz   dd}}}t        dd      D ]  }||z  }|||z  |z  z  } | j                  |      |j	                  |      ||z  fk(  sJ t        d	t              \  } }}}| j                  t
              \  }}|dk(  r	|t
        k(  sJ | j                  t              \  }}|dk(  r	|t        k(  sJ t        d
t              \  } }}}}	| j                  t              \  }}|dk(  r	|t        k(  sJ y )NrQ   r   ry   r   )r   r   r   r   r   rs   r   )r   r   dmp_primitiver   rb   r   r   r   )
r   r   rc   r   r   r   r   re   contr   s
             r$   test_dmp_primitiver   u  sW   %_FAq??1'''??1'''1fqslQ1!qA1a[ 	Q	QT!V ??1!&&)QU!3333GR HAq1ooc"GD!19c!!ooc"GD!19c!!i$JAq1Qooc"GD!19c!!r&   c                     t        dt              \  } }d|dz  z  dz
  }|dz  d|z  z
  dz   }d|z  dz   }|dz
  }| j                  ||      ||fk(  sJ | j                  ||d      dd||fk(  sJ | dz
  }d|z  dz
  }|dz   }d|z  dz   }| j                  ||      ||fk(  sJ | j                  ||      ||fk(  sJ | j                  d	d	      d
k(  sJ | j                  d	d	d      dk(  sJ | j                  |d	      dk(  sJ | j                  |d	d      dk(  sJ | j                  d	|      dk(  sJ | j                  d	|d      dk(  sJ d	}|}d}| j                  ||d      ||fk(  sJ y )Nr   r   r   Fincluder   r   rS   r   ry   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ones	            r$   test_dup_cancelr     s   R=DAq	!Q$
A	1qs
QA	!aA	AA<<1!Q'''<<1e<,Aq!<<<	
QA	!aA	AA
1qA<<1!Q'''<<1!Q'''<<1'''<<1e<,<<<<<1'''<<1e<,<<<<<1'''<<1e<,<<<	A	A
C<<1d<+3x777r&   c                     t        dt              \  } }}d|dz  z  dz
  }|dz  d|z  z
  dz   }d|z  dz   }|dz
  }| j                  ||      ||fk(  sJ | j                  ||d      dd||fk(  sJ | j                  dd      dk(  sJ | j                  ddd      dk(  sJ | j                  |d      d	k(  sJ | j                  |dd      d
k(  sJ | j                  d|      dk(  sJ | j                  d|d      dk(  sJ y )NrQ   r   r   Fr   r   ry   r   r   r   r   r   )r   r   
dmp_cancel)r   r   rc   r   r   r   r   s          r$   test_dmp_cancelr     s3   5"oGAq!	!Q$
A	1qs
QA	!aA	AA<<1!Q'''<<1e<,Aq!<<<<<1'''<<1e<,<<<<<1'''<<1e<,<<<<<1'''<<1e<,<<<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*   r3   r9   rO   rj   rq   rw   r   r   r   r   r   r   r   r    r&   r$   <module>r      s    U " * *  %,I !S#sCc *F6
#D'NKW\	]O:J3ZV2r6 0#,"6"8J=r&   