
    sgf                        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  e7       D  cg c]  } | j                          c} \  ZMZNZOZPZQZRZSd 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- Zrd. Zsd/ Ztd0 Zud1 Zvd2 Zwd3 Zxy4c c} w )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	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            	         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 y )N      r         <             i@t  )rG      i  )rI      )r   r6   r        T/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_densetools.pytest_dup_integraterO   6   sa   Q#r)))Q#r)))"Q%!R(RUBqEN:::"Q%!R(R1Xr!ube,DDDD"Q%A1.26	A1r!u  "Q%A1.26	Aq2a5"Q%A'( ( ("Q%A1.26	ArBq!HbAh1r!u56 6 6"Q%A1.26	ArBq"Ir!QxA1r!u=> > > *B2<<aD2r"e}-r23 3 3 *22a8+DbI1bQr"e}As<bAB B BrM   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 y )NrB   rC   r   rD   rE   rF   )r   r6   rL   rM   rN   test_dmp_integraterQ   M   sD   "Q%!Q+1a"Q%A/GGGG2$Ar*tf4442$Ar*tf444BqE7)aB/beWIt3DDDDBqE7)aB/bAhZL2$3MMMM2a5'BqE7RUG4aB?
Q%2a5'BqE7#$ $ $2a5'BqE7RUG4aB?
Q(beWr!ugr*+ + +2a5'BqE7RUG4aB?
Q)r!Qxj2a8*b"56 6 62a5'BqE7RUG4aB?
Q)r!RykBq!H:r2r:; ; ;rM   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       y )NrD   rC   rB   r   c                  *    t         dddt              S NrB   rD   r   r6   fs   rN   <lambda>z'test_dmp_integrate_in.<locals>.<lambda>p   s    /1b!R@ rM   c                  *    t         dddt              S NrB      rD   rV   rW   s   rN   rY   z'test_dmp_integrate_in.<locals>.<lambda>q   s    /1aB? rM   )	r   f_6r5   r6   r   r   r   r@   
IndexErrorrW   s   @rN   test_dmp_integrate_inr_   `   si   CB#AAq!Q+(1aAr2Aq"=q!Q	LL L L Aq!Q+(1aAr2Aq"=q!Q	LL L L Aq!Q+(1aAr2Aq"=q!Q	LL L L Aq!Q+(1aAr2Aq"=q!Q	LL L L :@A
:?@rM   c            
      V   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 y )NrB      rC   rB   rC   rB   )rB   rC   rD   r\   )rD   r\   rD   rB   rU   r   r   rC   )r\   r   r   )rH   "   8   i   L   r   r   rE   rD   ra   r   )
   i2  i  i   i|  r   r      rD   rD   )
rC   r   rB   r   r   rC   r   r   r   r   )rB   r   r   rC   r   r   r   )r   r5   r   r4   )rX   Ks     rN   test_dup_diffrm   t   s0   B2"$$$QCB2%%%QFAr"qc)))Iq"%!Q///L!R(I555$a,====rBAAq""""Aq"!NNNNAq"(1a*<a!DDDD	1bhx1b'91bA1bIJ J J 	1A=qAAAq!
+I1 MMMMAq!
+@! DDDDAq!
2q 1111Aq!!!!Aq!!Q):Aq AAAA	1aXhq!Q&7A>1EF F FrM   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 y )NrB   r   rC   rD      rc   i!  )   r   r   )iyr   r   iYi   ^   rg   )r   r5   r   r]   r4   r   )rl   F_6s     rN   test_dmp_diffrt      s   B1b!R'''RD!Q#t+++bTFAq"%2$///qcA3ZL!Q+v555qcURDM1a,1#777qcUaSEB4(!Q3!u~EEE$aB/!1b)* * * CAr"c)))CAr"$2$'7$b"l;<vC5'B43%b!Wb1IB4P'R R R R Q2"8CAr#:Aq"EF F FCAr"h#q!R(!Q3Q2'? ? ? ? 	2A
S!Q
CCAq!S(((CAq!Xc1a%;;;;CAq!XhsAq!.DaA%NNNNCAq!X#q!Q'Aq11a&< < < <rM   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        y )NrC   rB   rD   r   c                  0    t        t        dddt              S rT   r   r]   r5   rL   rM   rN   rY   z"test_dmp_diff_in.<locals>.<lambda>   s    {32q"= rM   c                  0    t        t        dddt              S r[   rw   rL   rM   rN   rY   z"test_dmp_diff_in.<locals>.<lambda>   s    {31a< rM   )r   r]   r5   r   r   r@   r^   rL   rM   rN   test_dmp_diff_inry      sB   sAq!R((31a4aB?Aq"MN N NsAq!R((31a4aB?Aq"MN N NsAq!R((31a4aB?Aq"MN N NsAq!R((31a4aB?Aq"MN N N :=>
:<=rM   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 y )Nra   r   rB   rC   rB   rC   rD   B   )r   r5   rL   rM   rN   test_dup_evalr}      sK    B2!###QFAr"a'''Iq"%+++rM   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 y )NrD   r   rB   rC   
   rK   )r   r5   rL   rM   rN   test_dmp_evalr      s   B1b!Q&&&RD!Q#r)))bTFAq"%"---aVHaB'Aq6111qcUGQ2&A3%///q!fXJ1b)q!fX555aVaV$aB/B7:::q!fXAx(!Q3Qy@@@rM   c                  f   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        y )NrB   rD   r   ra   rC   -   rU   r   )r   rU   r   ic                  B    t        t        t        d      ddt              S rT   r   r]   r5   rL   rM   rN   rY   z"test_dmp_eval_in.<locals>.<lambda>   s    {31r1bA rM   c                  B    t        t        t        d      ddt              S r[   r   rL   rM   rN   rY   z"test_dmp_eval_in.<locals>.<lambda>   s    {31q!R@ rM   )r   r]   r5   r   r   intr@   r^   rW   s    rN   test_dmp_eval_inr      s   RAr&xQ1b'A2q"MN N NQ1b%hsAq!R&@!QKL L LsB1b)X#q!Q+RB7Aq".F F F FsAq!R(H#q!Q+Q261a-E E E E r7)rdRDCG9rdBQQRRUVWRX8Y"Z[Aq"aB'
r2'() ) ) :AB
:@ArM   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 y )NrB   rC   )rB   rK   iJ r   rK   )irD   iO S   rD   )i.  Q   rB   )ixiS=  i#  ii)ir   iBi8r   i)   R   ii8ii   rU   )
l   o i lfc5ly
?i(l   2c[l   |U78l   XLk^ i )rU   iiiX)r   rC   r\   )i  r   r   i  )	r   r5   f_0f_1f_2f_3f_4f_5r]   rL   rM   rN   test_dmp_eval_tailr      s   "sAr*b0002$!a,4442$!QB/2555b!R(C///k1b1U:::sAh2.2CCCCqc1b)r1gsL-IIIIsAh2.2MMMMc1Xq"!AB B Bc1Xq"!GH H H b"Xq""\\ \ \ r2h2.2JJJJiB/3EEEErM   c                  L   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        y )NrC   ra   rB   rD   r   c                  D    t        t        dt        d      ddt              S r[   )r   r]   r5   rL   rM   rN   rY   z'test_dmp_diff_eval_in.<locals>.<lambda>  s    /Q1q!RH rM   )r   r]   r5   r   r   r   r@   r^   rL   rM   rN   test_dmp_diff_eval_inr     s    CAq!R0(31a4aB?ArJK K K CAq!R0#q!R(!Q34 4 4 :HIrM   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	        y )
NrB     r   rk   rC   =   rJ   rK   c                  L    t        t        d      t        d      gdt              S )NrB   r   rD   )r,   r6   rL   rM   rN   rY   z!test_dup_revert.<locals>.<lambda>  s    *beRU^Q"C rM   )r6   r,   r@   r1   rX   gs     rN   test_dup_revertr     s    
Q*beR2Y11ay"Q%AGA	BbeR2Y1r!QxA1FAaB1$$$
=CDrM   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	        y )
NrB   r   r   rk   rC   r   rJ   rK   c                  *    t        dggddt              S NrB   rC   )r-   r6   rL   rM   rN   rY   z!test_dmp_revert.<locals>.<lambda>  s    
QC5!Q0K rM   )r6   r-   r@   r/   r   s     rN   test_dmp_revertr     s    
Q*beR2Y11ay"Q%AGA	BbeR2Y1r!QxA1FAaAr"a'''
&(KLrM   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 y )NrB   rC   rD   r\   rJ   ro   rD   )rB   rU   r   rB   rU   r   )ro   rJ   r\   rD   rC   rB   )rU   rB   r   rU   rB   r\   rJ   rB   rU   r   )r   r5   r7   r4   )Rrl   s     rN   test_dup_truncr     s    'A37KKKK'A37HHHHAadAaD!A$'1q1adAbE]BBB
1AadAaD!A$'1q1adAaD\AAArM   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 y )NrB   rC   )rB   r\   rB   rd   )r   r5   rL   rM   rN   test_dmp_truncr   (  sU    bTAq61b)bT111q!fi!-1vq"=2$LLLrM   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 y )NrD   rC   )rB   rU   r   rU   )rB   rU   rB   rB   )r   r   r5   r   rL   rM   rN   test_dmp_ground_truncr   -  sO    CA2.2$"
J'DEq"	NN N NrM   c                  x   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 y )NrD   ro   	   r{   c                  &    t        g dt              S )N)rD   r\   rJ   )r   r5   rL   rM   rN   rY   z test_dup_monic.<locals>.<lambda>6  s    	)R(@ rM   rB   ra      rD   )r   r5   r@   r0   r6   rL   rM   rN   test_dup_monicr   3  s    Y#y000
 @AR"""beWb!beW,,,beRUBrF+R0RUBq!Hbe4LLLLrM   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 y )Nr   r   r{   rD   ro   r   rB   rC   c                  0    t        dgdgdggdt              S )NrD   r\   rJ   rB   )r   r5   rL   rM   rN   rY   z'test_dmp_ground_monic.<locals>.<lambda>C  s    %5sQC!oq"%M rM   ra   r   )r   r5   r@   r0   r6   rL   rM   rN   test_dmp_ground_monicr   =  s    Iq"-:::aS1#sOQ3aS1#FFF
MO RD!R(RD000beWIq"-2a5':::
Q%2a5'BrF8$a-24Q%2a8*r!ug0NO O OrM   c                     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 y )Nr   rB   rU   rC   rb   )rC   r\   rC   rD   r\   r   rJ      )r   r5   r6   rL   rM   rN   test_dup_contentr   K  s   r2"Q%'''sB2a5(((tR BqE)))1vr"be+++1vr"be+++y"%A...y"%A...1a"Q(+R0Bq!H<<<1a"Q(+R0Bq"I===rM   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 y )NrB   r   rU   rC   r\   rD   r   rJ   r   ro   ra   rK   )r   r5   r6   r   r   r   r   r   r   r   r]   rL   rM   rN   test_dmp_ground_contentr   X  s   rdAr*be333rdAr*be333seQ+r!u444tfa,1555sQCj!R0BqE999sQCj!R0BqE999sQC!oq"5A>>>sQC!oq"5A>>>1azBq!H:62>"Q(JJJ1azBq!H:62>"Q)KKKc1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ; c1b)RU222sBqE1b)1b257U; ; ;rM   c                     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 y )
Nr   rB   rC   r\   rD   r   rJ   r   ro   )r   r5   r6   rL   rM   rN   test_dup_primitiver     sD   R RUBK///"Q%"%"Q%"Q%)9999"Q%A,AA10GGGG"Q%A,AA10GGGG	A1r!ur#')!ur!ubeRU.C&DE E E	A1r!ur#')!ur!ubeRU.C&DE E E R RUBK///"Q%"%"Q%"Q%)9999"Q%A,AA10GGGG"Q%A,AA10GGGG	A1r!ur#')!ur!ubeRU.C&DE E E	A1r!ur#')!ur!ubeRU.C&DE E E 	Aq2a8b"&(AhA1%?@ @ @	Aq2a8b"&(Bi"Q%A%@A A ArM   c                     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 y )NrB   r   rC   rD   r\   rJ   ro   ra   rK   r   r   )r   r5   r   r   r   r   r   r   r   r]   r6   rL   rM   rN   test_dmp_ground_primitiver     s   AB/BqEBqE73CCCCa,A===Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  Q+1s|;;;sBqE1b)1b268eS\B B B  "Q%	1b1ber!ugY5GGGG"Q%	1b1ber!ugY5GGGG
Q(bAhZ !R)-/1XA"Q%7I,JK K K
Q(bAhZ !R)-/2Y"Q%2a5'8J,KL L LrM   c                      t        g dt              } t        g dt              }t        g dt              }t        g dt              }t        | |t              d||fk(  sJ y )N) , r   ! r   b r     ) Vr    + r   ` r   )@   r   0   r   rE   r   rB   )  r      r   rk   r   r   )r   r5   r   rX   r   FGs       rN   test_dup_extractr     sS    =rBA8"=A+R0A*B/Aq!R UAqM111rM   c            	         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 y )Nr   r   r   r   rB   r   r   r   r   r   rE   r   r   rk   )r   r5   r    r   s       rN   test_dmp_ground_extractr     s    
B	2xeW=q"	FAXJWIrG9bA1bIARD"rdBb1#62>ASE2ub2$3Q;AaAr*uam;;;rM   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	        y )
NrB   r   rC   r{   )rU   r   rD   rD   rd   rU   c                  J    t        t        d      t        d      gt              S r   )r!   r9   rL   rM   rN   rY   z$test_dup_real_imag.<locals>.<lambda>  s    r!ubenb A rM   )r!   r5   r@   r2   rL   rM   rN   test_dup_real_imagr     sw   R bTB4L000!b!sebT]222!Q$1#sq!fX(>>>>!Q$1#sq!fX(>>>>2C!j1QFQF3CDE E E "Q%A1r!u5r:
Q%"r"vr!ube,r!ug6
Q%AbfbeRUBqE:;?   
 ;ABrM   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 y )NrB   rB   rC   rD   r\   rJ   rB   r   rD   r   rJ   r   )rU   rC   rd   r\   ro   )r"   r5   rL   rM   rN   test_dup_mirrorr     s]    b"###qc21#%%%or*.????("-1FFFFrM   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 y )NrU   rB   r   r   i)ia	  iR   irJ   )r#   r5   rL   rM   rN   test_dup_scaler     sd    RR B&&&aS"b!aS(((_b"-1BBBB_b"-1JJJJrM   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 y )NrB   r   )rB   ro   r      r   ra   )rB      iS  i  i  )r$   r5   rL   rM   rN   test_dup_shiftr     sd    RB2%%%aS!R QC'''_a,0BBBB_a,0HHHHrM   c                     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 y )NrB   rC   r   rD   )r%   r5   )xyx1y2s     rN   test_dmp_shiftr     s    beRU^beWa4A1FFFbTBqE2a5>1b1bT999a5"Q%."	BUBqENRUBqEN+DR"Q%AB/4777rM   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 y )NrB   rC   )ro   r   r\   rd   rH   )rB   rd   r\   rd   )	ro   ii  ici  iMi'C  ii  )r&   r5   rL   rM   rN   test_dup_transformr     s    R!Q,222aS1a&"-333aVaVR0B666+Z!R"E?@ @ @rM   c                  0   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 y )NrB   rC   )rB   rC   r   rb   r\   ra   r   rU   rB   r   r   )rB   r\   r\   rB   r\   rK   rK   r\   )r'   r5   rL   rM   rN   test_dup_composer     s   r2r"b(((rA3#r)))rAq62&",,,sB#s***y"b)R///y"b)aS000y1#r*qc111y1#r*rd222y1b'2.);;;y1a&"-:::y)R0OCCCrM   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 y )Nrb   r   r   rC   rB   r\   ra   r   rU   rK   )r(   r5   rL   rM   rN   test_dmp_composer   *  s&   y)Q3FFFvvq"-2$777v!w2.B4&888v!u~q"52$???!wAr*ug555aS#a4<<<aS1#a4!===aS1#!q"51#>>>aS1#!q"52$???aS1#!rdQ;S#NNNaS1#!dQ;aS1#NNN
qcA31#sQC!R167S1#sQC!4MN N NrM   c                  B   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        | |j                               | gk(  sJ y )#NrB   r   )rB   r   r   r   )rB   r   r   r   r   r   )rB   r   r   r   r   r   r   )ra   r   r   r   rB   )ra   r   rB   )r\   r   rD   r   rC   )r\   rD   rC   )rB   r   r   r      r   i  r   iq  r   r   ir   )rB   r   r   r   r   )rB   r   rJ   r   )rC   r   (   r   i,  r   i  r   i  r   r   i   )rC   r   r   r   r   )rB   r   r   r   ii  iia  iiX  iVrG   )rB   r   rk   irG   tro   rC   *   r   `   r   i  i   ip  i`  r   l   rD   i8  i  r   )r)   r5   r;   	to_domain)rX   r   r   s      rN   test_dup_decomposer   @  s   !b!qcU***!Q$!Q000r*|n<<<"-)Y1GGGGr#'3Y&?@ @ @ "-)Y1GGGG"-)Y1GGGG9AB$4l#CCCC<AB$5|#DDDDGAB$8,#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 AKKM*qc111rM   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        y )	NrB   r   rH   rC   iB  iiAF c                  L    t        t        d      t        d      gdt              S )NrB   rC   r   )r*   r9   rL   rM   rN   rY   ztest_dmp_lift.<locals>.<lambda>r  s    "Q%AB ? rM   )r6   r.   r*   algebraic_fieldr<   r8   r@   r2   )qf_af_liftf_gs       rN   test_dmp_liftr   c  si   	Aq2a8R1X&A1az1b!3r1b>3r1b>	bAh1a!1b	)32q	2a8/Da+LNC eRUBqE2a5"Q%A1r!ubgeRUBqE2a5"Q%D2a5"U)MF CB..q12f<<<7DGT!Wd1aj$q"+
>CCD!V+++
;?@rM   c                  P   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 y )Nr   rB   )rB   r   rC   )rB   r   rD   r   )rB   r   r\   r   rJ   )rU   r   rC   )rU   r   rD   r   )rU   r   r\   r   rJ   )rU   r   r   )rB   r   r   )rB   r\   r   )rB   r   rJ   rC   )rU   r\   r   )rU   r\   rJ   )rU   r   rJ   )rB   r\   rJ   )rU   r   r   r   r   )rB   r   r   r   r   )rB   r   r\   r   r   )rB   r   r   r   rJ   )rU   r   r\   r   r   )rU   r   r   r   rJ   )r+   r5   rL   rM   rN   test_dup_sign_variationsr  u  s   r2&!+++1vr*a///y"-222|R0A5553q888z2.!333}b1Q666/4999|R0A555|R0A555{B/1444{B/1444{B/1444z2.!333{B/1444z2.!333126!;;;126!;;;0"5:::0"5:::0"5:::/49990"5:::/4999rM   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 y )NrB   ra   rD   r   rC   Tconvertr   r\   ro   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     rN   test_dup_clear_denomsr	    sF   BB'BqE2;666RUGR,AA0@@@@RUGR,AA0@@@@R1XJ+11w/????R1XJB/BqEBqE73CCCC	A1r!ur2'+-a52a5"Q%A2G*HI I I	A1a"Q% "b*.0ebeRUBqE5J-KL L L RUB	%qED*.0ebeRUBqE5J-KL L LRUB	1%!u2t-13AA1r!u8M0NO O O 	AaDFR!QZ "&*,Q%"Q%A)@A A A RUGR(RURUG,<<<<RAq\2a51262a52c!f:rRSuBU:VVVV
aAq&(T/!:;QsVDaHFv;LLLLrM   c                     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 y )NrB   ra   rD   rC   r   Tr  r   r\   ro   )r
   r6   r5   r9   r=   r>   r?   rL   rM   rN   test_dmp_clear_denomsr    s   RD!R,A===beWIq"b1ber!ugY5GGGGbeWIq"b1ber!ugY5GGGGbAhZL!R0RUbeWI4FFFFbAhZL!R4A"Q%	8JJJJ
Q%2a5'22r+/1!u1wA6L.MN N Nb	 AhZR)-/UbeWr!ugr4J,KL L L RUB	%qEr2t-13AA1r!u8M0NO O ORUBq!Hb	/ B&*,Q%"Q%A11F)GH H H beWr	( 'RT+/1!u1wA6L.MN N NbeWr!Qxj"5q"b$(*.0er!ug1w5K-LM M M 
QqT!V*1Q46
|$a-13A"Q%2a5'8J0KL L LbeWIq"-"Q%2a5'1CCCCbQlBqE23Q;1CPQFUWXYUZH[G\?]]]]rM   N)y__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@   to_denser   r   r   r   r   r   r]   rO   rQ   r_   rm   rt   ry   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  rW   s   0rN   <module>r     s}   4  2         ( (  - > > > "   " 8  '<CI$Gqajjl$G !S#sCcB.;&A(F:<B>,AB&F4JEMBM
NMO
>';TA2'LT2<C&GKI8@D$N, 2FA$:<M:^y %Hs   <E