
    Rie_                     j   d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; dd	l<m=Z= dd
l>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZG d  e6            D             \  ZHZIZJZKZLZMZNd ZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d  Z_d! Z`d" Zad# Zbd$ Zcd% Zdd& Zed' Zfd( Zgd) Zhd* Zid+ Zjd, Zkd- Zld. Zmd/ Znd0 Zod1 Zpd2 Zqd3 Zrd4S )5z.Tests for dense recursive polynomials' tools.     )
dup_normal
dmp_normaldup_from_raw_dictdmp_convertdmp_swap)dmp_mul_ground)$dup_clear_denomsdmp_clear_denomsdup_integratedmp_integratedmp_integrate_indup_diffdmp_diffdmp_diff_indup_evaldmp_evaldmp_eval_indmp_eval_taildmp_diff_eval_in	dup_trunc	dmp_truncdmp_ground_trunc	dup_monicdmp_ground_monicdup_contentdmp_ground_contentdup_primitivedmp_ground_primitivedup_extractdmp_ground_extractdup_real_imag
dup_mirror	dup_scale	dup_shiftdup_transformdup_composedmp_composedup_decomposedmp_liftdup_sign_variations
dup_revert
dmp_revert)ANP)MultivariatePolynomialErrorExactQuotientFailedNotReversibleDomainError)f_polys)FFZZQQEX)ring)I)S)sin)x)raisesc                 6    g | ]}|                                 S  )to_dense).0fs     Alib/python3.11/site-packages/sympy/polys/tests/test_densetools.py
<listcomp>rC   6   s     $G$G$Gqajjll$G$G$G    c            	         t          g dt                    g k    sJ t          g dt                    g k    sJ t          t          d          gdt                    t          d          t          d          gk    sJ t          t          d          gdt                    t          dd          t          d          t          d          gk    sJ t          t          d          t          d          t          d          gdt                    t          d          t          d          t          d          gk    sJ t          t          d          t          d          t          d          gdt                    t          dd          t          d          t          d          t          d          gk    sJ t          t          d          t          d          t          d          gdt                    t          dd          t          dd          t          dd          t          d          t          d          gk    sJ t          t          d          t          d          t          d          gdt                    t          dd          t          dd          t          dd          t          d          t          d          t          d          gk    sJ t          t          dt          d          it                    dt                    t          d	t          dd
          it                    k    sJ t          t          t          d          t          dd          dt                    dt                    t          t          dd
          t          dd          dt                    k    sJ d S )N      r         <             i@t  )rK      i  )rM      )r   r5   r   r>   rD   rB   test_dup_integraterP   8   s   Q##r))))Q##r))))"Q%%!R((RUUBqEEN::::"Q%%!R((R1XXr!uubee,DDDDD"Q%%A1.266	A1r!uu   "Q%%A1.266	Aq2a55"Q%%A'( ( ( ("Q%%A1.266	ArBq!HHbAhh1r!uu56 6 6 6"Q%%A1.266	ArBq"IIr!QxxA1r!uu=> > > > *B2<<<aDD2r"e}}-r223 3 3 3 *22a88+D+DbII1bQQr"e}}As<<bAAB B B B B BrD   c                  ^   t          g ggddt                    g ggk    sJ t          g ggddt                    g ggk    sJ t          t          d          gggddt                    t          d          ggg ggk    sJ t          t          d          gggddt                    t          dd          ggg gg ggk    sJ t          t          d          gt          d          gt          d          ggddt                    t          d          gt          d          gt          d          ggk    sJ t          t          d          gt          d          gt          d          ggddt                    t          dd          gt          d          gt          d          gg gk    sJ t          t          d          gt          d          gt          d          ggddt                    t          dd          gt          dd          gt          dd          gg g gk    sJ t          t          d          gt          d          gt          d          ggddt                    t          dd          gt          dd          gt          dd          gg g g gk    sJ d S )NrF   rG   rH   r   rI   rJ   )r   r5   r>   rD   rB   test_dmp_integraterR   O   s   2$Ar**tf44442$Ar**tf4444BqEE7)aB//beeWIt3DDDDDBqEE7)aB//bAhhZL2$3MMMMM2a55'BqEE7RUUG4aB??
Q%%2a55'BqEE7#$ $ $ $2a55'BqEE7RUUG4aB??
Q((beeWr!uugr*+ + + +2a55'BqEE7RUUG4aB??
Q))r!Qxxj2a88*b"56 6 6 62a55'BqEE7RUUG4aB??
Q))r!RyykBq!HH:r2r:; ; ; ; ; ;rD   c                  @   t          t          dt          t                    } t	          | dddt                    t          t          t          | dddt                    ddt                    dddt                    k    sJ t	          | dddt                    t          t          t          | dddt                    ddt                    dddt                    k    sJ t	          | dddt                    t          t          t          | dddt                    ddt                    dddt                    k    sJ t	          | dddt                    t          t          t          | dddt                    ddt                    dddt                    k    sJ d S )NrH   rG   rF   r   )r   f_6r4   r5   r   r   r   rA   s    rB   test_dmp_integrate_inrV   `   s   CB##AAq!Q++(1aAr22Aq"==q!Q	L 	LL L L L Aq!Q++(1aAr22Aq"==q!Q	L 	LL L L L Aq!Q++(1aAr22Aq"==q!Q	L 	LL L L L Aq!Q++(1aAr22Aq"==q!Q	L 	LL L L L L LrD   c            
         t          g dt                    g k    sJ t          dgdt                    g k    sJ t          ddgdt                    dgk    sJ t          g ddt                    ddgk    sJ t          g ddt                    g dk    sJ t          g ddt                    g dk    sJ t          g d	t                    } t          | d
t                    | k    sJ t          | dt                    g dk    sJ t          | dt                    t          t          | dt                    dt                    k    sJ t          | dt                    t          t          t          | dt                    dt                    dt                    k    sJ t          d          }t          g d	|          } t          | d|          t          g d|          k    sJ t          | d|          t          g d|          k    sJ t          | d|          t          g |          k    sJ t          | d
|          | k    sJ t          | d|          t          t          | d|          d|          k    sJ t          | d|          t          t          t          | d|          d|          d|          k    sJ d S )NrF      rG   rF   rG   rF   )rF   rG   rH      )rH   rZ   rH   rF   r   r   rG   )rZ   r   r   )rL   "   8   i   L   r   r   rI   rH   rX   r   )
   i2  i  i   i|  r   r      rH   rH   )
rG   r   rF   r   r   rG   r   r   r   r   )rF   r   r   rG   r   r   r   )r   r4   r   r3   )rA   Ks     rB   test_dup_diffrf   q   s	   B2"$$$$QCB2%%%%QFAr""qc))))IIIq"%%!Q////LLL!R((III5555$$$a,,=======rBBAAq"""""Aq"!N!N!NNNNNAq"(1a*<*<a!D!DDDDD	1b hx1b'9'91bAA1bIIJ J J J 	1A===qAAAAq!
+I+I+I1 M MMMMMAq!
+@+@+@! D DDDDDAq!
2q 1 11111Aq!!!!!Aq!!Q):):Aq A AAAAA	1a Xhq!Q&7&7A>>1EEF F F F F FrD   c                  (   t          g ddt                    g k    sJ t          g gddt                    g gk    sJ t          g ggddt                    g ggk    sJ t          dgdgggddt                    g ggk    sJ t          dggg ggddt                    dgggk    sJ t          dggdggg ggddt                    dggdgggk    sJ t          g dddt                    t          g ddt                    k    sJ t          t          ddt                    t          k    sJ t          t          ddt                    dggg ggg dg g g d	ggg ggd
ggdggg gdgg ddgg gg gggk    sJ t          t          ddt                    t          t          t          ddt                    ddt                    k    sJ t          t          ddt                    t          t          t          t          ddt                    ddt                    ddt                    k    sJ t	          d          } t          t          d|           }t          |dd|           |k    sJ t          |dd|           t          |dd|           k    sJ t          |dd|           t          t          |dd|           dd|           k    sJ t          |dd|           t          t          t          |dd|           dd|           dd|           k    sJ d S )NrF   r   rG   rH      r[   i!  )   r   r   )iyr   r   iYi   ^   r`   )r   r4   r   rT   r3   r   )re   F_6s     rB   test_dmp_diffrm      s   B1b!!R''''RD!Q##t++++bTFAq"%%2$////qcA3ZL!Q++v5555qcURDM1a,,1#7777qcUaSEB4(!Q33!u~EEEE$$$aB//!!!1b))* * * * CAr""c))))CAr""$2$'7$b"lll;<vC5'B43%b!Wb1IB4P'R R R R R Q2 "8CAr#:#:Aq"EEF F F FCAr""h#q!R((!Q33Q2'? '? ? ? ? ? 	2A
S!Q

CCAq!!S((((CAq!!Xc1a%;%;;;;;CAq!!XhsAq!.D.DaA%N%NNNNNCAq!!X#q!Q''Aq111a&< &< < < < < < <rD   c                  N   t          t          dddt                    t          t	          t          t          dddt                    ddt                    dddt                    k    sJ t          t          dddt                    t          t	          t          t          dddt                    ddt                    dddt                    k    sJ t          t          dddt                    t          t	          t          t          dddt                    ddt                    dddt                    k    sJ t          t          dddt                    t          t	          t          t          dddt                    ddt                    dddt                    k    sJ d S )NrG   rF   rH   r   )r   rT   r4   r   r   r>   rD   rB   test_dmp_diff_inro      s~   sAq!R(((31a44aB??Aq"MMN N N NsAq!R(((31a44aB??Aq"MMN N N NsAq!R(((31a44aB??Aq"MMN N N NsAq!R(((31a44aB??Aq"MMN N N N N NrD   c                      t          g dt                    dk    sJ t          ddgdt                    dk    sJ t          g ddt                    dk    sJ d S )NrX   r   rF   rG   rF   rG   rH   B   )r   r4   r>   rD   rB   test_dup_evalrs      sg    B2!####QFAr""a''''IIIq"%%++++++rD   c                  &   t          g ddt                    dk    sJ t          g gddt                    g k    sJ t          g ggddt                    g gk    sJ t          ddggddt                    ddgk    sJ t          dgggddt                    dggk    sJ t          ddgggddt                    ddggk    sJ t          ddgddggddt                    ddgk    sJ t          ddggddgggddt                    ddggk    sJ d S )NrH   r   rF   rG   
   rO   )r   r4   r>   rD   rB   test_dmp_evalrv      sR   B1b!!Q&&&&RD!Q##r))))bTFAq"%%"----aVHaB''Aq61111qcUGQ2&&A3%////q!fXJ1b))q!fX5555aVaV$aB//B7::::q!fXAx(!Q33Qy@@@@@@rD   c                     t          t          dddt                    t          t	          t          dddt                    ddt                    k    sJ t          t          dddt                    t          t	          t          dddt                    ddt                    k    sJ t          t          dddt                    t	          t          t	          t          dddt                    ddt                    dddt                    k    sJ t          t          dddt                    t	          t          t	          t          dddt                    ddt                    dddt                    k    sJ t          d          ggg gg gt          d          gd	gg t          d          t          d          t          d
          t          d          ggg} t          | dddt                    dgg g g dgk    sJ d S )NrF   rH   r   rX   rG   -   r\   ru   )rz   r\   r   i)r   rT   r4   r   r   intrU   s    rB   test_dmp_eval_inr|      s   RAr &xQ1b'A'A2q"MMN N N NQ1b %hsAq!R&@&@!QKKL L L LsB1b))X#q!Q++RB77Aq".F .F F F F FsAq!R((H#q!Q++Q2661a-E -E E E E E r77)rdRDCGG9rdBQQRRUVWRXRX8Y"Z[Aq"aB''
r2'''() ) ) ) ) )rD   c                     t          g gdgdt                    g k    sJ t          g ggdgdt                    g gk    sJ t          g ggddgdt                    g k    sJ t          t          g dt                    t          k    sJ t          t          g ddt                    dk    sJ t          t          ddgdt                    g dk    sJ t          t          dgdt                    ddgd	gg d
gk    sJ t          t          ddgdt                    g dk    sJ t          t          dd	gdt                    g dk    sJ t          t
          dd	gdt                    g dk    sJ t          t          ddgdt                    g dk    sJ t          t          ddgdt                    g dk    sJ t          t          g dd	t                    g dk    sJ d S )NrF   rG   )rF   rO   iJ r~   rO   )irH   iO S   rH   )i.  Q   rF   )ixiS=  i#  ii)ir   iBi8r   i)   R   ii8ii   r\   )
l   o i lfc5ly
?i(l   2c[l   |U78l   XLk^ i )r\   iiiX)r   rG   rZ   )i  r   r   i  )	r   r4   f_0f_1f_2f_3f_4f_5rT   r>   rD   rB   test_dmp_eval_tailr      sS   "sAr**b00002$!a,,44442$!QB//25555b!R((C////kkk1b11U::::sAh2..2C2C2CCCCCqc1b))r1gsLLL-IIIIIsAh2..2M2M2MMMMMc1Xq" !A!A!AB B B Bc1Xq" !G!G!GH H H H b"Xq" "\ "\ "\\ \ \ \ r2h2..2J2J2JJJJJiiiB//3E3E3EEEEEEErD   c                      t          t          ddddt                    t          t	          t          t          dddt                    ddt                    ddt                    k    sJ d S )NrG   rX   rF   rH   r   )r   rT   r4   r   r   r   r>   rD   rB   test_dmp_diff_eval_inr      sj    CAq!R00(31a44aB??ArJJK K K K K KrD   c            	      
   t          dd           t          d          t          dd          t          d          t          dd           t          d          t          d          g} t          dd          t          d          t          dd          t          d          t          dd          t          d          t          d          g}t          | dt                     |k    sJ t          t          d	            d S )
NrF     r   rd   rG   =   rN   rO   c                  f    t          t          d          t          d          gdt                    S )NrF   r   rH   )r+   r5   r>   rD   rB   <lambda>z!test_dup_revert.<locals>.<lambda>  s"    *beeRUU^Q"C"C rD   )r5   r+   r<   r0   rA   gs     rB   test_dup_revertr      s    
Q**beeR2YY11ay"Q%%AGA	BbeeR2YY1r!QxxA1FAaB1$$$$
=CCDDDDDrD   c            	         t          dd           t          d          t          dd          t          d          t          dd           t          d          t          d          g} t          dd          t          d          t          dd          t          d          t          dd          t          d          t          d          g}t          | ddt                     |k    sJ t          t          d	            d S )
NrF   r   r   rd   rG   r   rN   rO   c                  4    t          dggddt                    S NrF   rG   )r,   r5   r>   rD   rB   r   z!test_dmp_revert.<locals>.<lambda>  s    
QC5!Q0K0K rD   )r5   r,   r<   r.   r   s     rB   test_dmp_revertr     s    
Q**beeR2YY11ay"Q%%AGA	BbeeR2YY1r!QxxA1FAaAr""a''''
&(K(KLLLLLrD   c                      t          g dt          d          t                    g dk    sJ t          g dt          d          t                    g dk    sJ d S )NrF   rG   rH   rZ   rN   rh   rH   )rF   r\   r   rF   r\   r   )rh   rN   rZ   rH   rG   rF   )r\   rF   r   r\   rF   )r   r4   r>   rD   rB   test_dup_truncr     sj    '''A337K7K7KKKKK'''A337H7H7HHHHHHHrD   c                      t          g gddgdt                    g gk    sJ t          ddgg ddggddgdt                    dgdggk    sJ d S )NrF   rG   )rF   rZ   rF   r]   )r   r4   r>   rD   rB   test_dmp_truncr     sk    bTAq61b))bT1111q!fiii!-1vq"==2$LLLLLLrD   c                      t          t          t          d          dt                    t          g ddggg gg dg ddgggdt                    k    sJ d S )NrH   rG   )rF   r\   r   r\   )rF   r\   rF   rF   )r   r   r4   r   r>   rD   rB   test_dmp_ground_truncr     sx    CA2..jj2$"


JJJ'DEq"	N 	NN N N N N NrD   c                     t          g dt                    g dk    sJ t          t          d            t          g t                    g k    sJ t          t	          d          gt                    t	          d          gk    sJ t          t	          d          t	          d          t	          d          gt                    t	          d          t	          dd          t	          d          gk    sJ d S )N)rH   rh   	   rq   c                  0    t          g dt                    S )N)rH   rZ   rN   )r   r4   r>   rD   rB   r   z test_dup_monic.<locals>.<lambda>#  s    	)))R(@(@ rD   rF   rX      rH   )r   r4   r<   r/   r5   r>   rD   rB   test_dup_monicr      s    YYY##yyy0000
 @ @AAAR""""beeWb!!beeW,,,,beeRUUBrFF+R00RUUBq!HHbee4LLLLLLLrD   c                      t          dgdgdggdt                    dgdgdggk    sJ t          t          d            t          g gdt                    g gk    sJ t          t	          d          ggdt                    t	          d          ggk    sJ t          t	          d          gt	          d          gt	          d          ggdt                    t	          d          gt	          dd          gt	          d          ggk    sJ d S )	NrH   rh   r   rF   rG   c                  :    t          dgdgdggdt                    S )NrH   rZ   rN   rF   )r   r4   r>   rD   rB   r   z'test_dmp_ground_monic.<locals>.<lambda>.  s    %5sQC!oq"%M%M rD   rX   r   )r   r4   r<   r/   r5   r>   rD   rB   test_dmp_ground_monicr   *  s$   aS1#sOQ33aS1#FFFF
MMO O O RD!R((RD0000beeWIq"--2a55'::::
Q%%2a55'BrFF8$a- -24Q%%2a88*r!uug0NO O O O O OrD   c                  f   t          g t                    t          d          k    sJ t          dgt                    t          d          k    sJ t          dgt                    t          d          k    sJ t          ddgt                    t          d          k    sJ t          ddgt                    t          d          k    sJ t          g dt                    t          d          k    sJ t          g dt                    t          d          k    sJ t          t          dd          t          dd	          gt                    t          dd	          k    sJ t          t          dd          t          dd
          gt                    t          dd          k    sJ d S )Nr   rF   r\   rG   rY   )rG   rZ   rG   rH   rZ   r   rN      )r   r4   r5   r>   rD   rB   test_dup_contentr   6  ss   r2"Q%%''''sB2a55((((tR  BqEE))))1vr""bee++++1vr""bee++++yyy"%%A....yyy"%%A....1a"Q((+R00Bq!HH<<<<1a"Q((+R00Bq"II======rD   c                  
   t          g gdt                    t          d          k    sJ t          g gdt                    t          d          k    sJ t          dggdt                    t          d          k    sJ t          dggdt                    t          d          k    sJ t          dgdggdt                    t          d          k    sJ t          dgdggdt                    t          d          k    sJ t          dgdgdggdt                    t          d          k    sJ t          dgdgdggdt                    t          d          k    sJ t          t          dd          gt          dd          ggdt                    t          dd          k    sJ t          t          dd          gt          dd          ggdt                    t          dd	          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d          dt                    dt                    t          d          k    sJ t          t
          dt                    t          d          k    sJ t          t	          t
          t          d          dt                    dt                    t          d          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d          dt                    dt                    t          d          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d          dt                    dt                    t          d          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d
          dt                    dt                    t          d
          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d          dt                    dt                    t          d          k    sJ t          t          dt                    t          d          k    sJ t          t	          t          t          d          dt                    dt                    t          d          k    sJ d S )NrF   r   r\   rG   rZ   rH   r   rN   r   rh   rX   rO   )r   r4   r5   r   r   r   r   r   r   r   rT   r>   rD   rB   test_dmp_ground_contentr   C  s   rdAr**bee3333rdAr**bee3333seQ++r!uu4444tfa,,15555sQCj!R00BqEE9999sQCj!R00BqEE9999sQC!oq"55A>>>>sQC!oq"55A>>>>1azBq!HH:62>>"Q((JJJJ1azBq!HH:62>>"Q))KKKKc1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; c1b))RUU2222sBqEE1b))1b2 257UU; ; ; ; ; ;rD   c                  Z
   t          g t                    t          d          g fk    sJ t          t          d          gt                    t          d          t          d          gfk    sJ t          t          d          t          d          gt                    t          d          t          d          t          d          gfk    sJ t          t          d          t          d          gt                    t          d          t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt                    t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt                    t          d          t          d          t          d          t          d          gfk    sJ t          g t                    t          d          g fk    sJ t          t          d          gt                    t          d          t          d          gfk    sJ t          t          d          t          d          gt                    t          d          t          d          t          d          gfk    sJ t          t          d          t          d          gt                    t          d          t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt                    t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt                    t          d          t          d          t          d          t          d          gfk    sJ t          t          dd          t          dd          gt                    t          dd          t          d          t          d          gfk    sJ t          t          dd          t          dd          gt                    t          dd          t          d          t          d	          gfk    sJ d S )
Nr   rF   rG   rZ   rH   r   rN   r   rh   )r   r4   r5   r>   rD   rB   test_dup_primitiver   m  sF   R  RUUBK////"Q%%"%%"Q%%"Q%%)99999"Q%%A,,AA10GGGGG"Q%%A,,AA10GGGGG	A1r!uur# #')!uur!uubeeRUU.C&DE E E E	A1r!uur# #')!uur!uubeeRUU.C&DE E E E R  RUUBK////"Q%%"%%"Q%%"Q%%)99999"Q%%A,,AA10GGGGG"Q%%A,,AA10GGGGG	A1r!uur# #')!uur!uubeeRUU.C&DE E E E	A1r!uur# #')!uur!uubeeRUU.C&DE E E E 	Aq2a88b" "&(AhhA1%?@ @ @ @	Aq2a88b" "&(Bii"Q%%A%@A A A A A ArD   c                  
   t          g gdt                    t          d          g gfk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d          dt                    dt                    t          d          t          fk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d          dt                    dt                    t          d          t          fk    sJ t          t
          dt                    t          d          t
          fk    sJ t          t          t
          t          d          dt                    dt                    t          d          t
          fk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d          dt                    dt                    t          d          t          fk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d          dt                    dt                    t          d          t          fk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d          dt                    dt                    t          d          t          fk    sJ t          t          dt                    t          d          t          fk    sJ t          t          t          t          d	          dt                    dt                    t          d	          t          fk    sJ t          t          d          ggdt                    t          d          t          d          ggfk    sJ t          t          d          ggdt                    t          d          t          d          ggfk    sJ t          t          dd          gt          dd
          ggdt                    t          dd
          t          d          gt          d          ggfk    sJ t          t          dd          gt          dd          ggdt                    t          dd          t          d          gt          d          ggfk    sJ d S )NrF   r   rG   rH   rZ   rN   rh   rX   rO   r   r   )r   r4   r   r   r   r   r   r   r   rT   r5   r>   rD   rB   test_dmp_ground_primitiver     s   a,,A====Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  Q++1s|;;;;sBqEE1b))1b2 268eeS\B B B B  "Q%%	1b11beer!uugY5GGGGG"Q%%	1b11beer!uugY5GGGGG
Q((bAhhZ !R) )-/1XXA"Q%%7I,JK K K K
Q((bAhhZ !R) )-/2YY"Q%%2a55'8J,KL L L L L LrD   c                      t          g dt                    } t          g dt                    }t          g dt                    }t          g dt                    }t          | |t                    d||fk    sJ d S )N) , r   ! r   b r     ) Vr    + r   ` r   )@   r   0   r   rI   r   rF   )  r      r   rd   r   r   )r   r4   r   rA   r   FGs       rB   test_dup_extractr     s    ===rBBA888"==A+++R00A***B//Aq!R  UAqM111111rD   c            	      F   t          dgg dgg dgg dggdt                    } t          dgg dgg dgg gdt                    }t          d	gg d
gg dgg dggdt                    }t          dgg dgg dgg gdt                    }t          | |dt                    d||fk    sJ d S )Nr   r   r   r   rF   r   r   r   r   r   rI   r   r   rd   )r   r4   r    r   s       rB   test_dmp_ground_extractr     s    
B	2xeW=q"	F 	FAXJWIrG9bA1bIIARD"rdBb1#62>>ASE2ub2$3Q;;AaAr**uam;;;;;;rD   c                     t          g t                    g gg gfk    sJ t          dgt                    dggg gfk    sJ t          ddgt                    dgdggddggfk    sJ t          ddgt                    dgdggddggfk    sJ t          g dt                    dgdgg dgddgddggfk    sJ t          t          d            d S )NrF   r   rG   rq   )r\   r   rH   c                  d    t          t          d          t          d          gt                    S r   )r!   r6   r>   rD   rB   r   z$test_dup_real_imag.<locals>.<lambda>  s     r!uubeenb A A rD   )r!   r4   r<   r1   r>   rD   rB   test_dup_real_imagr     s   R  bTB4L0000!b!!sebT]2222!Q$$1#sq!fX(>>>>>!Q$$1#sq!fX(>>>>>		2 C!jjj1QFQF3CDE E E E ;AABBBBBrD   c                      t          g t                    g k    sJ t          dgt                    dgk    sJ t          g dt                    g dk    sJ t          g dt                    g dk    sJ d S )NrF   rF   rG   rH   rZ   rN   rF   rx   rH   r   rN   r   )r\   rG   r]   rZ   rh   )r"   r4   r>   rD   rB   test_dup_mirrorr     s    b"####qc21#%%%%ooor**.?.?.?????((("--1F1F1FFFFFFFrD   c                      t          g dt                    g k    sJ t          dgdt                    dgk    sJ t          g ddt                    g dk    sJ t          g ddt                    g dk    sJ d S )Nr\   rF   r   r   i)ia	  iR   irN   )r#   r4   r>   rD   rB   test_dup_scaler     s    RR  B&&&&aS"b!!aS((((___b"--1B1B1BBBBB___b"--1J1J1JJJJJJJrD   c                      t          g dt                    g k    sJ t          dgdt                    dgk    sJ t          g ddt                    g dk    sJ t          g ddt                    g dk    sJ d S )NrF   r   )rF   rh   r      r   rX   )rF      iS  i  i  )r$   r4   r>   rD   rB   test_dup_shiftr     s    RB2%%%%aS!R  QC''''___a,,0B0B0BBBBB___a,,0H0H0HHHHHHHrD   c                     t          g g ddgt                    g k    sJ t          g dgddgt                    g k    sJ t          g ddgddgt                    g k    sJ t          g dg dddgt                    g dk    sJ d S )NrF   rG   )rh   r   rZ   r]   rL   )rF   r]   rZ   r]   )	rh   ii  ici  iMi'C  ii  )r%   r4   r>   rD   rB   test_dup_transformr     s    R!Q,,2222aS1a&"--3333aVaVR00B6666+++ZZZ!R"EE???@ @ @ @ @ @rD   c                     t          g g t                    g k    sJ t          g dgt                    g k    sJ t          g ddgt                    g k    sJ t          dgg t                    dgk    sJ t          g dg t                    g k    sJ t          g dg t                    dgk    sJ t          g ddgt                    dgk    sJ t          g ddgt                    dgk    sJ t          g dddgt                    g d	k    sJ t          g dddgt                    g d
k    sJ t          g dg dt                    g dk    sJ d S )NrF   rG   )rF   rG   r   rY   rZ   rX   r   r\   rF   r   r   )rF   rZ   rZ   rF   rZ   rO   rO   rZ   )r&   r4   r>   rD   rB   test_dup_composer     s   r2r""b((((rA3##r))))rAq62&&",,,,sB##s****yyy"b))R////yyy"b))aS0000yyy1#r**qc1111yyy1#r**rd2222yyy1b'2..)));;;;yyy1a&"--::::yyy)))R00OOOCCCCCCrD   c                     t          g dg ddt                    g dk    sJ t          g ggg ggdt                    g ggk    sJ t          g ggdgggdt                    g ggk    sJ t          g ggdggdgggdt                    g ggk    sJ t          dgggg dt                    dgggk    sJ t          dgdgg gg gdt                    g gk    sJ t          dgdgdggg gdt                    dggk    sJ t          dgdgdggdggdt                    dggk    sJ t          dgdgdggdggdt                    dggk    sJ t          dgdgdggdgd	ggdt                    dgg g gk    sJ t          dgdgdggdgdggdt                    dgdgdggk    sJ t          dgdgdggdgdgdggdt                    dgdgd
gd
gdggk    sJ d S )NrY   r   r   rG   rF   rZ   rX   r   r\   rO   )r'   r4   r>   rD   rB   test_dmp_composer     s   yyy)))Q33FFFFvvq"--2$7777v!w2..B4&8888v!u~q"552$????!wAr**ug5555aS#a44<<<<aS1#a44!====aS1#!q"551#>>>>aS1#!q"552$????aS1#!rdQ;;S#NNNNaS1#!dQ;;aS1#NNNN
qcA31#sQC!R1 167S1#sQC!4MN N N N N NrD   c                     t          dgt                    dggk    sJ t          ddgt                    ddggk    sJ t          g dt                    g dgk    sJ t          g dt                    g dg dgk    sJ t          g dt                    g dg dgk    sJ t          g dt                    g dg dgk    sJ t          g d	t                    g d
g dgk    sJ g d} t          | t                    g dg dgk    sJ g d} t          | t                    g dg dgk    sJ g d} t          | t                    g dg dgk    sJ t          dt                    \  }}d|dz  z  dz
  d|dz  z  dz   d|dz  z  d|z  z   d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} t          | |                                          | gk    sJ d S )#NrF   r   )rF   r   r   r   )rF   r   r   r   r   r   )rF   r   r   r   r   r   r   )rX   r   r   r   rF   )rX   r   rF   )rZ   r   rH   r   rG   )rZ   rH   rG   )rF   r   r   r      r   i  r   iq  rx   r   ir   )rF   r   r   rx   r   )rF   r   rN   r   )rG   r   (   r   i,  r   i  r   i  r   r   i   )rG   r   r   r   r   )rF   r   r   r   ii  iia  iiX  iVrK   )rF   r   rd   irK   trh   rG   *   r   `   r   i  i   ip  i`  r   l   rH   i8  i  r   )r(   r4   r7   	to_domain)rA   Rr   s      rB   test_dup_decomposer     s   !b!!qcU****!Q$$!Q0000r**|||n<<<<"--)))YYY1GGGGGr# #'3||YYY&?@ @ @ @ "--)))YYY1GGGGG"--)))YYY1GGGGG999AB$4$4$4lll#CCCCC<<<AB$5$5$5|||#DDDDDGGGAB$8$8$8,,,#GGGGGR==DAq	
1a4"	AqD2	QTCE	C		QTCE	C		QTC1H	s1u	$s	*		,A AKKMM**qc111111rD   c                  4   t          dd          t          dd          t          dd          g} t          t          dd          g| t                     t          g | t                     t          g | t                     t          t          dd          t          dd          g| t                     t          t          dd          t          dd          g| t                     g}t          |dt          j        t                              t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          t          d          gk    sJ t          t          d            d S )	NrF   r   rL   rG   iB  iiAF c                  f    t          t          d          t          d          gdt                    S )NrF   rG   r   )r)   r6   r>   rD   rB   r   ztest_dmp_lift.<locals>.<lambda>F  s"    "Q%%AB ? ? rD   )r5   r-   r)   algebraic_fieldr8   r<   r1   )qrA   s     rB   test_dmp_liftr   <  s   	Aq2a88R1XX&A	bAhhZB		RBRB	bAhh1a!1b	)	)32q		2a88/Da+L+L	NA Aq",Q//00	A1r!uubeeRUUBqEE2a55"Q%%C	A1r!uubeeRUUBtHHbeeRYY	HH H H H ;??@@@@@rD   c                  r   t          g t                    dk    sJ t          ddgt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g d	t                    dk    sJ t          g d
t                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ t          g dt                    dk    sJ d S )Nr   rF   )rF   r   rG   )rF   r   rH   r   )rF   r   rZ   r   rN   )r\   r   rG   )r\   r   rH   r   )r\   r   rZ   r   rN   )r\   r   r   )rF   r   r   )rF   rZ   r   )rF   r   rN   rG   )r\   rZ   r   )r\   rZ   rN   )r\   r   rN   )rF   rZ   rN   )r\   r   r   r   r   )rF   r   r   r   r   )rF   r   rZ   r   r   )rF   r   r   r   rN   )r\   r   rZ   r   r   )r\   r   r   r   rN   )r*   r4   r>   rD   rB   test_dup_sign_variationsr   I  s   r2&&!++++1vr**a////yyy"--2222|||R00A555533q8888zzz2..!3333}}}b11Q6666///449999|||R00A5555|||R00A5555{{{B//14444{{{B//14444{{{B//14444zzz2..!3333{{{B//14444zzz2..!3333111266!;;;;111266!;;;;000"55::::000"55::::000"55::::///449999000"55::::///44999999rD   c                  	   t          g t          t                    t          d          g fk    sJ t          t          d          gt          t                    t          d          t          d          gfk    sJ t          t          d          gt          t                    t          d          t          d          gfk    sJ t          t          dd          gt                    t          d          t          d          gfk    sJ t          t          dd          gt          t                    t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt          t                    t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          dd          t          d          gt          t                    t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          d          t          d          gt          t          d          t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          dd          t          d          gt          t          d          t          d          t          d          t          d          t          d          gfk    sJ t          t          t	          d          dz            t          t	          d          d	z            gt                    t          d	          t          d
          t          d          gfk    sJ t          t          d          gt                    t          d          t          d          gfk    sJ t          t          t          t                    t          z            t          d          gt                    t          t                    t          t          t                              t          d          gfk    sJ d S )NrF   rX   rH   r   rG   Tconvertr   rZ   rh   )r	   r5   r4   r6   r9   r:   r;   r>   rD   rB   test_dup_clear_denomsr   g  s   BB''BqEE2;6666RUUGR,,AA0@@@@@RUUGR,,AA0@@@@@R1XXJ++11w/?????R1XXJB//BqEEBqEE73CCCCC	A1r!uur2' '+-a552a55"Q%%A2G*HI I I I	A1a"Q%% "b* *.0eebeeRUUBqEE5J-KL L L L RUUB	% %qEED* * *.0eebeeRUUBqEE5J-KL L L LRUUB	1% %!uu2t- - -13AA1r!uu8M0NO O O O 	AaDDFR!QZZ "& &*,Q%%"Q%%A)@A A A A RUUGR((RUURUUG,<<<<<RAq\\2a5512662a552c!ff::rRSuuBU:VVVVVVVrD   c                  J   t          g gdt          t                    t          d          g gfk    sJ t          t          d          ggdt          t                    t          d          t          d          ggfk    sJ t          t          d          ggdt          t                    t          d          t          d          ggfk    sJ t          t          dd          ggdt                    t          d          t          d          ggfk    sJ t          t          dd          ggdt          t                    t          d          t          d          ggfk    sJ t          t          d          gt          d          gg gdt          t                    t          d          t          d          gt          d          gg gfk    sJ t          t          d          gt          dd          gg gdt          t                    t          d          t          d          gt          d          gg gfk    sJ t          t          d          t          d          t          d          gdt          t          d          t          d          t          d          t          d          t          d          gfk    sJ t          t          d          t          dd          t          d          gdt          t          d          t          d          t          d          t          d          t          d          gfk    sJ t          t          d          gt          d          gg gdt          t          d          t          d          t          d          gt          d          gg gfk    sJ t          t          d          gt          dd          gg gdt          t          d          t          d          t          d          gt          d          gg gfk    sJ t          t          t	          d          dz            gt          t	          d          d	z            ggdt                    t          d	          t          d
          gt          d          ggfk    sJ t          t          d          ggdt                    t          d          t          d          ggfk    sJ t          t          t          t                    t          z            t          d          ggdt                    t          t                    t          t          t                              t          d          ggfk    sJ d S )NrF   rX   rH   rG   r   Tr   r   rZ   rh   )r
   r5   r4   r6   r9   r:   r;   r>   rD   rB   test_dmp_clear_denomsr     s!   RD!R,,A====beeWIq"b11beer!uugY5GGGGGbeeWIq"b11beer!uugY5GGGGGbAhhZL!R00RUUbeeWI4FFFFFbAhhZL!R44A"Q%%	8JJJJJ
Q%%2a55'22r+ +/1!uu1wA6L.MN N N Nb	  AhhZR) )-/UUbeeWr!uugr4J,KL L L L RUUB	% %qEEr2t- - -13AA1r!uu8M0NO O O ORUUBq!HHb	/ / B& & &*,Q%%"Q%%A11F)GH H H H beeWr	( ( 'RT+ + +/1!uu1wA6L.MN N N NbeeWr!Qxxj"5q"b$(* * *.0eer!uug1w5K-LM M M M 
QqTT!V**1Q446

|$a- -13A"Q%%2a55'8J0KL L L LbeeWIq"--"Q%%2a55'1CCCCCbQllBqEE23Q;;1CPQFFUWXYUZUZH[G\?]]]]]]]rD   N)s__doc__sympy.polys.densebasicr   r   r   r   r   sympy.polys.densearithr   sympy.polys.densetoolsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   sympy.polys.polyclassesr-   sympy.polys.polyerrorsr.   r/   r0   r1   sympy.polys.specialpolysr2   sympy.polys.domainsr3   r4   r5   r6   sympy.polys.ringsr7   sympy.core.numbersr8   sympy.core.singletonr9   (sympy.functions.elementary.trigonometricr:   	sympy.abcr;   sympy.testing.pytestr<   r   r   r   r   r   r   rT   rP   rR   rV   rf   rm   ro   rs   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   rD   rB   <module>r     sw   4 4              2 1 1 1 1 1                                                                           * ( ' ' ' ' '            - , , , , , . . . . . . . . . . . . " " " " " "             " " " " " " 8 8 8 8 8 8       ' ' ' ' ' '$G$GGGII$G$G$G !S#sCcB B B.; ; ;"L L L"F F F:< < <BN N N, , ,A A A) ) ) F F F4K K K
E E EM M MI I I
M M M
N N NM M M	O 	O 	O
> 
> 
>'; '; ';TA A A2%L %L %LP2 2 2< < <
C 
C 
CG G GK K KI I I@ @ @D D D$N N N, 2  2  2F
A 
A 
A: : :<W W W4^ ^ ^ ^ ^rD   