
    MZd                        d Z ddlmZ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)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJmKZKmLZL ddlMmNZN  eH       D  cg c]  } | j                          c} \  ZPZQZRZSZTZUZV e eePdeL       eLd	d
      deL      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' Ztd( Zud) Zvd* Zwd+ Zxd, Zyd- Zzd. Z{d/ Z|d0 Z}d1 Z~d2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zy>c c} w )?z4Tests for dense recursive polynomials' arithmetics.     )
dup_normal
dmp_normal)@dup_add_termdmp_add_termdup_sub_termdmp_sub_termdup_mul_termdmp_mul_termdup_add_grounddmp_add_grounddup_sub_grounddmp_sub_grounddup_mul_grounddmp_mul_grounddup_quo_grounddmp_quo_grounddup_exquo_grounddmp_exquo_ground
dup_lshift
dup_rshiftdup_absdmp_absdup_negdmp_negdup_adddmp_adddup_subdmp_subdup_muldmp_muldup_sqrdmp_sqrdup_powdmp_powdup_add_muldmp_add_muldup_sub_muldmp_sub_muldup_pdivdup_premdup_pquo
dup_pexquodmp_pdivdmp_premdmp_pquo
dmp_pexquo
dup_rr_div
dmp_rr_div
dup_ff_div
dmp_ff_divdup_divdup_remdup_quo	dup_exquodmp_divdmp_remdmp_quo	dmp_exquodup_max_normdmp_max_normdup_l1_normdmp_l1_normdup_l2_norm_squareddmp_l2_norm_squared
dup_expand
dmp_expand)ExactQuotientFailed)f_polys)FFZZQQ)raises         c                     t        g t              } t        | t        d      dt              t        g t              k(  sJ t        | t        d      dt              t        dgt              k(  sJ t        | t        d      dt              t        ddgt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        g dt              } t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      d	t              t        g d
t              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        ddgt              k(  sJ y )Nr   rL   rK   rL   r   r   rL   rL   rL   )rL   rL   rK   )rL   rK   rL   )rK   rL   rL      )rL   rL   rL   rL      )rL   r   rL   rL   rL      )rL   r   r   rL   rL   rL      )rL   r   r   r   rL   rL   rL   )r   rH   r   fs    C/usr/lib/python3/dist-packages/sympy/polys/tests/test_densearith.pytest_dup_add_termrY   2   s   2rA2a5!R(Jr2,>>>>2a5!R(JsB,????2a5!R(J1vr,BBBB2a5!R(Jy",EEEE9b!A2a5!R(Jy",EEEE2a5!R(Jy",EEEE2a5!R(Jy",EEEE2a5!R(J|R,HHHH2a5!R(J,KKKK2a5!R(J7I2,NNNN	2a5!R&'<bAB B B 2b61b)ZA-CCCC    c                  t   t        t        d      t        d      t        d      gt        d      ddt              t        t        d      t        d      t        d      gt        d      dt              k(  sJ t        t        g gddt              t        k(  sJ t        t        g gddt
              t        k(  sJ y NrL   rK   r   rQ   )r   rH   r   f_0F_0rI    rZ   rX   test_dmp_add_termr`   J       A1r!u-r!uaB?beRUBqE*BqE1b9: : :bT1a,333bT1a,333rZ   c                     t        g t              } t        | t        d      dt              t        g t              k(  sJ t        | t        d      dt              t        dgt              k(  sJ t        | t        d      dt              t        ddgt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        g dt              } t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g d	t              k(  sJ t        | t        d      d
t              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        ddgt              k(  sJ y )Nr   rL   rU   rK   )rU   r   r   rP   )rL   rL   rU   )rL   rU   rL   )rU   rL   rL   rQ   )rU   rL   rL   rL   rR   )rU   r   rL   rL   rL   rS   )rU   r   r   rL   rL   rL   rT   )rU   r   r   r   rL   rL   rL   )r   rH   r   rV   s    rX   test_dup_sub_termrc   Q   s   2rA2a5!R(Jr2,>>>>2a5!R(JtR,@@@@2a5!R(JAw,CCCC2a5!R(Jz2,FFFF9b!A2a5!R(J{B,GGGG2a5!R(J{B,GGGG2a5!R(Jz2,FFFF2a5!R(J}b,IIII2a5!R(J7G,LLLL2a5!R(J7JB,OOOO	2a5!R&'=rBC C C 2a5!R(J1vr,BBBBrZ   c                  t   t        t        d      t        d      t        d      gt        d      ddt              t        t        d      t        d      t        d      gt        d      dt              k(  sJ t        t        g gddt              t        k(  sJ t        t        g gddt
              t        k(  sJ y r\   )r   rH   r   r]   r^   rI   r_   rZ   rX   test_dmp_sub_termre   i   ra   rZ   c                     t        g t              } t        | t        d      dt              t        g t              k(  sJ t        ddgt              } t        | t        d      dt              t        g t              k(  sJ t        g dt              } t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g dt              k(  sJ t        | t        d      dt              t        g d	t              k(  sJ y )
NrK   rQ   rL   r   rL   rK   rQ   rK   rR   rT   )rK   rR   rT   r   )rK   rR   rT   r   r   )rK   rR   rT   r   r   r   )r   rH   r	   rV   s    rX   test_dup_mul_termri   p   s   2rA2a5!R(Jr2,>>>>Aq62A2a5!R(Jr2,>>>>9b!A2a5!R(Jy",EEEE2a5!R(J|R,HHHH2a5!R(J,KKKK2a5!R(J7I2,NNNNrZ   c                     t        t        d      t        d      t        d      gt        d      ddt              t        t        d      t        d      t        d      gt        d      dt              k(  sJ t        g gt        d      gddt              g gk(  sJ t        t        d      ggg ddt              g gk(  sJ t        t        d      t        d      gt        d      ggt        d      gddt              t        d      t        d      gt        d      gg g gk(  sJ t        g gt        dd      gddt              g gk(  sJ t        t        dd      ggg ddt              g gk(  sJ t        t        dd      t        dd      gt        dd      ggt        dd      gddt              t        dd      t        dd      gt        dd      gg g gk(  sJ y )	NrL   rK   rQ   r   rR   rT   rS      )r
   rH   r	   rI   r_   rZ   rX   test_dmp_mul_termrl      s   A1r!u-r!uaB?beRUBqE*BqE1b9: : : r!ugq!R0RD888"Q%	2q!R0RD888"Q%A"Q%1BqE7Aq"E
Q%A"Q%"b)* * * r!Qxj!Q3t;;;"Q(b!Q3t;;;"Q(Bq!H-1az:R1XJ1bQ
Q)R2Y	"Q)b"56 6 6rZ   c                      t        j                  g d      } t        j                  g d      }t        | t        d      t               |k(  sJ y )NrL   rK   rQ   rR   )rL   rK   rQ      rR   )rH   mapr   rW   gs     rX   test_dup_add_groundrs      9    
|A
|A!RUB'1,,,rZ   c                      t        j                  dgdgdgdgg      } t        j                  dgdgdgdgg      }t        | t        d      dt               |k(  sJ y )NrL   rK   rQ   rR   ro   )rH   rp   r   rq   s     rX   test_dmp_add_groundrv      s]    
aS1#s#$A
aS1#s#$A!RUAr*a///rZ   c                      t        j                  g d      } t        j                  g d      }t        | t        d      t               |k(  sJ y )Nrn   )rL   rK   rQ   r   rR   )rH   rp   r   rq   s     rX   test_dup_sub_groundrx      rt   rZ   c                      t        j                  dgdgdgdgg      } t        j                  dgdgdgg g      }t        | t        d      dt               |k(  sJ y )NrL   rK   rQ   rR   )rH   rp   r   rq   s     rX   test_dmp_sub_groundrz      s[    
aS1#s#$A
aS1#r"#A!RUAr*a///rZ   c                  Z   t        g t              } t        | t        d      t              t        g t              k(  sJ t        g dt              } t        | t        d      t              t        g t              k(  sJ t        | t        d      t              t        g dt              k(  sJ y )NrK   rg   r   rh   )r   rH   r   rV   s    rX   test_dup_mul_groundr|      s    2rA!RUB':b"+====9b!A!RUB':b"+====!RUB':i+DDDDrZ   c            
         t        t        t        d      dt              t        d      t        d      t        d      gt        d      ggt        d      ggt        d      t        d      t        d      gt        d      t        d      t        d      gt        d      gggk(  sJ t        t        t	        dd      dt              t	        dd      t	        dd      t	        d	d      gt	        dd      ggt	        d	d      ggt	        dd      t	        d
d      t	        dd      gt	        dd      t	        dd      t	        dd      gt	        dd      gggk(  sJ y )NrK   rR   rT   ro   
      rL      rQ   rS   )r   r]   rH   r^   rI   r_   rZ   rX   test_dmp_mul_groundr      s4   #r!ua,
Q%A1	A(
Q%	
Q%BB	 2a5"Q%A"7"Q%A1    #r!QxB/
Q)R2Y1b		*R2YK8
Q)
Q)R2Y1b		*R2Y1b	2Y-Q)	&4   rZ   c                     t        t        d        t        g t              } t	        | t        d      t              t        g t              k(  sJ t        g dt              } t	        | t        d      t              | k(  sJ t	        | t        d      t              t        g dt              k(  sJ t	        | t        d      t              t        g dt              k(  sJ t        g dt
              } t	        | t        d      t
              | k(  sJ t	        | t        d      t
              t        d      t        d      t        d      gk(  sJ t	        | t        d	      t
              t        d
d	      t        dd	      t        dd	      gk(  sJ y )Nc                  V    t        t        g dt              t        d      t              S Nrg   r   )r   r   rH   r_   rZ   rX   <lambda>z%test_dup_quo_ground.<locals>.<lambda>   s$    nZ A6qE2' rZ   rQ   rT   rK   ro   rL   rK   rQ   rL   rR   )rK   r   rK   rR   rM   rT   ro   )rJ   ZeroDivisionErrorr   rH   r   rI   rV   s    rX   test_dup_quo_groundr      s6   
    	2rA!RUB':b"+====9b!A!RUB'1,,,!RUB':i+DDDD!RUB':i+DDDD9b!A!RUB'1,,,!RUB'BqE2a5"Q%+@@@@!RUB'Bq!HbAh1a+IIIIrZ   c                     t        t        d        t        t        d        t        g t              } t        | t	        d      t              t        g t              k(  sJ t        g dt              } t        | t	        d      t              | k(  sJ t        | t	        d      t              t        g dt              k(  sJ t        g dt              } t        | t        d      t              | k(  sJ t        | t        d      t              t        d      t        d      t        d      gk(  sJ t        | t        d	      t              t        d
d	      t        dd	      t        dd	      gk(  sJ y )Nc                  V    t        t        g dt              t        d      t              S r   r   r   rH   r_   rZ   rX   r   z'test_dup_exquo_ground.<locals>.<lambda>   s%    &6z C8!ub'" rZ   c                  V    t        t        g dt              t        d      t              S )Nrg   rQ   r   r_   rZ   rX   r   z'test_dup_exquo_ground.<locals>.<lambda>   s%    (8 E:!ub)" rZ   rQ   r   rL   rK   r   rR   rM   rT   ro   )rJ   r   rE   r   rH   r   rI   rV   s    rX   test_dup_exquo_groundr      s$   
 " #
 !" # 	2rAAr!ub)ZB-????9b!AAr!ub)Q...Ar!ub)Z	2-FFFF9b!AAr!ub)Q...Ar!ub)beRUBqE-BBBBAr!ub)bAh1a"Q(-KKKKrZ   c                  b   t        dgdgdggdt              } t        | t        d      dt              | k(  sJ t        | t        d      dt              t        dgdgdggdt              k(  sJ t        t        | t        d      dt              dt              t        dgg dggdt              k(  sJ y NrT   rK   ro   rL   rQ   rR   )r   rH   r   rV   s    rX   test_dmp_quo_groundr      s    QC!qc?Ar*A!RUAr*a///	2a5!R&aS1#2>? ? ? n	2a5!RR!$.R!~q"$EF F FrZ   c                      t        dgdgdggdt              } t        | t        d      dt              | k(  sJ t        | t        d      dt              t        dgdgdggdt              k(  sJ y r   )r   rH   r   rV   s    rX   test_dmp_exquo_groundr      su    QC!qc?Ar*AAr!ua,111	2a5!R&aS1#2>? ? ?rZ   c                  b    t        g dt              g k(  sJ t        dgdt              g dk(  sJ y )NrQ   rL   rL   r   r   r   )r   rH   r_   rZ   rX   test_dup_lshiftr     s2    b!R B&&&qc1b!\111rZ   c                  b    t        g dt              g k(  sJ t        g ddt              dgk(  sJ y )NrQ   r   rL   )r   rH   r_   rZ   rX   test_dup_rshiftr     s2    b!R B&&&lAr*qc111rZ   c                     t        g t              g k(  sJ t        t        d      gt              t        d      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      t        d      gk(  sJ t        g t              g k(  sJ t        t        dd      gt              t        dd      gk(  sJ t        t        dd      gt              t        dd      gk(  sJ t        t        dd      t        dd      t        dd      gt              t        dd      t        dd      t        dd      gk(  sJ y )NrL   rM   rU   rK   rQ   )r   rH   rI   r_   rZ   rX   test_dup_absr     sE   2r?b   BF8R RUG+++BrF8R RUG+++BrFBqE2a5)2.2a5"Q%A2GGGG2r?b   B1I;#1az111Br1I;#1az111	BBq!HbAh'-13Aq2a8R1X0NO O OrZ   c                     t        t        d      gdt              t        d      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        g ggdt              g ggk(  sJ t        t        d      gggdt              t        d      gggk(  sJ t        t        d      gggdt              t        d      gggk(  sJ t        g ggdt              g ggk(  sJ t        t        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggdt              t        dd      gggk(  sJ y NrU   r   rL   rK   r   rM   	   )r   rH   rI   r_   rZ   rX   test_dmp_absr     s>   BrF8Q#1w...Br1I;2&2a8*444RD61b!rdV+++beWI;2&RUG9+555bfXJ<B'beWI;666RD61b!rdV+++bAhZL>1b)1azl^;;;bQi[M?Ar*Aq
|n<<<rZ   c                     t        g t              g k(  sJ t        t        d      gt              t        d      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      t        d      gk(  sJ t        g t              g k(  sJ t        t        dd      gt              t        dd      gk(  sJ t        t        dd	      gt              t        dd	      gk(  sJ t        t        dd      t        dd      t        dd      gt              t        dd      t        dd      t        dd      gk(  sJ y )
NrL   rU   r   rM   rK   rQ   r   )r   rH   rI   r_   rZ   rX   test_dup_negr   +  sL   2r?b   BqE7BBrF8+++BrF8R RUG+++BrFBqE2a5)2.2a5"R&"R&2IIII2r?b   Bq!H:r"r"ayk111Br1I;#1az111B
A1a"Q($%')-/1Xr"ay"R),LM M MrZ   c                     t        t        d      gdt              t        d      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        g ggdt              g ggk(  sJ t        t        d      gggdt              t        d      gggk(  sJ t        t        d      gggdt              t        d      gggk(  sJ t        g ggdt              g ggk(  sJ t        t        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggdt              t        dd      gggk(  sJ y r   )r   rH   rI   r_   rZ   rX   test_dmp_negr   8  s>   BrF8Q#1w...Br1I;2&2a8*444RD61b!rdV+++beWI;2&RVH:,666bfXJ<B'beWI;666RD61b!rdV+++bAhZL>1b)2q	{m_<<<bQi[M?Ar*Aq
|n<<<rZ   c            	         t        g g t              g k(  sJ t        t        d      gg t              t        d      gk(  sJ t        g t        d      gt              t        d      gk(  sJ t        t        d      gt        d      gt              t        d      gk(  sJ t        t        d      gt        d      gt              t        d      gk(  sJ t        t        d      t        d      gt        d      gt              t        d      t        d      gk(  sJ t        t        d      gt        d      t        d      gt              t        d      t        d      gk(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt              t        d      t        d      t        d      gk(  sJ t        g g t              g k(  sJ t        t        dd      gg t              t        dd      gk(  sJ t        g t        dd      gt              t        dd      gk(  sJ t        t        dd	      gt        dd	      gt              t        dd      gk(  sJ t        t        dd	      gt        dd      gt              t        dd	      gk(  sJ t        t        dd      t        dd      gt        d      gt              t        dd      t        d
d      gk(  sJ t        t        d      gt        dd      t        dd      gt              t        dd      t        d
d      gk(  sJ t        t        dd      t        dd      t        dd      gt        dd      t        dd      t        dd      gt              t        dd      t        dd      t        dd      gk(  sJ y )NrL   rK   rQ   ro   r   r~         rR   rS   rM   )r   rH   rI   r_   rZ   rX   test_dup_addr   E  s8   2r2"$$$BqE7B#1w...21w#1w...BqE7RUGR(RUG333BqE7RUGR(RUG333BqE2a5>BqE7B/BqE2a5>AAABqE7RUBqENB/BqE2a5>AAABqE2	qEUBqE2b6*B046qE2b62b63JK K K 2r2"$$$Bq!H:r2&2a8*44421az2&2a8*444Bq!H:1az2.2a8*<<<Bq!H:1az2.2a8*<<<Bq!HbAh'"Q%"5"Q(Bq!H9MMMMBqE7R1Xr!Qx0"5"Q(Bq!H9MMMMBq!HbAh1a1B	15!QxB4$%')-/1Xr"ay"R),LM M MrZ   c                  |   t        t        d      t        d      gt        d      gdt              t        t        d      t        d      gt        d      gt              k(  sJ t        t        dd      t        dd      gt        d      gdt              t        t        dd      t        dd      gt        d      gt              k(  sJ t        g ggg ggdt              g ggk(  sJ t        t        d      gggg ggdt              t        d      gggk(  sJ t        g ggt        d      gggdt              t        d      gggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        g ggg ggdt              g ggk(  sJ t        t        dd      gggg ggdt              t        dd      gggk(  sJ t        g ggt        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ y )NrL   rK   r   rQ   rM   )r   rH   r   rI   r_   rZ   rX   test_dmp_addr   _  s   BqE2a5>BqE7Ar2A1A,- - -Bq!HbAh'"Q%!R8Aq2a8$r!ugr23 3 3 RD6RD61b)rdV333beWI;"2.RUG9+===RD6beWI;2.RUG9+===beWI;2a5'Q3"Q%	{BBBbeWI;2a5'Q3"Q%	{BBBRD6RD61b)rdV333bAhZL>RD61b11azl^CCCRD6bAhZL>1b11azl^CCCbAhZL>bAhZL>1b91azl^KKKbAhZL>bAhZL>1b91azl^KKKrZ   c            	      X   t        g g t              g k(  sJ t        t        d      gg t              t        d      gk(  sJ t        g t        d      gt              t        d      gk(  sJ t        t        d      gt        d      gt              g k(  sJ t        t        d      gt        d      gt              t        d      gk(  sJ t        t        d      t        d      gt        d      gt              t        d      t        d      gk(  sJ t        t        d      gt        d      t        d      gt              t        d      t        d      gk(  sJ t        t        d      t        d      t        d      gt        d      t        d      t        d      gt              t        d      t        d	      t        d
      gk(  sJ t        g g t              g k(  sJ t        t        dd      gg t              t        dd      gk(  sJ t        g t        dd      gt              t        dd      gk(  sJ t        t        dd      gt        dd      gt              g k(  sJ t        t        dd      gt        dd      gt              t        dd      gk(  sJ t        t        dd      t        dd      gt        d      gt              t        dd      t        dd      gk(  sJ t        t        d      gt        dd      t        dd      gt              t        dd      t        dd      gk(  sJ t        t        dd      t        dd      t        dd      gt        dd      t        dd      t        dd      gt              t        dd      t        d	d      t        d
d      gk(  sJ y )NrL   rU   rK   rQ   ro   r   r~   r   rM   rS   )r   rH   rI   r_   rZ   rX   test_dup_subr   r  s+   2r2"$$$BqE7B#1w...21w#2x///BqE7RUGR(B...BqE7RUGR(RVH444BqE2a5>BqE7B/BqE2a5>AAABqE7RUBqENB/BrFBrF3CCCCBqE2	qEUBqE2b6*B046rFBrFBrF3KL L L 2r2"$$$Bq!H:r2&2a8*44421az2&2b!9+555Bq!H:1az2."444Bq!H:1az2.2b!9+===Bq!HbAh'"Q%"5"Q(Br1I9NNNNBqE7R1Xr!Qx0"5"R)R1X9NNNNBq!HbAh1a1B	15!QxB4$%')-/AY2q	2b!9,MN N NrZ   c                  |   t        t        d      t        d      gt        d      gdt              t        t        d      t        d      gt        d      gt              k(  sJ t        t        dd      t        dd      gt        d      gdt              t        t        dd      t        dd      gt        d      gt              k(  sJ t        g ggg ggdt              g ggk(  sJ t        t        d      gggg ggdt              t        d      gggk(  sJ t        g ggt        d      gggdt              t        d      gggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        g ggg ggdt              g ggk(  sJ t        t        dd      gggg ggdt              t        dd      gggk(  sJ t        g ggt        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ y )NrL   rK   r   rQ   rU   rM   )r   rH   r   rI   r_   rZ   rX   test_dmp_subr     s   BqE2a5>BqE7Ar2A1A,- - -Bq!HbAh'"Q%!R8Aq2a8$r!ugr23 3 3 RD6RD61b)rdV333beWI;"2.RUG9+===RD6beWI;2.RVH:,>>>beWI;2a5'Q3"Q%	{BBBbeWI;2a5'Q3"R&
|CCCRD6RD61b)rdV333bAhZL>RD61b11azl^CCCRD6bAhZL>1b12q	{m_DDDbAhZL>bAhZL>1b91azl^KKKbAhZL>bAhZL>1b92q	{m_LLLrZ   c                  h   t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      gt              t        d      t        d      t        d      t        d      gk(  sJ t        t        d      t        d      gt        d      ggt        d      gt        d      t        d      ggt        d      gt        d      ggdt              t        d      gt        d      t        d      gt        d      t        d      ggk(  sJ y )NrL   rK   rQ   r   rM   rS   rR   )r%   rH   r&   r_   rZ   rX   test_dup_add_mulr     s    1r!ube,r!ubeRU.C1r!u~r#')!ubeRUBqE&BC C CA1A0BqE7RUBqEN2KA"Q%!1b*/1!ug1r!u~1rRSu~-VW W WrZ   c                  h   t        t        d      t        d      t        d      gt        d      t        d      t        d      gt        d      t        d      gt              t        d      t        d      t        d      t        d      gk(  sJ t        t        d      t        d      gt        d      ggt        d      gt        d      t        d      ggt        d      gt        d      ggdt              t        d      gt        d      t        d      gt        d      t        d      ggk(  sJ y )	NrL   rK   rQ   r   r   rU   r   )r'   rH   r(   r_   rZ   rX   test_dup_sub_mulr     s   1r!ube,r!ubeRU.C1r!u~r#')"vr"vr"vr!u&EF F FA1A0BqE7RUBqEN2KA"Q%!1b*/1"vhBB8H2b6SUVWSX/-Z[ [ [rZ   c                     t        g g t              g k(  sJ t        g t        d      gt              g k(  sJ t        t        d      gg t              g k(  sJ t        t        d      gt        d      gt              t        d      gk(  sJ t        t        d      gt        d      gt              t        d      gk(  sJ t        g g t              g k(  sJ t        g t        dd      gt              g k(  sJ t        t        dd      gg t              g k(  sJ t        t        dd      gt        dd      gt              t        dd      gk(  sJ t        t        dd      gt        dd      gt              t        dd	      gk(  sJ t        g d
t              } t        g dt              }t        g dt              }t        | |t              |k(  sJ t        || t              |k(  sJ t        g dt              } t        g dt              }t        | | t              |k(  sJ t	        d      }t         |d       |d      g |d       |d      g|       |d       |d      gk(  sJ t        g dt              }t        g dt              }t        g dt              }t        ||t              |k(  sJ t        g dt              }t        g dt              }t        g dt              }t        ||t              |k(  sJ y )NrL   rS   rM   #   rK   rR   rQ   rk   1   )rQ   r   r   rT   rL   rK   )rR   r   rL   r   )	r   r   rQ      rR   r   rL   rK   r   rK   r   r   rL   rM   	rR   r   r   rR      r   rL   r   r   rT   )O   rU   N   r       r   rK      I   *   U   M   S   r   _   %   r   r   C      L   rK   F   r   A   9   r   r   a   Y   !   r   Q   r   <   +      ,      r   r   r   rQ   5      r   B   rL   r   b   r   rT   ro   r   r      r      r   7   r   D   r   T   ^   -   r   \   r  r   r   ro   K   r   [   r   "   r   r   r   r   r   rT   r      r   :   r      r   r   rM   r   r   r  r   r   r   r   rS   3   r   r  r   r   r   r   R   r   r   r  r	  r   r!  r  r  r#  ?   r   r   rT   r   r   rQ   rQ   .   r  >   X   r   r#  rU   r   H   r   r  r'  r   r   r  r   r  r   r   r  r   d   r  r   r   r   r4  4   V   r   r   r  r   r   r  r   r   r"  (\  r   r   rL   Z   r   r   r      r   r   2   r   r      rL   r   r   r   J   P   r   r   r   )   r      r'  r   r   E   r   r  r  r   r   r   r   r   r   r   r   r*  r  r3  r  r   r   r   r4  r   r#  r   r   r$  r  r   r   r,  rS   r9  r  r   r#  r%  r  r   r
  r   0   r   r   r   r   r~   r   r  r   =   r   r0  r   rC  r   r   r   rK   rT   r   r  r  rK  r   r  rM  rU   rG  `   r   r   r   8   r  r1  r(  rQ  r;  r'  r   r   r  r   r  r   r   r   rC  (   r   r   r   r4  r  r   r,  '   r!  r   r   W   @   r   r  r   rk   r)  r   r   r  r   6   rR  r   rT   r8  r)  rM  r   rX  r   r  r  r   r   r   r   r   rG  r  $   r   rS   r;  r#  rC  r6  r:  r   ir   r  r   r  rR   rT  rY  r   r   r   r   r   r  rG  r5  r   r   r&  r  r[  r   r   rI  r  r   r   rD  r   r.  r1  r>  r   r2  r  r   r   r9  r  r!  r8  r   r   rT  r   &   r   r]  r4  r   r   rX  r'  r$  r      r   r   r  r  r7  r   r  r   r   r   r?  r[  rJ  r%  r>  r>  r9  r-  r   r0  r[  r  r   r  r   r   r   r
  r   rL   r   r  ro   ro   rP  r   r   r   rJ  r   r  r#  r   r   rB  rB  rS   r   r   r%  rU  r   rS   r   rY  r   rA  r   r[  r   r   rF  r  r   r?  r  r  r   r*  rW  r  r  r   r$  r,  r   r   r6  r   r9  r   r   r   r_  r   r   r*  r  r   r  r  r^  r   r   r  r  r"  r   r   r   r4  ro   r,  r   r  r   (C  i  ii`  ii  i-  iA  iigiiY  ii_  iOi.  iin%  i0$  io  i[  i	J  i5'  i\ii*  ii?i  i*  iizi?  iDz  i`  i|  i  i  ii  i=  is  i  i|  i  ivki}i%  ra  iQi  i`iHii4  iw  i%  i3Uii,  ii  ii  iY  i}i|idi"li޷iiti\ioiiiNb  iiM  i2  iMiiKl  i#iiiiwN  i$iZi  iQ  i9i%}  5ig  ivF  i;if|  ii4ii0  ib  i&Mi^  i'iHi>iiTiߟirE  iuii'  ixiciL  iilg  iiU  i  ip  iXi  i  i0  i5i,  i iCi7  i  ibi/ i_  iYir  i  iM6  iiS  ii|d i  iY ii ii  iPi#i<  iii  i+  ii  i  iiii9i0|iiibiE  itiy  ii:  id  i ii iii  iwi% iW i  iiiiHxii*Fi[iiuUi+iieiy;  izi+  ii<i  i  i/8  iiihihsi  ii, iPi  i#  ibcii3  i*  iI6i&  i6/  iij ioiiѶiI  i?  i)  iii)  iii  iN  ii i߷  i  iϱ  ii<D  i!i1 iiwiix  isw i!  i]  ii}  i[  i  iiyai  io  i1zi'aidaimiVi  iiԔ i iiiIviJ
  i/  i iVK  ixii&i$c  iy`i"i4i  iOij  ii  i}i3  i4i\i i i  iri^ialiH
ii  ii i]  i.  iv  i  i  ii  i!ii  i^N iii
igi!  ivrb  iZ  i'  i  iZiini2 i~  i  iRiorili  iiia  i  iii71  i\ih  i  iiƺ  ii0  ii(ioifi  ii+i i3i" i+G  i8 ii_ iD  i%}ii  imi i9  i=Ri0*  ii2i  iYV  it  ii5  i  i  i.!  i$  ii>{  ii  i1iiK  iO  i'ii{i}i  i_ii	i;  i  iiI  ig  iI  iifiDii  i2  i!陏iE  iiiiii`  is  i* i  iJiiWii.i]  iiܧ  i  i(q  iizi"_  i\ih  i  iiSiiOQii/iii{  iY  iiii4  i"  iw iI  i  i i  i.  iM\iO  ii  (iDie  i  iat  iz  iIio  iF  iO  i$  iS  iƔiOii^iYii*  iiSif  i9  iy  ini&  iii3.  i*iiw i_  iiwii	OiA#  [ioui]+  iv-  iq  i  i\i$  io5  i  i6  ii?  i   iWisiziAi&  iw  io  i7O  iiiyiii^  iC  ie  i'ii9i<i$X  ii  i-  in  iiiiix}  iiK,  i{ii  i i%iWre  iU  ild  i   i  ii  iQ  iN  iX  i-  i3  i	  ii7iEii8i  iiiirii  i	  i  ii|)r   rF  r  rG  r   r   r  r   r   r
  rU  r?  r   r   r   r  r   rR   r  rT   r   r   r   r   i/   r%  r  r6  r   r   r   r=  rC  rG  rV  r   r   r  r:  rU   rS  r   r   r  r  r   r0  rC  r   r  r   r  rE  r*  r   r   r   ir   r  rO  rF  r;  rL   G   rR   r   rJ  rR   r  r9  r   rS   rJ  r$  r/  r   r  r   r  r   rJ  rF  r  rg  r   r   rU  r   r  r   r  r   r   r%  r_  r   r:  r&  r1  rQ  r  r   rS  rP  r"  rI  r   r   r  r   r"  r_  r   r   r   r>  r   r   rQ   r[  rJ  r   rG  r   r   r  r   r   rE  r/  r7  r   rI  r  r3  r   r0  rW  r7  r  r   r/  r   r  r   r   r   ;   r   c   r   r   r  r-  r   r   rL   r   r  r@  r   r9  r   r   r   rV  r&  r   r   r~   r  rR  r\  rD  rU  r   r   r*  r   r  r  r   r  rO  rW  ri  r1  r   r   rF  r   r   r  rF  rR   r   r   rP  r*  r   r   r  r  r  r   r3  r
  r  rI  r  r   r   r4  r8  r  rQ  r   rQ   rR  r   r   r,  r   r   r   rA  rT  r  r   r   r$  r$  rO  r   r   rJ  r   rJ  r   r  r   (+  r5  r/  r   r   r   r0  r*  r   r  rE  r   rQ  r^  r   r   r   r  r   r
  r'  r   r   r;  r   r?  r
  r  rR   rg  r   r   r   ri  r?  r.  rj  r  rE  rV  r   r-  r   rV  ri  r   rI  r  r   rT  r  rR   r  r0  r  r   rO  r   rQ      rQ  rZ  r   r  r   rT   r   r   rS  r   r3  rY  r   ri  r   r   rX  r   r[  rB  r   r;  r   r  r   r   r   r   r   r   rh  r   r'  rN  rQ  r  ro   rU   rQ  r   r  r  r   r[  rh  r   r   r   r2  rj  r5  r\  rS   rX  r   rI  rK  r   r  r4  r  r  r7  rU  r  r   rL   r   r`  r5  r   r  rQ   r   r1  r   r(  rH  r   r   r	  r   r   r   rS   r   r   ]   r   r  r;  r?  r   rn  rj  r8  r  r'  r   r   r  rP  r  r   r  rn  r   r   r   rl  r   r   r+  r  r   r]  rB  r   r6  r  r;  r   r   rg  r  r)  r   r2  r   r8  r  r  r   r   r   rT   r  r   r   rk   r   rn  r   r   r#  r3  r;  r   r:  ri  rV  r   r   rl  r   r  rH  rL  rM  r<  r   rS   r   rk  r   r   r*  r  r   r   r   r	  r&  r^  r   r3  r8  r>  rL   r  r   r"  r   rJ  r:  r.  r   r   rZ  r^  r   rP  r   r   r>  r   r;  r  r   r   r!  rM  r   rQ   r   r  rK   rK  r   r   r   r  r   r   r   r8  r   rR   r7  r   r:  r5  r   r_  r   r>  ri  r   rj  r'  r  rm  rH  r   r   r   r[  r`  r   r   (  i  i$  i4iiiil  iii6  iA  i?,  idiiC  i+R  iii>  i  iis"  iD  i'  i  ii!  ii  ic  i5&  i/     i=I  iiik  i;ii1  i  ii/L  ii  ivi  i$\  iƐiu  i  ii[.i?iir  i  iV  iii8  iwii<  i  iS;  i:iiibi  i\  iViiA  ibI  i/  i^`  iy  i  ikii  ivii)Q  iL  iP  iڃ  iiUi}  i  iяi0ii5  i|-  iD  i(i\  ii  iQ  i  ii  iix`i`M  iHiZ  i  iqb  iG$  il  ii%  i6i3  i<  i  i_N  i  i-  ij  ivimi6  iʀ  i2ik  ios  iv igiXli(i   i  iˎi(i  iPiSi  iŒ  iii{iiU|igiizD  i  i
  iU$ib  iiiMiC ii\Ri i9  iia(  iN  iuiS)i  i  i8H  ir  i%  iid  i0 iii  i	  i5iiA iei  i  i  i0iʷ  i	f  i![i4 ii	  iipq  i]iHix[  ii?Si@YiiM  i  iw=  i,  i ifiJ  i9  i  ii@  ih i  i  i i  i iiiFiwi'  in i"  iG  iJ  iBr  iR!  i  ii<iiiT  i   izsi5 iii{  iiii**  iia  i  i6i wiy it  iM  i+ioiWiDid ihijisii.  iv  iS\i/]iNz  iNm  iH  i@  iJ  i(iۂ  iu  ii]  iz  ii\  i=i&iieiirf  i%i9iyw  i!  iJ  iiY iH   i-ci_i i
2  ii ii  i\i i^  i: i4  i&  i  i@i  iiiS i.i  iJo  i= iT  i i
  ivi  ip  ibi=  i6  i/  iPi9  iw  i;@iiGq  i  i  iiii)  imGi,  i*  iiiW  ii&  isiaiiu  i  i  i;  i iT  i
iS3 iUi5  i,  i6i.i-ii  iXi~iii  i1i8  ikin  iWdi{rd  i|D i:iǙifIi1  i  isiqiu  i2i  iX  iӉi3iVii  i9ig7  ii-i  i7i  ii i.  i  i`  i  i  i  iR  iii§i{  im i^  iiiiH  iYF  ii1  iiisO  i  ii.iiG  i=  i  i;  iLb  iHip(  iqi  iT  ii)i i}iiˁ  i  iR  i,i^h  iݯi)  i  r8  i^  iuiii  i  iABicC  i>in  iii  iim  iib  iii  ii[n  iitiiѝiI  iiyi5iC  iio~ip  iiiDB  i	i[i"7  i7ii  ii-i  iD  iPrc  iL&  iiu
  io  iii\  ii  i0  i4"  itiwii  iR  iiO  iii	  i{.  i  i
iX  iQ   is+  i\i  iniv/  iti  is  iJi	  i)r   rH   rI   r   rG   )rW   rr   hKp1p2ress          rX   test_dup_mulrv    s   2r2"$$$21w#r)))BqE7B#r)))BqE7RUGR(RUG333BqE7RUGR(RVH4442r2"$$$21az2&",,,Bq!H:r2&",,,Bq!H:1az2.2a8*<<<Bq!H:1az2.2b":,>>>%r*A<$A126A1a!!!1a!!!?B'A126A1a!!!
1AAaD!A$<!A$!q1adAaD\AAA	 ; =?
@B 
 I* KM+
NB,  =z {=C~ 2r2#%%%	 8 :<
=B  
 A$ CE%
FB&  8/p 13q84Ct 2r2#%%%rZ   c                  t   t        t        d      gt        d      gdt              t        t        d      gt        d      gt              k(  sJ t        t        dd      gt        dd      gdt              t        t        dd      gt        dd      gt              k(  sJ t        g ggg ggdt              g ggk(  sJ t        t        d      gggg ggdt              g ggk(  sJ t        g ggt        d      gggdt              g ggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        t        d      gggt        d      gggdt              t        d      gggk(  sJ t        g ggg ggdt              g ggk(  sJ t        t        dd      gggg ggdt              g ggk(  sJ t        g ggt        dd      gggdt              g ggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ t        t        dd      gggt        dd      gggdt              t        dd      gggk(  sJ t	        d      } t         | d      g | d      gg | d      g | d	      ggd|        | d      g | d	      ggk(  sJ y )
NrS   rM   r   rQ   rK   rL   r   rT   rR   )r    rH   r   rI   rG   rr  s    rX   test_dmp_mulry    s   BqE7RUGQ+A"Q%"%& & &Bq!H:1az1b1Aq
R1XJ+, , , RD6RD61b)rdV333beWI;"2.B4&888RD6beWI;2.B4&888beWI;2a5'Q3"Q%	{BBBbeWI;2a5'Q3"Q%	{BBBRD6RD61b)rdV333bAhZL>RD61b1rdV;;;RD6bAhZL>1b1rdV;;;bAhZL>bAhZL>1b91b	{m_LLLbAhZL>bAhZL>1b91b	{m_LLL
1A
A$!A$AaD6AaD6*Aq278tfqtf5EF F FrZ   c                     t        g t              g k(  sJ t        t        d      gt              t        d      gk(  sJ t        t        d      t        d      gt              t        d      t        d      t        d      gk(  sJ t        g t              g k(  sJ t        t        dd      gt              t        dd      gk(  sJ t        t        dd      t        dd      gt              t        dd      t        dd      t        dd      gk(  sJ t        g dt              } t        | t              t        g dt              k(  sJ t	        d      }t         |d       |d      g|       |d       |d	      gk(  sJ y )
NrK   rR   rL   rQ   r   r   r   rT   rM   )r!   rH   rI   r   rG   )rW   rr  s     rX   test_dup_sqrr{    sA   2r?b   BqE7BBqE7***BqE2a5>2&2a5"Q%A*????2r?b   Bq!H:r"r!Qxj000Bq!HbAh',Aq2a8R1X0NNNN?B'A1b>Z(FKKKK
1AAaD!A$<#!ad|333rZ   c                  :   t        t        d      t        d      gdt              t        t        d      t        d      gt              k(  sJ t        g ggdt              g ggk(  sJ t        t        d      gggdt              t        d      gggk(  sJ t        g ggdt              g ggk(  sJ t        t        dd      gggdt              t        dd      gggk(  sJ t	        d      } t         | d      g | d      ggd|        | d      g | d      ggk(  sJ y )	NrL   rK   r   rR   rQ   r   rT   rM   )r"   rH   r!   rI   rG   rx  s    rX   test_dmp_sqrr}    s   BqE2a5>1b)A1#$ $ $ RD61b!rdV+++beWI;2&RUG9+555RD61b!rdV+++bAhZL>1b)1azl^;;;
1AQqTFQqTF#Q*!v!v.>>>>rZ   c                  6   t        g dt              t        d      gk(  sJ t        g dt              t        d      gk(  sJ t        g dt              g k(  sJ t        g dt              g k(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        d      gdt              t        d      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        t        dd      gdt              t        dd      gk(  sJ t        g dt              } t        | dt              t        dgt              k(  sJ t        | dt              t        g dt              k(  sJ t        | dt              t        g d	t              k(  sJ t        | dt              t        g d
t              k(  sJ y )Nr   rL   rM   rQ      r   rK   r   )ro   r   r   r   r  r   rT   r  i&  rL   r      iW  )r#   rH   rI   r   rV   s    rX   test_dup_powr    s   2q""Q%(((2q""Q%(((2q"###2q"###BqE7Ar"r!ug---BqE7Ar"r!ug---BqE7Ar"r!ug---BqE7Ar"r!ug---BqE7Ar"r!ug---BqE7Ar"r$xj000Bq!H:q"%"Q(333Bq!H:q"%"Q(333Bq!H:q"%"Q(333Bq!H:q"%"Q(333Bq!H:q"%"Q(333Bq!H:q"%"T6*:);;;;?B'A1a
A3 33331a
?B ????1a
+I2 NNNN1a
92!? ? ? ?rZ   c                     t        g gddt              t        d      ggk(  sJ t        g gddt              t        d      ggk(  sJ t        g gddt              g gk(  sJ t        g gddt              g gk(  sJ t        t        d      ggddt              t        d      ggk(  sJ t        t        d      ggddt              t        d      ggk(  sJ t        t        d      ggddt              t        d      ggk(  sJ t        t        dd      ggddt              t        dd      ggk(  sJ t        t        dd      ggddt              t        dd      ggk(  sJ t        t        dd      ggddt              t        dd      ggk(  sJ t        g dt              } t        | ddt              t	        | dt              k(  sJ y )	Nr   rL   rM   rQ   r  r  r   rK   )r$   rH   rI   r   r#   rV   s    rX   test_dmp_powr    s   B4Ar"1wi///B4Ar"1wi///B4Ar"rd***B4Ar"rd***RUG9aB'RUG9444RUG9aB'RUG9444RUG9aB'RUG9444R1XJ<Ar*1azl:::R1XJ<Ar*1azl:::R1XJ<Ar*40@/A.BBBB?B'A1aB71a#4444rZ   c                     t        g dt              t        g dt              t        ddgt              } t        ddgt              }t        t              | |fk(  sJ t        t              | k(  sJ t	        t              |k(  sJ t        t        fd       t        g dt              t        g dt              t        ddgt              } t        ddgt              }t        t              | |fk(  sJ t        t              | k(  sJ t	        t              |k(  sJ t        t        fd       y )	NrQ   rL   rL   rS   rS   r   rL   rk   r   r5  o   c                  &    t         t              S N)r,   rH   rq   s   rX   r   ztest_dup_pdiv.<locals>.<lambda>      
1a(< rZ   c                  &    t         t              S r  )r,   rI   rq   s   rX   r   ztest_dup_pdiv.<locals>.<lambda>  r  rZ   )r   rH   r)   r+   r*   rJ   rE   rI   qrrW   rr   s     @@rX   test_dup_pdivr    s   <$A:r"AB8R AB9b!AAq"!Q'''Aq""""Aq""""
 <=<$A:r"AB8R AB9b!AAq"!Q'''Aq""""Aq""""
 <=rZ   c                     t        dgg g dgdt              t        dgddggdt              t        dgddggdt              } t        g dgdt              }t        dt              | |fk(  sJ t        dt              | k(  sJ t	        dt              |k(  sJ t        t        fd       t        dgg g dgdt              t        dgddggdt              t        dgddggdt              } t        g d	gdt              }t        dt              | |fk(  sJ t        dt              | k(  sJ t	        dt              |k(  sJ t        t        fd
       y )NrL   rO   rU   r   rK   r   r   c                  (    t         dt              S NrL   r0   rH   rq   s   rX   r   ztest_dmp_pdiv.<locals>.<lambda>"      
1aB(? rZ   rK   r   )ro   r   r   c                  (    t         dt              S r  r  rq   s   rX   r   ztest_dmp_pdiv.<locals>.<lambda>.  r  rZ   )r   rH   r-   r/   r.   rJ   rE   r  s     @@rX   test_dmp_pdivr    sg   QCY'B/AQC"a>1b)AQC!Q=!R(AI;2&AAq!R QF***Aq!R A%%%Aq!R A%%%
 ?@QCY'B/AQC"a>1b)AQC!Q=!R(AI;2&AAq!R QF***Aq!R A%%%Aq!R A%%%
 ?@rZ   c                      t        t        d        t        g dt              } t        g dt              }g | }}t	        | |t              ||fk(  sJ y )Nc                  (    t        g dg t              S Nrg   )r1   rH   r_   rZ   rX   r   z!test_dup_rr_div.<locals>.<lambda>2      jB&C rZ   r  r  )rJ   r   r   rH   r1   rW   rr   r  r  s       rX   test_dup_rr_divr  1  sJ    
CD<$A:r"AqqAaBAq6)))rZ   c                  |   t        t        d        t        dgg g dgdt              } t        dgddggdt              }t        dgddggdt              }t        g dgdt              }t	        | |dt              ||fk(  sJ t        dgg g dgdt              } t        dgddggdt              }t        dgddggdt              }t        g dgdt              }t	        | |dt              ||fk(  sJ t        dgg g dgdt              } t        dgddggdt              }g g| }}t	        | |dt              ||fk(  sJ y )	Nc                  2    t        ddgdggg gdt              S NrL   rK   rQ   )r2   rH   r_   rZ   rX   r   z!test_dmp_rr_div.<locals>.<lambda>=      j1a&1#a&L rZ   rL   rO   rU   r   r  rK   r   )rJ   r   r   rH   r2   r  s       rX   test_dmp_rr_divr  <  sM   
LMQCY'B/AQC"a>1b)AQC!Q=!R(AI;2&AaAr"q!f,,,QCY'B/ARD1a&>1b)ARD2q'?Ar*AI;2&AaAr"q!f,,,QCY'B/AQC"a>1b)A4qAaAr"q!f,,,rZ   c                      t        t        d        t        g dt              } t        g dt              }t        dd      t        dd      g}t        dd      t        d	d      g}t	        | |t              ||fk(  sJ y )
Nc                  (    t        g dg t              S r  )r3   rI   r_   rZ   rX   r   z!test_dup_ff_div.<locals>.<lambda>X  r  rZ   r  r  rQ   rS   r   r;  r5  r  )rJ   r   r   rI   r3   r  s       rX   test_dup_ff_divr  W  sm    
CD<$A:r"A	Aq2b":A	BRR[!AaBAq6)))rZ   c                     	 ddl m}  ddlm}  |       } | dd       | dd      g} | dd      g}t        ||d|       | dd       | dd      gg fk(  sJ  | dd       | dd       | dd       | dd	      g} | d
d       | dd       | d
d      g}t        ||d|       | d
d       | dd      g | dd       | dd      gfk(  sJ y # t        $ r Y y w xY w)Nr   )mpq)GMPYRationalFieldrL   rQ   rK   rT   rR   rS   rU   r   rM   r   r   r   )gmpy2r  ImportErrorsympy.polys.domainsr  r4   )r  r  rr  rW   rr   s        rX   test_dup_ff_div_gmpy2r  b  s    6A	Qq3q8A	Qq
AaAq!s1QxQq&:B%????	Qq3q8S1Xs1Qx0A	RC!Hc"Qi(AaAq!s2ay#b)&<s1Ry#cRT+>V%WWWW  s   C 	CCc                     t        t        d        t        dgg g dgdt              } t        dgddggdt              }t        dd      gt        dd      t        dd      gg}t        dd      t        dd      t        dd      gg}t	        | |dt              ||fk(  sJ t        dgg g dgdt              } t        dgddggdt              }t        dd      gt        dd      t        dd      gg}t        dd      t        dd      t        dd      gg}t	        | |dt              ||fk(  sJ t        dgg g dgdt              } t        dgddggdt              }t        dd      gt        dd      t        dd      gg}t        dd      t        dd      t        dd      gg}t	        | |dt              ||fk(  sJ y )Nc                  2    t        ddgdggg gdt              S r  )r4   rI   r_   rZ   rX   r   z!test_dmp_ff_div.<locals>.<lambda>t  r  rZ   rL   rO   rU   r   rK   r   )rJ   r   r   rI   r4   r  s       rX   test_dmp_ff_divr  s  s   
LMQCY'B/AQC"a>1b)A
Q(bAh1a)*A
Q(Bq!HbAh	'(AaAr"q!f,,,QCY'B/ARD1a&>1b)A
R)r"ay"Q(+,A
Q(Bq!HbAh	'(AaAr"q!f,,,QCY'B/AQC"a>1b)A
Q(bAh1a)*A
Q(Bq!HbAh	'(AaAr"q!f,,,rZ   c                     g dg dg dddgf\  } }t        t              | |fk(  sJ t        t              | k(  sJ t        t              |k(  sJ t	        t
        fd       g dg dd	d
gg df\  } }t        t              | |fk(  sJ t        t              | k(  sJ t        t              |k(  sJ t	        t
        fd       y )NrS   rR   rQ   rK   rL   rg   rS   r  r   r  rL   c                  &    t         t              S r  r8   rH   rq   s   rX   r   ztest_dup_div.<locals>.<lambda>      	!Q(; rZ   )rS   rR   rQ   rK   rL   r   )rL   rK   r   r   r   rS   r  )rk   rK   r   rZ  c                  &    t         t              S r  r  rq   s   rX   r   ztest_dup_div.<locals>.<lambda>  r  rZ   )r5   rH   r7   r6   rJ   rE   r  s     @@rX   test_dup_divr    s     )Z"a@JAq!Q1aA&&&1a!!!1a!!!
 ;<#_q"g?OOJAq!Q1aA&&&1a!!!1a!!!
 ;<rZ   c                     g dg dg dddgf\  } }t        dt              | |fk(  sJ t        dt              | k(  sJ t        dt              |k(  sJ t	        t
        fd       dgggdggdggg ggdgggf\  } }t        dt              | |fk(  sJ t        dt              | k(  sJ t        dt              |k(  sJ t	        t
        fd	       y )
Nr  rg   r  r  rL   r   c                  (    t         dt              S )Nr   r<   rH   rq   s   rX   r   ztest_dmp_div.<locals>.<lambda>      	!Q2(> rZ   rK   c                  (    t         dt              S )NrK   r  rq   s   rX   r   ztest_dmp_div.<locals>.<lambda>  r  rZ   )r9   rH   r;   r:   rJ   rE   r  s     @@rX   test_dmp_divr    s    )Z"a@JAq!Q1aBAq6)))1aB1$$$1aB1$$$
 >?3%QC51#,"1#7JAq!Q1aBAq6)))1aB1$$$1aB1$$$
 >?rZ   c                      t        g t              dk(  sJ t        dgt              dk(  sJ t        g dt              dk(  sJ y )Nr   rL   rL   rR   rK   rQ   rR   )r=   rH   r_   rZ   rX   test_dup_max_normr    sC    B1$$$R A%%%b)Q...rZ   c                      t        g ggdt              dk(  sJ t        dgggdt              dk(  sJ t        t        dt              dk(  sJ y )NrK   r   rL   rT   )r>   rH   r]   r_   rZ   rX   test_dmp_max_normr    sQ    "2&!+++1#B'1,,,Q#q(((rZ   c                      t        g t              dk(  sJ t        dgt              dk(  sJ t        g dt              dk(  sJ y )Nr   rL   r  r~   )r?   rH   r_   rZ   rX   test_dup_l1_normr    sC    r2!###sB1$$$|R(B...rZ   c                      t        g ggdt              dk(  sJ t        dgggdt              dk(  sJ t        t        dt              dk(  sJ y )NrK   r   rL   r>  )r@   rH   r]   r_   rZ   rX   test_dmp_l1_normr    sQ    vq"%***!w2&!+++sAr"b(((rZ   c                      t        g t              dk(  sJ t        dgt              dk(  sJ t        g dt              dk(  sJ y )Nr   rL   r  r   )rA   rH   r_   rZ   rX   test_dup_l2_norm_squaredr    sC    r2&!+++sB'1,,,|R0B666rZ   c                      t        g ggdt              dk(  sJ t        dgggdt              dk(  sJ t        t        dt              dk(  sJ y )NrK   r   rL   r  )rB   rH   r]   r_   rZ   rX   test_dmp_l2_norm_squaredr    sQ    vq"-222!w2.!333sAr*c111rZ   c            	          t        dt              dgk(  sJ t        g dddgg dft              t        g dt        ddgg dt              t              k(  sJ y )Nr_   rL   rg   rK   )rM   rS   rR   rQ   )rC   rH   r   r_   rZ   rX   test_dup_expandr    sY    b"!$$$y1a&,7<	7Aq6<<bAB B BrZ   c                      t        ddt              dggk(  sJ t        dgdgdggdgdggdgdgdgdggfdt              t        dgdgdggt        dgdggdgdgdgdggdt              dt              k(  sJ y )Nr_   rL   rK   rQ   rM   rS   rR   )rD   rH   r    r_   rZ   rX   test_dmp_expandr    s    b!R aSE)))aS1#!qc
aS1#sQC4HI1bQ!qcA31#sqcA3AC6R"!"#R	)) ) )rZ   N)__doc__sympy.polys.densebasicr   r   sympy.polys.densearithr   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)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   sympy.polys.polyerrorsrE   sympy.polys.specialpolysrF   r  rG   rH   rI   sympy.testing.pytestrJ   to_denser]   f_1f_2f_3f_4f_5f_6r^   rY   r`   rc   re   ri   rl   rs   rv   rx   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rv  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rV   s   0rX   <module>r     s   :                > - * * '<CI$Gqajjl$G !S#sCcZQ+R1Xq"=D04C04O"6"-0-0EJ,L,F?2
2

O
=
M
=M4L&N4M&W[`&FF04$??@5(>4A4*-6	*X"-8=$@$/)/)72B)c %Hs   4F
