
    g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"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                  \   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   }|                     ||          ||fk    sJ |                     ||          |||fk    sJ |dz  d|dz  z  z   |z
  dz   }|dz  |z
  dz   }|                     ||          \  }}}|                     ||          \  }}}	|                     |                     ||          |                     ||                    |k    sJ |                     |                     ||          |                     ||                    |	k    sJ d|z  }|dz  d
z
  }t          dd          |z  }t          dd
           }d}|                     ||          ||fk    sJ |                     ||          |||fk    sJ d S )Nx                               )r   r   dup_half_gcdex	dup_gcdexdup_adddup_mul)
Rr   fgsthSTHs
             ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_euclidtools.pytest_dup_gcdexr%      sy   R==DAq	1qAv!Q$A%*A	1q!tacAA	Aa
R!WWA
1Q1r!Awwqy 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                    \  } }|                     d|z  |dz  dz
            t          dd          |z  k    sJ d S )Nr   r   r   r   r   )r   r   
dup_invertr   r   s     r$   test_dup_invertr*   1   sP    R==DAq<<!QTBY''2a88A:555555r&   c            
      R   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   }|                     ||          ||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 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   s       r$   test_dup_euclidean_prsr3   6   s[   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!Aww.	CAqD1Q3C+
6%Rt__,	Jy	!	!!)# # # # # # #r&   c                  f   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
|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 d S )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                    \  } }|                     dd          dk    sJ |                     dd          dk    s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}|                     ||          ||||||gk    sJ |                     ||          |                     |          k    sJ |dz  d|z  z
  dz   }|dz  dz
  }d|z  dz
  }|                     ||          |||gk    sJ |                     ||          dk    sJ |dz  dz   }|dz  dz
  }d}|                     ||          |||gk    sJ |                     ||          dk    sJ |dz  dz
  }|dz  |dz  z
  dz   }|                     ||          dk    sJ d|dz  z  |z
  }d	|dz  z  dz   }|                     ||          dk    sJ |dz  d|z  z
  dz   }|dz  |z
  d	z   }|                     ||          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
  }|                     ||          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
  }|                     ||          dk    sJ |dz  dz
  }|dz  d|dz  z  z   d|z  z   dz
  }|                     ||          dk    sJ |dz  dz
  }|dz
  }|                     ||          dk    sJ 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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  AHHQKK////	1qs
QA	1qA	!aAq!$$Aq	1111??1a  A%%%%	1qA	1qA
Aq!$$Aq	1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                    \  } }}|                     dd          dk    sJ |                     dd          d         dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          dk    sJ |                     dd          d         dk    sJ |                     dd          dk    s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   }|                     |          }|                     ||          ||||gk    sJ |                     ||          |k    sJ |                     ||          d         |k    sJ |                     ||          |k    s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   }|                     |          }|                     ||          |||gk    sJ |                     ||          |k    sJ |                     ||          d         |k    sJ |                     ||          |k    s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   }|                     ||          |                    |          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   }|                     ||          |                    |          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   }|
                    ||          d |dz  z  d!|dz  z  z   d"|dz  z  z   d#z   k    sJ d S )$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"ooGAq!??1a  A%%%%q!$$Q'1,,,,%%a++q0000%%a++q0000??1a  A%%%%??1a  A%%%%??1a  A%%%%??1a  A%%%%q!$$Q'1,,,,%%a++q0000%%a++q0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4??1a  A%%%%q!$$Q'1,,,,%%a++q0000%%a++q0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1??1a  A%%%%q!$$Q'1,,,,%%a++q0000%%a++q0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++qvvayy8888K,,Aq!Q1	1r!Awwqy{R!WWQYq[(2a7719Q;6A	1qs
QqS1Q3A
1RAadR"XXad]1_Q..Ab!Q$q1BBR!WWQPQT\RS^TUEUU
1R
1a4	qHHQJq!tOA-	.021Q	!AqD0@	ACEa7719Q;q=QR?	S
1Q	!AqD	a7719QT>!+	,.01ggaik!Q$.>	?ACAaAaPQAQ	R 	1Q	!Q$q	 a7719Q;q!t+	, /0d1a4i	8A
 %%a++qvvayy8888bMMEBbMMEB	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VVVVr&   c                  @   t          dt                    \  } }|                     d          dk    sJ |                     |          dk    sJ |                     |dz  d|dz  z  z   d|z  z   dz
            dk    sJ |                     d	|d	z  z  |dz  z   dz             d
k    sJ |                     |dz  d|dz  z  z   d|dz  z  z   d|z  z
  dz             dk    sJ |                     d|dz  z  d|dz  z  z   d|dz  z  z   |dz  z   dz             dk    sJ d S )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      sb   R==DAqa  A%%%%a  A%%%%adQq!tVmac1B6776AAAAa1fq!tma/00H<<<<adQq!tVma1f4r!t;b@AAQFFFFbAg1a4/"QT'9AqD@1DEEI\\\\\\\r&   c                     t          dt                    \  } }|                     d          dk    sJ t          dt                    \  } }}|                     d          dk    sJ |                     |          dk    sJ |                     |dz  d|dz  z  z   d|z  z   dz
            dk    sJ |                     d	|d	z  z  |dz  z   dz             d
k    sJ |                     |dz  d|dz  z  z   d|dz  z  z   d|z  z
  dz             dk    sJ |                     d|dz  z  d|dz  z  z   d|dz  z  z   |dz  z   dz             dk    sJ |                     |dz  |z  d|z  z             d|dz  z                      |          k    sJ |                     ||dz  z  d|z  z             dk    sJ t          dt                    \  } }}}|                     ||z  |z             dk    sJ t          dt                    \  } }}}}|                     |dz  |z  ||z  z   |z             d|z  |z  |dz  z                       |          k    sJ t          dt                    \  } }}}}}|                     |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                       |          k    sJ d S )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"ooGAq!a  A%%%%a  A%%%%adQq!tVmac1B6776AAAAa1fq!tma/00H<<<<adQq!tVma1f4r!t;b@AAQFFFFbAg1a4/"QT'9AqD@1DEEI\\\\\ad1fqsl++1a4~~a/@/@@@@@a1fqsl++q0000gr""JAq!QacAg&&!++++B''MAq!Qad1fqslQ.//BqDFQTM3G3G3J3JJJJJK,,Aq!Q1ad1fq!tAvo!3a788	QT!Q$Aa!	#ac!Q$h	.1a4	9AqDAI	EKKANNO O O O O Or&   c                     t          dt                    \  } }d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rd	k    sn J d
d|z  dz   }}|                     ||          |                     ||          cxk    rd|z  dz   d
dfk    sn J d|z  dz   d
}}|                     ||          |                     ||          cxk    rd|z  dz   dd
fk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J |dz  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J |dz  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J d|dz  z  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J dd|dz  z  d|z  z   dz   }}|                     ||          |                     ||          cxk    rdd|dz  d|z  z   dz   fk    sn J d|dz  z  d|z  z   dz   |dz   }}|                     ||          |                     ||          cxk    r|dz   d|z  dz   dfk    sn J |dz   d|dz  z  d|z  z   dz   }}|                     ||          |                     ||          cxk    r|dz   dd|z  dz   fk    sn J |dz
  |}}|                     ||          |                     ||          cxk    r	d||fk    sn 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   }|                     ||          |||fk    s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   }|                     ||          |||fk    s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}|}|}|                     ||          |||fk    s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}|}|}|                     ||          |||fk    s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
  }|                     ||                     |d                    d
         |k    s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   }|                     ||          ||t	          dd          fk    sJ |                     ||          ||t	          dd          fk    sJ t          dt                    \  } }d0|z  d1z   }d2|z  d3z   }d2|z  d3z   }d4}d}|                     ||          |||fk    sJ d S )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     s5   R==DAqDAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;IIIIzIIIIIIacAgqAAq!!Q%5%5a%;%;NNNN!aANNNNNNQ37AqAAq!!Q%5%5a%;%;NNNN!aANNNNNNDAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;JJJJ{JJJJJJa4!A#:>1qAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUa4!A#:>1qAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUQT6AaC<!QqAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUa1fqslQqAAq!!Q%5%5a%;%;UUUU1adQqSjSTn?UUUUUUUQT6AaC<!QUqAAq!!Q%5%5a%;%;RRRRAqsQwPQ?RRRRRRRq5!AqD&1Q3,"qAAq!!Q%5%5a%;%;RRRRAq!A#PQ'?RRRRRRRr61qAAq!!Q%5%5a%;%;HHHH1ayH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2Aq!!ac]2222	1qA	1qAvA	1qA
Q$(C
Q$(CAq!!ac]2222Aq!!ac]2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2Aq!!ac]2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2Aq!!ac]2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03q8888Aqzz!Q//003q8888R==DAq
1Q1q2a77"A
1Q	BqGGA	AAAq!!aBqGG_4444Aq!!aBqGG_4444R==DAqq #99A111A111A
C
CAq!!ac]222222r&   c            
         t          dt                    \  } }}d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rd	k    sn J d
d|z  dz   }}|                     ||          |                     ||          cxk    rd|z  dz   d
dfk    sn J d|z  dz   d
}}|                     ||          |                     ||          cxk    rd|z  dz   dd
fk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J d\  }}|                     ||          |                     ||          cxk    rdk    sn J |dz  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J |dz  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J d|dz  z  d|z  z   dz   d}}|                     ||          |                     ||          cxk    rd|dz  d|z  z   dz   dfk    sn J dd|dz  z  d|z  z   dz   }}|                     ||          |                     ||          cxk    rdd|dz  d|z  z   dz   fk    sn J d|dz  z  d|z  z   dz   |dz   }}|                     ||          |                     ||          cxk    r|dz   d|z  dz   dfk    sn J |dz   d|dz  z  d|z  z   dz   }}|                     ||          |                     ||          cxk    r|dz   dd|z  dz   fk    sn J t          dt                    \  } }}}}|dz  d|z  z   dz   d|z  dz   }}|                     ||          |                     ||          cxk    r|dz   |dz   dfk    sn 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   }	}}|                     ||          |||	fk    sJ |                     ||          |||	fk    sJ |                     ||          ||	|fk    sJ |                     ||          ||	|fk    sJ t          dt                    \  } }}}t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ |                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t          dt                    \  } }}}}}t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t          dt                    \  } }}}}}}}t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t          dt                    \
  } }}}}}}}}}t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t          dt                    \  } }}}t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ |                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t	          | j        t          dt                              \  }}}|                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ |                     ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |k    sJ t          dt                    \  } }}}}}t	          | j        t          dt                              \  }}}| 
                    ||          \  }
}}	|
|k    r4|                     |
|          |k    r|                     |
|	          |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   }|                     ||          ||t          dd          fk    s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  }|                     ||          d|z  d|dz  z  d|z  z
  dz   d|dz  z  fk    sJ d S )!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     sQ   5"ooGAq!DAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;IIIIzIIIIIIacAgqAAq!!Q%5%5a%;%;NNNN!aANNNNNNQ37AqAAq!!Q%5%5a%;%;NNNN!aANNNNNNDAqAq!!Q%5%5a%;%;HHHHyHHHHHHDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;IIIIzIIIIIIDAqAq!!Q%5%5a%;%;JJJJ{JJJJJJa4!A#:>1qAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUa4!A#:>1qAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUQT6AaC<!QqAAq!!Q%5%5a%;%;UUUU1a4!A#:PQ>ST?UUUUUUUa1fqslQqAAq!!Q%5%5a%;%;UUUU1adQqSjSTn?UUUUUUUQT6AaC<!QUqAAq!!Q%5%5a%;%;RRRRAqsQwPQ?RRRRRRRq5!AqD&1Q3,"qAAq!!Q%5%5a%;%;RRRRAq!A#PQ'?RRRRRRRB''MAq!Qa4!A#:>1Q37qAAq!!Q%5%5a%;%;PPPPAq1ua?P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2Aq!!ac]2222Aq!!ac]2222Aq!!ac]2222gr""JAq!Q!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,""1a((KAsC66aii3''1,,ii3''1,,,,K,,Aq!Q1!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,!/266Aq!Q1a!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,#'(;R#@#@ Aq!Q1aAq!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,gr""JAq!Q!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,""1a((KAsC66aii3''1,,ii3''1,,,,!, 4Q ; ;<<GAq!""1a((KAsC66aii3''1,,ii3''1,,,,""1a((KAsC66aii3''1,,ii3''1,,,,K,,Aq!Q1!, 4Q ; ;<<GAq!//!Q''KAsC66aii3''1,,ii3''1,,,,5"ooGAq!
1Q1q2a77"A
1Q	BqGGA	AAAq!!aBqGG_4444Aq!!aBqGG_44445"ooGAq!Aad
SU1Ws1u$AAqDAAq!!	QAqD3q5 3&AqD12 2 2 2 2 2r&   c                     t          dt                    \  } }|                     dd          dk    sJ |                     d|dz  z  d|z            d|dz  z  k    sJ |                     d|dz  z  d|z            d|dz  z  k    sJ |                     |dz  |z   |          |dz  |z   k    sJ |                     |dz  |z   d|z            d|dz  z  d|z  z   k    sJ |                     |dz  d|z  z   |          |dz  d|z  z   k    sJ |                     d|dz  z  |z   |          d|dz  z  |z   k    sJ |                     d|dz  z  |z   d|z            d|dz  z  d|z  z   k    sJ d S )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399QTAaCZ##q!tacz111199Qq!tVaZ##qAvz111199Qq!tVaZ1%%1a4!A#555555r&   c                     t          dt                    \  } }}|                     dd          dk    sJ |                     ||          ||z  k    sJ |                     d|dz  z  d|z  |dz  z            d|dz  z  |dz  z  k    sJ |                     d|dz  z  d|z  |dz  z            d|dz  z  |dz  z  k    s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
  }|                     ||          |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
  }|                     ||          |k    sJ d S )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"ooGAq!99Q??a99Q??ac!!!!99Qq!tVQqSAX&&!AqD&A+555599Qq!tVQqSAX&&!AqD&A+555599QT!VQq!tV$$1QT	1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                  d   t          dt                    \  } }}|                     d          dk    sJ d|dz  z  d|z  z   dz   dd}}}t          dd          D ]}||z  }|||z  |z  z  }|                     |          |                    |          k    sJ t          dt                    \  } }}}|                     t
                    dk    sJ |                     t                    dk    sJ t          d	t                    \  } }}}}|                     t                    dk    sJ d S )
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==qvvayy((((GR  HAq1==""""==""""i$$JAq1Q==""""""r&   c                     t          dt                    \  } }}|                     d          dk    s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  }|                     |          |                    |          ||z  fk    sJ t          d	t                    \  } }}}|                     t
                    \  }}|dk    r|t
          k    sJ |                     t                    \  }}|dk    r|t          k    sJ t          d
t                    \  } }}}}	|                     t                    \  }}|dk    r|t          k    sJ d S )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  s   %__FAq??1''''??1''''1fqslQ1!qA1a[[  	Q	QT!V??1!&&))QU!33333GR  HAq1ooc""GD!199cooc""GD!199ci$$JAq1Qooc""GD!199cr&   c                  X   t          dt                    \  } }d|dz  z  dz
  }|dz  d|z  z
  dz   }d|z  dz   }|dz
  }|                     ||          ||fk    sJ |                     ||d          dd||fk    sJ | dz
  }d|z  dz
  }|dz   }d|z  dz   }|                     ||          ||fk    sJ |                     ||          ||fk    sJ |                     d	d	          d
k    sJ |                     d	d	d          dk    sJ |                     |d	          dk    sJ |                     |d	d          dk    sJ |                     d	|          dk    sJ |                     d	|d          dk    sJ d	}|}d}|                     ||d          ||fk    sJ d S )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7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
  }|                     ||          ||fk    sJ |                     ||d          dd||fk    sJ |                     dd          dk    sJ |                     ddd          dk    sJ |                     |d          d	k    sJ |                     |dd          d
k    sJ |                     d|          dk    sJ |                     d|d          dk    sJ d S )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     sk   5"ooGAq!	!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 U " " " " " " * * * * * * * * * *            %,GII !S#sCc *  *  *F6 6 6
# # #  D' D' D'NKW KW KW\	] 	] 	]O O O:J3 J3 J3ZV2 V2 V2r6 6 6     0# # #," " "6"8 "8 "8J= = = = =r&   