
    MZd_                        d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; dd	l<m=Z= dd
l>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZG  e6       D  cg c]  } | j                          c} \  ZIZJZKZLZMZNZOd ZPd ZQd ZRd ZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d  Zad! Zbd" Zcd# Zdd$ Zed% Zfd& Zgd' Zhd( Zid) Zjd* Zkd+ Zld, Zmd- Znd. Zod/ Zpd0 Zqd1 Zrd2 Zsy3c c} w )4z.Tests for dense recursive polynomials' tools.     )
dup_normal
dmp_normaldup_from_raw_dictdmp_convertdmp_swap)dmp_mul_ground)$dup_clear_denomsdmp_clear_denomsdup_integratedmp_integratedmp_integrate_indup_diffdmp_diffdmp_diff_indup_evaldmp_evaldmp_eval_indmp_eval_taildmp_diff_eval_in	dup_trunc	dmp_truncdmp_ground_trunc	dup_monicdmp_ground_monicdup_contentdmp_ground_contentdup_primitivedmp_ground_primitivedup_extractdmp_ground_extractdup_real_imag
dup_mirror	dup_scale	dup_shiftdup_transformdup_composedmp_composedup_decomposedmp_liftdup_sign_variations
dup_revert
dmp_revert)ANP)MultivariatePolynomialErrorExactQuotientFailedNotReversibleDomainError)f_polys)FFZZQQEX)ring)I)S)sin)x)raisesc            	         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  )rC      i  )rE      )r   r5   r        C/usr/lib/python3/dist-packages/sympy/polys/tests/test_densetools.pytest_dup_integraterK   8   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rI   c                     t        g ggddt              g ggk(  sJ t        g ggddt              g ggk(  sJ t        t        d      gggddt              t        d      ggg ggk(  sJ t        t        d      gggddt              t        dd      ggg gg ggk(  sJ t        t        d      gt        d      gt        d      ggddt              t        d      gt        d      gt        d      ggk(  sJ t        t        d      gt        d      gt        d      ggddt              t        dd      gt        d      gt        d      gg gk(  sJ t        t        d      gt        d      gt        d      ggddt              t        dd      gt        dd      gt        dd      gg g gk(  sJ t        t        d      gt        d      gt        d      ggddt              t        dd      gt        dd      gt        dd      gg g g gk(  sJ y )Nr>   r?   r@   r   rA   rB   )r   r5   rH   rI   rJ   test_dmp_integraterM   O   s   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:; ; ;rI   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 y )Nr@   r?   r>   r   )r   f_6r4   r5   r   r   r   fs    rJ   test_dmp_integrate_inrR   `   sP   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rI   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 )Nr>      r?   r>   r?   r>   )r>   r?   r@      )r@   rV   r@   r>   r   r   r?   )rV   r   r   )rD   "   8   i   L   r   r   rA   r@   rT   r   )
   i2  i  i   i|  r   r      r@   r@   )
r?   r   r>   r   r   r?   r   r   r   r   )r>   r   r   r?   r   r   r   )r   r4   r   r3   )rQ   Ks     rJ   test_dup_diffrb   q   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rI   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 )Nr>   r   r?   r@      rW   i!  )   r   r   )iyr   r   iYi   ^   r\   )r   r4   r   rO   r3   r   )ra   F_6s     rJ   test_dmp_diffri      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&< < < <rI   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 y )Nr?   r>   r@   r   )r   rO   r4   r   r   rH   rI   rJ   test_dmp_diff_inrk      s*   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rI   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 )NrT   r   r>   r?   r>   r?   r@   B   )r   r4   rH   rI   rJ   test_dup_evalro      sK    B2!###QFAr"a'''Iq"%+++rI   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 )Nr@   r   r>   r?   
   rG   )r   r4   rH   rI   rJ   test_dmp_evalrr      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@@@rI   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 y )Nr>   r@   r   rT   r?   -   rX   rq   )rv   rX   r   i)r   rO   r4   r   r   intrP   s    rJ   test_dmp_eval_inrx      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'() ) )rI   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 )Nr>   r?   )r>   rG   iJ rz   rG   )ir@   iO S   r@   )i.  Q   r>   )ixiS=  i#  ii)ir   iBi8r   i)   R   ii8ii   rX   )
l   o i lfc5ly
?i(l   2c[l   |U78l   XLk^ i )rX   iiiX)r   r?   rV   )i  r   r   i  )	r   r4   f_0f_1f_2f_3f_4f_5rO   rH   rI   rJ   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ErI   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 y )Nr?   rT   r>   r@   r   )r   rO   r4   r   r   r   rH   rI   rJ   test_dmp_diff_eval_inr      sL    CAq!R0(31a4aB?ArJK K KrI   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 )
Nr>     r   r`   r?   =   rF   rG   c                  L    t        t        d      t        d      gdt              S )Nr>   r   r@   )r+   r5   rH   rI   rJ   <lambda>z!test_dup_revert.<locals>.<lambda>  s    *beRU^Q"C rI   )r5   r+   r<   r0   rQ   gs     rJ   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DrI   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 )
Nr>   r   r   r`   r?   r   rF   rG   c                  *    t        dggddt              S Nr>   r?   )r,   r5   rH   rI   rJ   r   z!test_dmp_revert.<locals>.<lambda>  s    
QC5!Q0K rI   )r5   r,   r<   r.   r   s     rJ   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LrI   c                      t        g dt        d      t              g dk(  sJ t        g dt        d      t              g dk(  sJ y )Nr>   r?   r@   rV   rF   rd   r@   )r>   rX   r   r>   rX   r   )rd   rF   rV   r@   r?   r>   )rX   r>   r   rX   r>   )r   r4   rH   rI   rJ   test_dup_truncr     s<    'A37KKKK'A37HHHHrI   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 )Nr>   r?   )r>   rV   r>   rY   )r   r4   rH   rI   rJ   test_dmp_truncr     sU    bTAq61b)bT111q!fi!-1vq"=2$LLLrI   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 )Nr@   r?   )r>   rX   r   rX   )r>   rX   r>   r>   )r   r   r4   r   rH   rI   rJ   test_dmp_ground_truncr     sO    CA2.2$"
J'DEq"	NN N NrI   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)r@   rd   	   rm   c                  &    t        g dt              S )N)r@   rV   rF   )r   r4   rH   rI   rJ   r   z test_dup_monic.<locals>.<lambda>#  s    	)R(@ rI   r>   rT      r@   )r   r4   r<   r/   r5   rH   rI   rJ   test_dup_monicr      s    Y#y000
 @AR"""beWb!beW,,,beRUBrF+R0RUBq!Hbe4LLLLrI   c                     t        dgdgdggdt              dgdgdggk(  sJ t        t        d        t        g gdt              g gk(  sJ t        t	        d      ggdt              t	        d      ggk(  sJ t        t	        d      gt	        d      gt	        d      ggdt              t	        d      gt	        dd      gt	        d      ggk(  sJ y )	Nr@   rd   r   r>   r?   c                  0    t        dgdgdggdt              S )Nr@   rV   rF   r>   )r   r4   rH   rI   rJ   r   z'test_dmp_ground_monic.<locals>.<lambda>.  s    %5sQC!oq"%M rI   rT   r   )r   r4   r<   r/   r5   rH   rI   rJ   test_dmp_ground_monicr   *  s    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rI   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   r>   rX   r?   rU   )r?   rV   r?   r@   rV   r   rF      )r   r4   r5   rH   rI   rJ   test_dup_contentr   6  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===rI   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 )Nr>   r   rX   r?   rV   r@   r   rF   r   rd   rT   rG   )r   r4   r5   r   r   r   r   r   r   r   rO   rH   rI   rJ   test_dmp_ground_contentr   C  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; ; ;rI   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   r>   r?   rV   r@   r   rF   r   rd   )r   r4   r5   rH   rI   rJ   test_dup_primitiver   m  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rI   c                  @   t        g gdt              t        d      g gfk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d      dt              dt              t        d      t        fk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d      dt              dt              t        d      t        fk(  sJ t        t
        dt              t        d      t
        fk(  sJ t        t        t
        t        d      dt              dt              t        d      t
        fk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d      dt              dt              t        d      t        fk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d      dt              dt              t        d      t        fk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d      dt              dt              t        d      t        fk(  sJ t        t        dt              t        d      t        fk(  sJ t        t        t        t        d	      dt              dt              t        d	      t        fk(  sJ t        t        d      ggdt              t        d      t        d      ggfk(  sJ t        t        d      ggdt              t        d      t        d      ggfk(  sJ t        t        dd      gt        dd
      ggdt              t        dd
      t        d      gt        d      ggfk(  sJ t        t        dd      gt        dd      ggdt              t        dd      t        d      gt        d      ggfk(  sJ y )Nr>   r   r?   r@   rV   rF   rd   rT   rG   r   r   )r   r4   r   r   r   r   r   r   r   rO   r5   rH   rI   rJ   test_dmp_ground_primitiver     s   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rI   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   rA   r   r>   )  r      r   r`   r   r   )r   r4   r   rQ   r   FGs       rJ   test_dup_extractr     sS    =rBA8"=A+R0A*B/Aq!R UAqM111rI   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   r>   r   r   r   r   r   rA   r   r   r`   )r   r4   r    r   s       rJ   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;;;rI   c                  Z   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        y )Nr>   r   r?   rm   )rX   r   r@   c                  J    t        t        d      t        d      gt              S r   )r!   r6   rH   rI   rJ   r   z$test_dup_real_imag.<locals>.<lambda>  s    r!ubenb A rI   )r!   r4   r<   r1   rH   rI   rJ   test_dup_real_imagr     s    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 ;ABrI   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 )Nr>   r>   r?   r@   rV   rF   r>   rt   r@   r   rF   r   )rX   r?   rY   rV   rd   )r"   r4   rH   rI   rJ   test_dup_mirrorr     s]    b"###qc21#%%%or*.????("-1FFFFrI   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 )NrX   r>   r   r   i)ia	  iR   irF   )r#   r4   rH   rI   rJ   test_dup_scaler     sd    RR B&&&aS"b!aS(((_b"-1BBBB_b"-1JJJJrI   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 )Nr>   r   )r>   rd   r      r   rT   )r>      iS  i  i  )r$   r4   rH   rI   rJ   test_dup_shiftr     sd    RB2%%%aS!R QC'''_a,0BBBB_a,0HHHHrI   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 )Nr>   r?   )rd   r   rV   rY   rD   )r>   rY   rV   rY   )	rd   ii  ici  iMi'C  ii  )r%   r4   rH   rI   rJ   test_dup_transformr     s    R!Q,222aS1a&"-333aVaVR0B666+Z!R"E?@ @ @rI   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 )Nr>   r?   )r>   r?   r   rU   rV   rT   r   rX   r>   r   r   )r>   rV   rV   r>   rV   rG   rG   rV   )r&   r4   rH   rI   rJ   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CrI   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 )NrU   r   r   r?   r>   rV   rT   r   rX   rG   )r'   r4   rH   rI   rJ   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rI   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 )#Nr>   r   )r>   r   r   r   )r>   r   r   r   r   r   )r>   r   r   r   r   r   r   )rT   r   r   r   r>   )rT   r   r>   )rV   r   r@   r   r?   )rV   r@   r?   )r>   r   r   r      r   i  r   iq  rt   r   ir   )r>   r   r   rt   r   )r>   r   rF   r   )r?   r   (   r   i,  r   i  r   i  r   r   i   )r?   r   r   r   r   )r>   r   r   r   ii  iia  iiX  iVrC   )r>   r   r`   irC   trd   r?   *   r   `   r}   i  i   ip  i`  r   l   r@   i8  i  r   )r(   r4   r7   	to_domain)rQ   Rr   s      rJ   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1rI   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        j                  t                    t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      gk(  sJ t        t        d        y )	Nr>   r   rD   r?   iB  iiAF c                  L    t        t        d      t        d      gdt              S )Nr>   r?   r   )r)   r6   rH   rI   rJ   r   ztest_dmp_lift.<locals>.<lambda>F  s    "Q%AB ? rI   )r5   r-   r)   algebraic_fieldr8   r<   r1   )qrQ   s     rJ   test_dmp_liftr   <  s/   	Aq2a8R1X&A	bAhZB	RBRB	bAh1a!1b	)32q	2a8/Da+L	NA Aq",,Q/0	A1r!ubeRUBqE2a5"Q%C	A1r!ubeRUBtHbeRY	HH H H ;?@rI   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   r>   )r>   r   r?   )r>   r   r@   r   )r>   r   rV   r   rF   )rX   r   r?   )rX   r   r@   r   )rX   r   rV   r   rF   )rX   r   r   )r>   r   r   )r>   rV   r   )r>   r   rF   r?   )rX   rV   r   )rX   rV   rF   )rX   r   rF   )r>   rV   rF   )rX   r   r   r   r   )r>   r   r   r   r   )r>   r   rV   r   r   )r>   r   r   r   rF   )rX   r   rV   r   r   )rX   r   r   r   rF   )r*   r4   rH   rI   rJ   test_dup_sign_variationsr   I  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9rI   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 y )Nr>   rT   r@   r   r?   Tconvertr   rV   rd   )r	   r5   r4   r6   r9   r:   r;   rH   rI   rJ   test_dup_clear_denomsr   g  s   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VrI   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 )Nr>   rT   r@   r?   r   Tr   r   rV   rd   )r
   r5   r4   r6   r9   r:   r;   rH   rI   rJ   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\?]]]]rI   N)t__doc__sympy.polys.densebasicr   r   r   r   r   sympy.polys.densearithr   sympy.polys.densetoolsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   sympy.polys.polyclassesr-   sympy.polys.polyerrorsr.   r/   r0   r1   sympy.polys.specialpolysr2   sympy.polys.domainsr3   r4   r5   r6   sympy.polys.ringsr7   sympy.core.numbersr8   sympy.core.singletonr9   (sympy.functions.elementary.trigonometricr:   	sympy.abcr;   sympy.testing.pytestr<   to_denser   r   r   r   r   r   rO   rK   rM   rR   rb   ri   rk   ro   rr   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   rP   s   0rJ   <module>r      su   4  2         * (  - . . "   " 8  '<CI$Gqajjl$G !S#sCcB.;"L"F:<BN,A) F4K
EMI
M
NM	O
>';TA2%LP2<
CGKI@D$N, 2F
A:<W4^W %Hs   4E