
    gf                        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-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? dd	l@mAZA dd
lBmCZC ddlDmEZE ddlFmGZG ddlHmIZI ddlJmKZK d  e7            D             \  ZLZMZNZOZPZQZRd 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+ Znd, Zod- Zpd. Zqd/ Zrd0 Zsd1 Ztd2 Zud3 Zvd4 Zwd5S )6z.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	dmp_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ZZ_IQQ_IEXRR)ring)I)S)sin)x)raisesc                 6    g | ]}|                                 S  )to_dense).0fs     ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_densetools.py
<listcomp>rG   4   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  )rO      i  )rQ      )r   r6   r   rB   rH   rF   test_dup_integraterT   6   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rH   c                  
   t          t          d          gddt                    t          dd          t          d          t          d          gk    sJ 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 )NrJ   rK   r   rL   rM   rN   )r   r6   rB   rH   rF   test_dmp_integraterV   M   s   "Q%%!Q++1a"Q%%A/GGGGG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:; ; ; ; ; ;rH   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 t          t           fd           t          t           fd           d S )NrL   rK   rJ   r   c                  4    t           dddt                    S NrJ   rL   r   r6   rE   s   rF   <lambda>z'test_dmp_integrate_in.<locals>.<lambda>p   s    /1b!R@@ rH   c                  4    t           dddt                    S NrJ      rL   r[   r\   s   rF   r]   z'test_dmp_integrate_in.<locals>.<lambda>q   s    /1aB?? rH   )	r   f_6r5   r6   r   r   r   r@   
IndexErrorr\   s   @rF   test_dmp_integrate_inrc   `   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 :@@@@AAA
:????@@@@@rH   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 )NrJ      rK   rJ   rK   rJ   )rJ   rK   rL   r`   )rL   r`   rL   rJ   rZ   r   r   rK   )r`   r   r   )rP   "   8   i   L   r   r   rM   rL   re   r   )
   i2  i  i   i|  r   r      rL   rL   )
rK   r   rJ   r   r   rK   r   r   r   r   )rJ   r   r   rK   r   r   r   )r   r5   r   r4   )rE   Ks     rF   test_dup_diffrq   t   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rH   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 )NrJ   r   rK   rL      rg   i!  )   r   r   )iyr   r   iYi   ^   rk   )r   r5   r   ra   r4   r   )rp   F_6s     rF   test_dmp_diffrx      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&< &< < < < < < <rH   c                     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 t          t          d            t          t          d            d S )NrK   rJ   rL   r   c                  <    t          t          dddt                    S rY   r   ra   r5   rB   rH   rF   r]   z"test_dmp_diff_in.<locals>.<lambda>   s    {32q"== rH   c                  <    t          t          dddt                    S r_   r{   rB   rH   rF   r]   z"test_dmp_diff_in.<locals>.<lambda>   s    {31a<< rH   )r   ra   r5   r   r   r@   rb   rB   rH   rF   test_dmp_diff_inr}      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 :==>>>
:<<=====rH   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 )Nre   r   rJ   rK   rJ   rK   rL   B   )r   r5   rB   rH   rF   test_dup_evalr      sg    B2!####QFAr""a''''IIIq"%%++++++rH   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 )NrL   r   rJ   rK   
   rS   )r   r5   rB   rH   rF   test_dmp_evalr      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@@@@@@rH   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 t          t          d            t          t          d            d S )NrJ   rL   r   re   rK   -   rZ   r   )r   rZ   r   ic                  V    t          t          t          d          ddt                    S rY   r   ra   r5   rB   rH   rF   r]   z"test_dmp_eval_in.<locals>.<lambda>   s    {31r1bAA rH   c                  V    t          t          t          d          ddt                    S r_   r   rB   rH   rF   r]   z"test_dmp_eval_in.<locals>.<lambda>   s    {31q!R@@ rH   )r   ra   r5   r   r   intr@   rb   r\   s    rF   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'''() ) ) ) :AABBB
:@@AAAAArH   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 )NrJ   rK   )rJ   rS   iJ r   rS   )irL   iO S   rL   )i.  Q   rJ   )ixiS=  i#  ii)ir   iBi8r   i)   R   ii8ii   rZ   )
l   o i lfc5ly
?i(l   2c[l   |U78l   XLk^ i )rZ   iiiX)r   rK   r`   )i  r   r   i  )	r   r5   f_0f_1f_2f_3f_4f_5ra   rB   rH   rF   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ErH   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 t          t          ddddt                    t          t	          t          ddt                    ddt                    k    sJ t          t          d            d S )NrK   re   rJ   rL   r   c                  X    t          t          dt          d          ddt                    S r_   )r   ra   r5   rB   rH   rF   r]   z'test_dmp_diff_eval_in.<locals>.<lambda>  s    /Q1q!RHH rH   )r   ra   r5   r   r   r   r@   rb   rB   rH   rF   test_dmp_diff_eval_inr     s    CAq!R00(31a44aB??ArJJK K K K CAq!R00#q!R((!Q334 4 4 4 :HHIIIIIrH   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 )
NrJ     r   ro   rK   =   rR   rS   c                  f    t          t          d          t          d          gdt                    S )NrJ   r   rL   )r,   r6   rB   rH   rF   r]   z!test_dup_revert.<locals>.<lambda>  s"    *beeRUU^Q"C"C rH   )r6   r,   r@   r1   rE   gs     rF   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DrH   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 )
NrJ   r   r   ro   rK   r   rR   rS   c                  4    t          dggddt                    S NrJ   rK   )r-   r6   rB   rH   rF   r]   z!test_dmp_revert.<locals>.<lambda>  s    
QC5!Q0K0K rH   )r6   r-   r@   r/   r   s     rF   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LrH   c                  .   t          g dt          d          t                    g dk    sJ t          g dt          d          t                    g dk    sJ t          } t           | d           | d           | d          g | d          |            | d           | d	          gk    sJ t          d          }t           |d           |d           |d          g |d          |           |d           |d
          gk    sJ d S )NrJ   rK   rL   r`   rR   rs   rL   )rJ   rZ   r   rJ   rZ   r   )rs   rR   r`   rL   rK   rJ   )rZ   rJ   r   rZ   rJ   r`   rR   rJ   rZ   r   )r   r5   r7   r4   )Rrp   s     rF   test_dup_truncr     s*   '''A337K7K7KKKKK'''A337H7H7HHHHHAaaddAAaDD!!A$$'1q11aaddAAbEE]BBBB
1AaaddAAaDD!!A$$'1q11aaddAAaDD\AAAAAArH   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 )NrJ   rK   )rJ   r`   rJ   rh   )r   r5   rB   rH   rF   test_dmp_truncr   (  sk    bTAq61b))bT1111q!fiii!-1vq"==2$LLLLLLrH   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 )NrL   rK   )rJ   rZ   r   rZ   )rJ   rZ   rJ   rJ   )r   r   r5   r   rB   rH   rF   test_dmp_ground_truncr   -  sx    CA2..jj2$"


JJJ'DEq"	N 	NN N N N N NrH   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rL   rs   	   r   c                  0    t          g dt                    S )N)rL   r`   rR   )r   r5   rB   rH   rF   r]   z test_dup_monic.<locals>.<lambda>6  s    	)))R(@(@ rH   rJ   re      rL   )r   r5   r@   r0   r6   rB   rH   rF   test_dup_monicr   3  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LrH   c                  `   t          g ddt                    g dk    sJ 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 )Nr   r   r   rL   rs   r   rJ   rK   c                  :    t          dgdgdggdt                    S )NrL   r`   rR   rJ   )r   r5   rB   rH   rF   r]   z'test_dmp_ground_monic.<locals>.<lambda>C  s    %5sQC!oq"%M%M rH   re   r   )r   r5   r@   r0   r6   rB   rH   rF   test_dmp_ground_monicr   =  sI   IIIq"--::::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rH   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   rJ   rZ   rK   rf   )rK   r`   rK   rL   r`   r   rR      )r   r5   r6   rB   rH   rF   test_dup_contentr   K  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======rH   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 )NrJ   r   rZ   rK   r`   rL   r   rR   r   rs   re   rS   )r   r5   r6   r   r   r   r   r   r   r   ra   rB   rH   rF   test_dmp_ground_contentr   X  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; ; ; ; ; ;rH   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   rJ   rK   r`   rL   r   rR   r   rs   )r   r5   r6   rB   rH   rF   test_dup_primitiver     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rH   c                  b   t          t          d          gdt                    t          d          t          d          gfk    sJ 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 )NrJ   r   rK   rL   r`   rR   rs   re   rS   r   r   )r   r5   r   r   r   r   r   r   r   ra   r6   rB   rH   rF   test_dmp_ground_primitiver     s   AB//BqEEBqEE73CCCCC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rH   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   rM   r   rJ   )  r      r   ro   r   r   )r   r5   r   rE   r   FGs       rF   test_dup_extractr     s    ===rBBA888"==A+++R00A***B//Aq!R  UAqM111111rH   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   rJ   r   r   r   r   r   rM   r   r   ro   )r   r5   r    r   s       rF   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;;;;;;rH   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          t          d          t          d          t          d          gt                    t          d          gg t          d          t          d          t          d          gt          d          ggt          d          t          d          gg t          d          t          d          t          d          t          d          ggfk    sJ t          t          d	            d S )
NrJ   r   rK   r   )rZ   r   rL   rL   rh   rZ   c                  d    t          t          d          t          d          gt                    S r   )r!   r9   rB   rH   rF   r]   z$test_dup_real_imag.<locals>.<lambda>  s     r!uubeenb A A rH   )r!   r5   r@   r2   rB   rH   rF   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 "Q%%A1r!uu5r::
Q%%"r"vvr!uubee,r!uug6
Q%%AbffbeeRUUBqEE:;?    
 ;AABBBBBrH   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 )NrJ   rJ   rK   rL   r`   rR   rJ   r   rL   r   rR   r   )rZ   rK   rh   r`   rs   )r"   r5   rB   rH   rF   test_dup_mirrorr     s    b"####qc21#%%%%ooor**.?.?.?????((("--1F1F1FFFFFFFrH   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 )NrZ   rJ   r   r   i)ia	  iR   irR   )r#   r5   rB   rH   rF   test_dup_scaler     s    RR  B&&&&aS"b!!aS((((___b"--1B1B1BBBBB___b"--1J1J1JJJJJJJrH   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 )NrJ   r   )rJ   rs   r      r   re   )rJ      iS  i  i  )r$   r5   rB   rH   rF   test_dup_shiftr     s    RB2%%%%aS!R  QC''''___a,,0B0B0BBBBB___a,,0H0H0HHHHHHHrH   c                  l   t          t          d          t          d          gt          d          gdt                    t          d          t          d          gk    sJ t          g gt          d          t          d          gdt                    g gk    sJ t          d          t          d          gg g} t          d          t          d          gt          d          t          d          gg}t          | t          d          t          d          gdt                    |k    sJ d S )NrJ   rK   r   rL   )r%   r5   )xyx1y2s     rF   test_dmp_shiftr     s    beeRUU^beeWa44A1FFFFbTBqEE2a55>1b11bT9999a55"Q%%."	BUUBqEENRUUBqEEN+DR"Q%%AB//4777777rH   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 )NrJ   rK   )rs   r   r`   rh   rP   )rJ   rh   r`   rh   )	rs   ii  ici  iMi'C  ii  )r&   r5   rB   rH   rF   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???@ @ @ @ @ @rH   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 )NrJ   rK   )rJ   rK   r   rf   r`   re   r   rZ   rJ   r   r   )rJ   r`   r`   rJ   r`   rS   rS   r`   )r'   r5   rB   rH   rF   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CrH   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 )Nrf   r   r   rK   rJ   r`   re   r   rZ   rS   )r(   r5   rB   rH   rF   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rH   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 )#NrJ   r   )rJ   r   r   r   )rJ   r   r   r   r   r   )rJ   r   r   r   r   r   r   )re   r   r   r   rJ   )re   r   rJ   )r`   r   rL   r   rK   )r`   rL   rK   )rJ   r   r   r      r   i  r   iq  r   r   ir   )rJ   r   r   r   r   )rJ   r   rR   r   )rK   r   (   r   i,  r   i  r   i  r   r   i   )rK   r   r   r   r   )rJ   r   r   r   ii  iia  iiX  iVrO   )rJ   r   ro   irO   trs   rK   *   r   `   r   i  i   ip  i`  r   l   rL   i8  i  r   )r)   r5   r;   	to_domain)rE   r   r   s      rF   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1rH   c                     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          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}t          |dt          j        t                              |k    sJ t          d          t          d          t          d          t          dd          t          dd          g}t          |dt
                    |k    sJ t          t          d            d S )	NrJ   r   rP   rK   iB  iiAF c                  f    t          t          d          t          d          gdt                    S )NrJ   rK   r   )r*   r9   rB   rH   rF   r]   ztest_dmp_lift.<locals>.<lambda>r  s"    "Q%%AB ? ? rH   )r6   r.   r*   algebraic_fieldr<   r8   r@   r2   )qf_af_liftf_gs       rF   test_dmp_liftr  c  s   	Aq2a88R1XX&A1az1b!!3r1b>>3r1b>>	bAhh1a!1b	)	)32q		2a88/Da+L+LNC eeRUUBqEE2a55"Q%%A1r!uubggeeRUUBqEE2a55"Q%%D2a55"U))MF CB.q1122f<<<<77DGGT!WWd1ajj$q"++
>CCD!!V++++
;??@@@@@rH   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   rJ   )rJ   r   rK   )rJ   r   rL   r   )rJ   r   r`   r   rR   )rZ   r   rK   )rZ   r   rL   r   )rZ   r   r`   r   rR   )rZ   r   r   )rJ   r   r   )rJ   r`   r   )rJ   r   rR   rK   )rZ   r`   r   )rZ   r`   rR   )rZ   r   rR   )rJ   r`   rR   )rZ   r   r   r   r   )rJ   r   r   r   r   )rJ   r   r`   r   r   )rJ   r   r   r   rR   )rZ   r   r`   r   r   )rZ   r   r   r   rR   )r+   r5   rB   rH   rF   test_dup_sign_variationsr  u  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9rH   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 t          j        t                    } t           | ddt          z  dz   z             | d          g|           }t          |          dk    sJ d S )NrJ   re   rL   r   rK   Tconvertr   r`   rs   gE/Xn @gjq @gp=
ף@g        z0(x + 0.353356890459364, [1.05971731448763, 0.0]))
r	   r6   r5   r9   r=   r>   r?   r:   
frac_fieldstr)r   results     rF   test_dup_clear_denomsr    sC   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
aAqq&(T/!:;;QQsVVDaHHFv;;LLLLLLLrH   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 )NrJ   re   rL   rK   r   Tr  r   r`   rs   )r
   r6   r5   r9   r=   r>   r?   rB   rH   rF   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\?]]]]]]]rH   N)x__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,   r-   sympy.polys.polyclassesr.   sympy.polys.polyerrorsr/   r0   r1   r2   sympy.polys.specialpolysr3   sympy.polys.domainsr4   r5   r6   r7   r8   r9   r:   sympy.polys.ringsr;   sympy.core.numbersr<   sympy.core.singletonr=   (sympy.functions.elementary.trigonometricr>   	sympy.abcr?   sympy.testing.pytestr@   r   r   r   r   r   r   ra   rT   rV   rc   rq   rx   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  rB   rH   rF   <module>r     s   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.; ; ;&A A A(F F F:< < <B> > >, , ,A A AB B B&F F F4J J JE E EM M MB B BM M M
N N NM M MO O O
> 
> 
>'; '; ';TA A A2'L 'L 'LT2 2 2< < <C C C&G G GK K KI I I8 8 8@ @ @D D D$N N N, 2  2  2FA A A$: : :<M M M:^ ^ ^ ^ ^rH   