
    MZd	4                     6   d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
mZmZmZ ddlmZ ddlmZ  e       D  cg c]  } | j%                          c} \  ZZZZZZZd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,yc c} w )z:Tests for OO layer of several polynomial representations.     )sqrt)ZZQQ)DMPDMFANP)CoercionFailedExactQuotientFailedNotInvertible)f_polys)raisesc                     t        dgg g ddggt              } | j                  ddgdggk(  sJ | j                  t        k(  sJ | j                  dk(  sJ t        ddgdggt        d      } | j                  ddgdggk(  sJ | j                  t        k(  sJ | j                  dk(  sJ t        dddt        d      } | j                  ddgdggk(  sJ | j                  t        k(  sJ | j                  dk(  sJ y )Nr   r            r   r   )r   r   r   r   )r   r   repdomlevfs    D/usr/lib/python3/dist-packages/sympy/polys/tests/test_polyclasses.pytest_DMP___init__r      s    aS"i!%r*A55aVaSM!!!55B;;55A::aVaSM2q!A55aVaSM!!!55B;;55A::Q"B*A55aVaSM!!!55B;;55A::    c                  >   t        t        d      t        d      gt        d      ggt              t        t        d      t        d      gt        d      ggt              k(  sJ t        t        d      t        d      gt        d      ggt              t        t        d      t        d      gt        d      ggt              k(  sJ t        t        d      t        d      gt        d      ggt              t        t        d      t        d      gt        d      ggt              k(  sJ t        t        d      gggt              t        t        d      ggt              k7  sJ t        t        d      ggt              t        t        d      gggt              k7  sJ y )Nr   r   r   )r   r   r    r   r   test_DMP___eq__r   !   sU   A1A("-beRU^beW%r*+ + + A1A("-beRU^beW%r*+ + +A1A("-beRU^beW%r*+ + + "Q%	{B3Ay"#5555Ay"1wi["!5555r   c                  ~    t        t        g gt                    du sJ t        t        dggt                    du sJ y NFr   T)boolr   r   r   r   r   test_DMP___bool__r#   .   :    RD"%'''aSE24'''r   c                  
   t        dgg dgg dggt              } | j                         ddddk(  sJ | j                         t        j                  d      t        j                  d      t        j                  d      dk(  sJ y )Nr   r      ))   r   r   r   r   )r   r   to_dictto_sympy_dictto_sympyr   s    r   test_DMP_to_dictr,   3   s    aS"qc2s#R(A99;Aq)* * *??QQ	Q	  r   c                  :   t        g gt              j                  du sJ t        dggt              j                  du sJ t        dggt              j                  du sJ t        dggt              j                  du sJ t        dggt              j                  du sJ t        dgdgdggt              j                  du sJ t        dgddgddggt              j
                  du sJ t        dgddgg dgt              j
                  du sJ t        ddgdggt              j                  du sJ t        ddgdggt              j                  du sJ t        ddgdggt              j                  du sJ t        ddgd	ggt              j                  du sJ y )
NTr   Fr   r   r   r   r   r   r'      )r   r   is_zerois_one	is_groundis_sqfis_monicis_primitiver   r   r   test_DMP_propertiesr6   =   s   tR=  D(((ub>!!U***ub>  D(((ub>  E)))ub>##t+++aS1##--666aVaV$b)00D888aVY',33u<<<A}b!**d222A}b!**e333A}b!..$666A}b!..%777r   c                  X   t        dgddggt              j                  d      t        dgddggt              k(  sJ j                  d      t        dgddggt              k(  sJ t	        t
        fd       t        dggt              t        dggt              j                         k(  sJ t              k(  sJ j                         k(  sJ  k(  sJ t        g gt              } j                        | k(  sJ z   | k(  sJ z   | k(  sJ dz   | k(  sJ dz   | k(  sJ t        dggt              } j                        | k(  sJ z
  | k(  sJ z
  |  k(  sJ dz
  | k(  sJ dz
  |  k(  sJ t        d	ggt              } j                        | k(  sJ z  | k(  sJ z  | k(  sJ dz  | k(  sJ dz  | k(  sJ t        d
ggt              } j                         | k(  sJ j                  d      | k(  sJ dz  | k(  sJ t	        t        fd       t        dgg g dgt              t        dgddggt              t        dgddggt              }t        g dgt              }j                        ||fk(  sJ j                        |k(  sJ j!                        |k(  sJ t	        t
        fd       t        dgg g dgt              t        dgddggt              t        dgddggt              }t        g dgt              }j#                        ||fk(  sJ j%                        |k(  sJ j'                        |k(  sJ t)              ||fk(  sJ z  |k(  sJ z  |k(  sJ t	        t
        fd       y )Nr   r   r'   r   c                  &     j                  d      S )Nr   )exquo_groundr   s   r   <lambda>z&test_DMP_arithmetics.<locals>.<lambda>W   s    q(9 r      i   c                  &     j                  d      S )Nx)powr   s   r   r:   z&test_DMP_arithmetics.<locals>.<lambda>   s    aeeCj r   r.   )r&   r   r   c                  &     j                        S N)pexquor   gs   r   r:   z&test_DMP_arithmetics.<locals>.<lambda>   s     r   )r   r   r   c                  &     j                        S rD   )exquorF   s   r   r:   z&test_DMP_arithmetics.<locals>.<lambda>   s    
 r   )r   r   
mul_ground
quo_groundr   r
   absnegaddsubmulsqrrA   	TypeErrorpdivpquopremdivquoremdivmod)hqrr   rG   s      @@r   test_DMP_arithmeticsr^   Q   s   aS1a&M2A<<?cA3A-4444<<?cA3A-4444
 9:bTFBAaSE2A557a<<q6Q;;557a<<27N7RD"A558q==q5A::q5A::q5A::q5A::cUGRA558q==q5A::q5QB;;q5A::q5QB;;cUGRA558q==q5A::q5A::q5A::q5A::bTFBA557a<<558q==a4199
9()aS"i "%AaS2q'NBAaS1a&M2AYKA66!9A66!9>>66!9>>
 34aS"i "%AaS2q'NBAaS1a&M2AYKA5581v558q==558q==!Q<Aq6!!!6Q;;q5A::
 23r   c            	      "   t        dgddgg dgt              t        dgddggt              } t        dggt              }j                         dk(  sJ j                         dk(  sJ j	                         dk(  sJ j                         t        d      k(  sJ j                         t        d      k(  sJ j                  dd      t        d      k(  sJ t        t        fd       j                         dk(  sJ j                         dk(  sJ t        dgddggt              }j                  dd      |k(  sJ j                  dd      |k(  sJ t        t        fd	       t        g d
t              }t        g d
t              }j                  dd      |k(  sJ j                  dd      |k(  sJ j                  d      j                  d      t        d      k(  sJ j                  |       | | |fk(  sJ j                  |       | k(  sJ j!                  |       k(  sJ t        t#        d      t#        d      t#        d      ggt"              }t        t#        d      t#        dd      t#        dd      ggt"              }|j%                         |k(  sJ dz  j'                         t        d      k(  sJ dz  j)                         t        d      fk(  sJ t        dgdgdgdgdgdggt              j+                  d      t        dgdgg dgdgg gt              k(  sJ t        t,        t              j/                          k(  sJ j1                         t        d       dfgfk(  sJ t        dgg g dggt              t        ddgg g gt              } t        g dgt              }t        g dt              }j3                  |       | |gk(  sJ j5                  |       |k(  sJ t        g dt              j7                         dk(  sJ t        t#        d      t#        d      gt"              t        t#        d      t#        d      t#        d      gt"              } t        t#        dd      t#        d      gt"              }t        t#        dd      gt"              }t        t#        d      gt"              }j9                  |       ||fk(  sJ j;                  |       |||fk(  sJ j=                  |       |k(  sJ t        dgdgdggt"              t        t>        fd       t        t>        fd       t        t>        fd       t        g dt              t        g dt              } t        g dt              }| jA                  |      k(  sJ jC                         | |gk(  sJ t        dgdgdggt"              t        t>        fd        t        t>        fd!       y )"Nr   r   r   r.   )r   r   c                  (     j                  dd      S )Nr   r@   )nthr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    aeeAsm r   r'   mjc                  *     j                  dd      S )Nr@   r   rb   )diffr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    affsaf0 r   )r   r   r   )ard   -      r<   r   	   r/   rH   )rh   ri   r<   )  rk      r>   )r   r   rj   iipi       c                  &     j                         S rD   )
half_gcdexr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    q||A r   c                  &     j                         S rD   )gcdexr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    qwwqz r   c                  &     j                         S rD   )invertr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    qxx{ r   )r   r      r      r   i  r   iq  rB   r   r=   rj   )r   r   r   rB   rj   )r   r   r<   r   c                  $     j                         S rD   )	decomposer   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    q{{} r   c                  $     j                         S rD   )sturmr   s   r   r:   z(test_DMP_functionality.<locals>.<lambda>   s    qwwy r   )"r   r   degreedegree_listtotal_degreeLCTCra   r   rS   max_norml1_normrf   eval	cofactorsgcdlcmr   moniccontent	primitivetruncf_4sqf_partsqf_listsubresultants	resultantdiscriminantrp   rr   rt   
ValueErrorcomposerx   )rG   r[   uvr]   str   s          @r   test_DMP_functionalityr      sU   aS1a&)$b)AaS1a&M2AaSE2A88:??==?f$$$>>q   446RU??446RU??55A;"Q%
9+,::<199;!aS1a&M2A66A6q   66A6q   
901IrAIrA66A6q   66A6q   66!9>>!1%%%;;q>aAY&&&558q==558q==bfbfbe$%r*AbeR1Xr!Qx()2.A779>>aC==?be###aC??A
***aS1#sQC!qc*B/A771:qcB4aS2$;R@@@@CA::<A2::<BrFqb!WI....bT2rA3$AaVRb!A[M2A$A??1!Q***;;q>QNBA>>v%%%RUBqENBARUBqE2c7#R(AR2Y1#ARBZL"ARUGRA<<?q!f$$$771:!Q"""88A;!aS1#sOR A
:./
:)*
:*+=rBAb!AL"A99Q<1;;=QF"""aS1#sOR A
:,-
:()r   c                  ,   dggg ggggggggggggggggggggggggg} g d}t        | t              j                         |t        ddgt              fk(  sJ t        dgddggt              j                         g t        dgddggt              fk(  sJ y )Nr   )r   r   r   r   r'   r<   r/      r&   rj   
                  rn            ru            r>   r   )r   r   exclude)r   Js     r   test_DMP_excluder     s    "#t}o./0123456789:;<=>?@
A	BCA	$A q":AsAq62#7777aV}b!))+C!q!fr4J/KKKKr   c                  *   t        dgg g ddggg dgft              } | j                  ddgdggk(  sJ | j                  g dgk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        ddgdggg dgft        d      } | j                  ddgdggk(  sJ | j                  g dgk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dgdggdgd	ggft              } | j                  dgdggk(  sJ | j                  dgd	ggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dgdggd
gdggft              } | j                  dgdggk(  sJ | j                  dgd	ggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dgdggd
gdggft              } | j                  dgdggk(  sJ | j                  dgd	ggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        g gd
gdggft              } | j                  g gk(  sJ | j                  dggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dt        d      } | j                  dggk(  sJ | j                  dggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dgdggt              } | j                  dgdggk(  sJ | j                  dggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dgg g ddggt              } | j                  ddgdggk(  sJ | j                  dggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        dddt        d      } | j                  ddgdggk(  sJ | j                  dggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        t        d      gt        d      ggt        d       gt        d      ggft              } | j                  t        d       gt        d       ggk(  sJ | j                  t        d      gt        d       ggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        t        dd      gt        dd      ggt        dd       gt        dd      ggft              } | j                  t        d       gt        d       ggk(  sJ | j                  t        d      gt        d       ggk(  sJ | j                  dk(  sJ | j
                  t        k(  sJ t        t        d        t        t        d        y )Nr   r   r   )r   r   r   r   r   rH   rB   r'   r   r   r<   r   r   r   ru   c                  ,    t        dgdggft              S Nr   r   r   r   r   r   r:   z"test_DMF__init__.<locals>.<lambda>`  s    sQC1#<4 r   c                  (    t        dgg ft              S r   r   r   r   r   r:   z"test_DMF__init__.<locals>.<lambda>a  s    cA3)R&8 r   )
r   r   numdenr   r   r   r   r   ZeroDivisionErrorr   s    r   test_DMF__init__r     s   qc2y1#&4b9A55aVaSM!!!55YK55A::55B;;q!fqc]YK("a0A55aVaSM!!!55YK55A::55B;;rdRD\QC";',A55bTB4L   55aS2$K55A::55B;;qcA3Z2$%r*A55bTB4L   55aS2$K55A::55B;;qcA3Z2$%r*A55bTB4L   55aS2$K55A::55B;;bTRD1#;$A55RD==55aSE>>55A::55B;;BAA55bTF??55aSE>>55A::55B;;qcA3Z"A55aS1#J55aSE>>55A::55B;;aS"i!%r*A55aVaSM!!!55aSE>>55A::55B;;Q"B*A55aVaSM!!!55aSE>>55A::55B;;r!ug1wBqE6(RUG!45r:A55r!ufXAx((((55beW1vh''''55A::55B;;r!Qxj2a8*%"Q(bAhZ'@A2FA55r!ufXBy))))55bfXBy))))55A::55B;;
:45
89r   c                  ~    t        t        g gt                    du sJ t        t        dggt                    du sJ y r!   )r"   r   r   r   r   r   test_DMF__bool__r   d  r$   r   c                  H   t        g gt              j                  du sJ t        g gt              j                  du sJ t        dggt              j                  du sJ t        dggt              j                  du sJ t        dggdggft              j                  du sJ y )NTFr   r   )r   r   r0   r1   r   r   r   test_DMF_propertiesr   i  s    tR=  D(((tR=5(((ub>!!U***ub>  D(((!u~r"))U222r   c                     t        dgdggt              } t        dgdggt              }| j                         |  cxk(  r|k(  sJ  J t        dggdgg gft              } t        dggddggft              }t        dgddggddgg gft              }| j                  |      | |z   cxk(  r|k(  sJ  J |j                  |       || z   cxk(  r|k(  sJ  J t        dgddggddgg gft              }| j	                  |      | |z
  cxk(  r|k(  sJ  J t        dggddgg gft              }| j                  |      | |z  cxk(  r|k(  sJ  J |j                  |       || z  cxk(  r|k(  sJ  J t        ddggdgg gft              }| j                  |      | |z  cxk(  r|k(  sJ  J t        dggdgg g g gft              }| j                  d      | dz  cxk(  r|k(  sJ  J t        dggg d	gft              }|j                  d      |dz  cxk(  r|k(  sJ  J t        ddggdggft              }|j                  d      |dz  cxk(  r|k(  sJ  J y )
Nr   iirj   r   r   rH   r   )r   r   r   r   )r   r   rN   rO   rP   rQ   rX   rA   )r   rG   r[   s      r   test_DMF_arithmeticsr   s  s   aS2$KAbTA3KA557qbAqcUaS"I#AqcUaVHr"AqcAq6]aVRL)2.A558q1u!!!!!!558q1u!!!!!!rdQF^q!fb\*B/A558q1u!!!!!!qcUaVRL!2&A558qsa558qsaq!fXRy!2&A558qsaqcUaS"b"%&+A558q!t q     qcU\N#R(A558q!t q     q!fXur"A5592""""""r   c                     t        d      t        d      g} t        d      t        d      t        d      gt        | t               }|j                  t        d      t        d      gk(  sJ |j                  t        d      t        d      t        d      gk(  sJ |j                  t         k(  sJ t        d      t        d      d} t        d      t        d      dt        | t               }|j                  t        d      t        d      gk(  sJ |j                  t        d      t        d      t        d      gk(  sJ |j                  t         k(  sJ t        dt               }|j                  t        d      gk(  sJ |j                  t        d      t        d      t        d      gk(  sJ |j                  t         k(  sJ t        ddgt               }t        d |j                  D              sJ t        t        fd       y )Nr   r   )r   r   r(   g      ?c              3   F   K   | ]  }t        j                  |        y wrD   )r   of_type).0rg   s     r   	<genexpr>z$test_ANP___init__.<locals>.<genexpr>  s     ,rzz!},s   !c                  :    t        t        d      g t              S )Nr   )r   r   r   mods   r   r:   z#test_ANP___init__.<locals>.<lambda>  s    3Qy#r#: r   )r   r   r   r   r   allr   r	   )r   r   r   s     @r   test_ANP___init__r     s   a5"Q%.Ca5"Q%A
CCbA55RUBqEN"""55RUBqE2a5))))55B;;e1
Ce1
CCbA55RUBqEN"""55RUBqE2a5))))55B;;AsBA55RUG55RUBqE2a5))))55B;;QHc2A,aee,,,,
>:;r   c                     t        t        d      t        d      gt        d      t        d      t        d      gt              } t        t        d      t        d      gt        d      t        d      t        d      gt              }| | k(  du sJ | | k7  du sJ | |k(  du sJ | |k7  du sJ t        t        d      t        d      gt        d      t        d      t        d      gt              }| |k(  du sJ | |k7  du sJ y )Nr   r   r   TF)r   r   )rg   bs     r   test_ANP___eq__r     s    RUBqENRUBqE2a5126ARUBqENRUBqE2a5126AFtFuFuFtRUBqENRUBqE2a5126AFuFtr   c            
         t        t        g t        d      t        d      t        d      gt                    du sJ t        t        t        d      gt        d      t        d      t        d      gt                    du sJ y )Nr   r   FT)r"   r   r   r   r   r   test_ANP___bool__r     sf    BA1r!u-r23u<<<RUGbeRUBqE2B78D@@@r   c                     t        d      t        d      t        d      g} t        t        d      g| t               j                  du sJ t        t        d      g| t               j                  du sJ t        t        d      g| t               j                  du sJ t        t        d      g| t               j                  du sJ y )Nr   r   TFr   )r   r   r0   r1   r   s    r   test_ANP_propertiesr     s    a5"Q%A
C1wR ((D0001wR ((E1111wR ''4///1wR ''5000r   c                     t        d      t        d      t        d      t        d      g} t        t        d      t        d      t        d      g| t               t        t        d      t        d      g| t               }t        t        d      t        d      t        d      g| t               j                          cxk(  rk(  sJ  J t        t        d      t        d      t        d      g| t               j                  |      |z   cxk(  rk(  sJ  J |j                        |z   cxk(  rk(  sJ  J t        t        d      t        d      t        d      g| t               j	                  |      |z
  cxk(  rk(  sJ  J t        t        d      t        d      t        d      g| t               |j	                        |z
  cxk(  rk(  sJ  J t        t        d      t        d      t        d      g| t               j                  |      |z  cxk(  rk(  sJ  J |j                        |z  cxk(  rk(  sJ  J t        t        dd      t        d	d      t        d
d      g| t               j                  d      dz  cxk(  rt        d| t               k(  sJ  J j                  d      dz  cxk(  rk(  sJ  J j                  d      dz  cxk(  rk(  sJ  J j                        j                  j                  d            cxk(  r!dz  z  cxk(  rt        d| t               k(  sJ  J t        g g dt               j                  |      }j                  |      \  }}||cxk(  rcxk(  r	|z  k(  sJ  J t        t        fd       t        t        fd       ||z  k(  sJ y )Nr   r   rB   r   rH   r   r/   +   rj   r<   )r   r   r   rB   c                  &     j                        S rD   )rW   rg   cs   r   r:   z&test_ANP_arithmetics.<locals>.<lambda>      !%%( r   c                  &     j                        S rD   )rY   r   s   r   r:   z&test_ANP_arithmetics.<locals>.<lambda>  r   r   )r   r   rN   rO   rP   rQ   rA   rX   rY   rW   r   r   )r   r   r1r\   r2rg   r   s        @@r   test_ANP_arithmeticsr     sZ   a5"Q%A2
'CRUBrFBqE"C,ARUBqENC$ARVRUBrF#S"-A557qbARUBqE2a5!3+A558q1u!!!!!!558q1u!!!!!!RUBrFBrF#S"-A558q1u!!!!!!RVRUBqE"C,A558q1u!!!!!!RUBrFBqE"C,A558qsa558qsaRBZArBq"I.R8A558q1v0QR00000558q1v""""""559B$1$$$$$558quuQUU2Y'G1QW9GAsBGGGGGBr"A	
qBeeAhGQ!q!AE!!!!!
=*+
=*+ !8O8r   c                     t        d      t        d      t        d      g} t        t        d      g| t               }t        t        d      g| t              }|j                  |      d   t         k(  sJ |j                  |      d   t         k(  sJ |j                  |      d   t         k(  sJ |j                  |      d   t        k(  sJ y )Nr   r   rB   )r   r   r   unify)r   rg   r   s      r   test_ANP_unifyr     s    a5"Q%B
 CRUGS"ARUGS"A771:a=B771:a=B771:a=B771:a=Br   c                  `   t        ddgdggt              t        t        d      t        d      gt        d      ggt              k(  sJ t        t        ddgdggt                    t        t        t        d      t        d      gt        d      ggt                    k(  sJ t	        ddgdggdggft              t	        t        d      t        d      gt        d      ggt        d      ggft              k(  sJ t        t	        ddgdggdggft                    t        t	        t        d      t        d      gt        d      ggt        d      ggft                    k(  sJ t        ddgg dt              t        t        d      t        d      gt        d      t        d      t        d      gt              k(  sJ t        t        ddgg dt                    t        t        t        d      t        d      gt        d      t        d      t        d      gt                    k(  sJ y )Nr   r   r   )r   r   r   r   )r   r   inthashr   r   r   r   r   test___hash__r     s    A}b!S3q63q6*:SVH)Er%JJJJaVaSM2&'4c!fc!f5EAx4PRT0U+VVVVa&1#!$'*c!fc!f-=Ax,HCPQF8*+UWY'Z[ [ [q!fqc]aSE*B/0DAA@a&?#&)!fXJ>013:5 56 6 6 61vy"%c!fc!f-=AAPSTUPV?WY[)\\\\QFIr"$'+CQQ0@3q63q6SVWXSYBZ\^,_'`a a ar   N)-__doc__(sympy.functions.elementary.miscellaneousr   sympy.polys.domainsr   r   sympy.polys.polyclassesr   r   r   sympy.polys.polyerrorsr	   r
   r   sympy.polys.specialpolysr   sympy.testing.pytestr   to_densef_0f_1f_2f_3r   f_5f_6r   r   r#   r,   r6   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   0r   <module>r      s    @ 9 & 1 13 3 , '<CI$Gqajjl$G !S#sCc(
6(
8(K4\`*FLV:r(
3%#P<@ A
13j	aa %Hs   B