
    Ed                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lm Z  dd!lm!Z! dd"lm"Z" dd#lm#Z# dd$lm$Z$ dd%lm%Z% dd&lm&Z& dd'lm'Z' dd(lm(Z( dd)lm)Z) dd*lm*Z* dd+lm+Z+ dd,lm,Z, dd-lm-Z- dd.lm.Z. dd/lm/Z/ dd0lm0Z0 dd1lm1Z1 dd2lm2Z2 dd3lm3Z3 dd4lm4Z4 dd5lm5Z5 dd6lm6Z6 dd7lm7Z7 dd8lm8Z8 dd9lm9Z9 dd:lm:Z: dd;lm;Z; dd<lm<Z< dd=lm=Z= dd>lm>Z> dd?lm?Z? dd@lm@Z@ ddAlmAZA ddBlBmCZC ddClBmDZD ddDlBmEZE ddElBmFZF ddFlBmGZG ddGlBmHZH ddHlBmIZI ddIlBmJZJ ddJlBmKZK ddKlBmLZL ddLlMmNZN ddMlMmOZO ddNlMmPZP ddOlMmQZQ ddPlMmRZR ddQlMmSZS ddRlMmTZT ddSlMmUZU ddTlMmVZV ddUlMmWZW ddVlMmXZX ddWlMmYZY ddXlMmZZZ ddYlMm[Z[ ddZlMm\Z\ dd[lMm]Z] dd\lMm^Z^ dd]lMm_Z_ dd^lMm`Z` dd_lMmaZa dd`lMmbZb ddalMmcZc ddblMmdZd ddclMmeZe dddlMmfZf ddelMmgZg ddflMmhZh ddglMmiZi ddhlMmjZj ddilMmkZk ddjlMmlZl ddklMmmZm ddllMmnZn ddmlMmoZo ddnlMmpZp ddolqmrZr ddplqmsZs ddqlqmtZt ddrlqmuZu ddslqmvZv ddtlqmwZw ddulqmxZx ddvlqmyZy ddwlqmzZz ddxlqm{Z{ ddylqm|Z| ddzlqm}Z} dd{lqm~Z~ dd|lqmZ dd}lqmZ dd~lqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlqmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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  e  G dӄ dԦ                      Z!dS )z8Compatibility interface between dense and sparse polys.     )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_add_mul)dmp_add_mul)dup_sub_mul)dmp_sub_mul)dup_mul)dmp_mul)dup_sqr)dmp_sqr)dup_pow)dmp_pow)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)dup_LC)dmp_LC)dup_TC)dmp_TC)dmp_ground_LC)dmp_ground_TC)
dup_degree)
dmp_degree)dmp_degree_in)dmp_to_dict)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_clear_denoms)dmp_clear_denoms)
dup_revert)dup_half_gcdex)dmp_half_gcdex)	dup_gcdex)	dmp_gcdex)
dup_invert)
dmp_invert)dup_euclidean_prs)dmp_euclidean_prs)dup_primitive_prs)dmp_primitive_prs)dup_inner_subresultants)dup_subresultants)dup_prs_resultant)dup_resultant)dmp_inner_subresultants)dmp_subresultants)dmp_prs_resultant)dmp_zz_modular_resultant)dmp_zz_collins_resultant)dmp_qq_collins_resultant)dmp_resultant)dup_discriminant)dmp_discriminant)dup_rr_prs_gcd)dup_ff_prs_gcd)dmp_rr_prs_gcd)dmp_ff_prs_gcd)dup_zz_heu_gcd)dmp_zz_heu_gcd)dup_qq_heu_gcd)dmp_qq_heu_gcd)dup_inner_gcd)dmp_inner_gcd)dup_gcd)dmp_gcd)
dup_rr_lcm)
dup_ff_lcm)dup_lcm)
dmp_rr_lcm)
dmp_ff_lcm)dmp_lcm)dmp_content)dmp_primitive)
dup_cancel)
dmp_cancel)dup_trial_division)dmp_trial_division)dup_zz_mignotte_bound)dmp_zz_mignotte_bound)dup_zz_hensel_step)dup_zz_hensel_lift)dup_zz_zassenhaus)dup_zz_irreducible_p)dup_cyclotomic_p)dup_zz_cyclotomic_poly)dup_zz_cyclotomic_factor)dup_zz_factor_sqf)dup_zz_factor)dmp_zz_wang_non_divisors)dmp_zz_wang_lead_coeffs)dup_zz_diophantine)dmp_zz_diophantine)dmp_zz_wang_hensel_lifting)dmp_zz_wang)dmp_zz_factor)dup_qq_i_factor)dup_zz_i_factor)dmp_qq_i_factor)dmp_zz_i_factor)dup_ext_factor)dmp_ext_factor)dup_gf_factor)dmp_gf_factor)dup_factor_list)dup_factor_list_include)dmp_factor_list)dmp_factor_list_include)dup_irreducible_p)dmp_irreducible_p)	dup_sturm)dup_root_upper_bound)dup_root_lower_bound)dup_step_refine_real_root)dup_inner_refine_real_root)dup_outer_refine_real_root)dup_refine_real_root)dup_inner_isolate_real_roots) dup_inner_isolate_positive_roots) dup_inner_isolate_negative_roots)dup_isolate_real_roots_sqf)dup_isolate_real_roots)dup_isolate_real_roots_list)dup_count_real_roots)dup_count_complex_roots)dup_isolate_complex_roots_sqf)dup_isolate_all_roots_sqf)dup_isolate_all_roots)	dup_sqf_p	dmp_sqf_pdup_sqf_normdmp_sqf_normdup_gf_sqf_partdmp_gf_sqf_partdup_sqf_partdmp_sqf_partdup_gf_sqf_listdmp_gf_sqf_listdup_sqf_listdup_sqf_list_includedmp_sqf_listdmp_sqf_list_includedup_gff_listdmp_gff_list)8	gf_degreegf_LCgf_TCgf_stripgf_from_dict
gf_to_dictgf_from_int_polygf_to_int_polygf_neggf_add_groundgf_sub_groundgf_mul_groundgf_quo_groundgf_addgf_subgf_mulgf_sqr
gf_add_mul
gf_sub_mul	gf_expandgf_divgf_remgf_quogf_exquo	gf_lshift	gf_rshiftgf_pow
gf_pow_modgf_gcdgf_lcmgf_cofactorsgf_gcdexgf_monicgf_diffgf_evalgf_multi_eval
gf_composegf_compose_modgf_trace_map	gf_randomgf_irreduciblegf_irred_p_ben_orgf_irred_p_rabingf_irreducible_pgf_sqf_pgf_sqf_part
gf_Qmatrixgf_berlekampgf_ddf_zassenhausgf_edf_zassenhausgf_ddf_shoupgf_edf_shoupgf_zassenhausgf_shoupgf_factor_sqf	gf_factor)publicc                   6   e Zd ZdZdZdZdZdZd Zd*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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.d) Z/d* Z0d+ Z1d, Z2d- Z3d. Z4d/ Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:d5 Z;d6 Z<d7 Z=d8 Z>d9 Z?d: Z@d; ZAd< ZBd= ZCd> ZDd? ZEd@ ZFdA ZGdB ZHdC ZIdD ZJdE ZKdF ZLdG ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXdS ZYdT ZZdU Z[dV Z\dW Z]dX Z^dY Z_dZ Z`d[ Zad\ Zbd] Zcd^ Zdd_ Zed` Zfda Zgdb Zhdc Zidd Zjde Zkdf Zldg Zmdh Zndi Zodj Zpdk Zqdl Zrdm Zsdn Ztdo Zud+dqZvd+drZwds Zxdt Zydu Zzdv Z{dw Z|dx Z}dy Z~dz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd,dZd,dZd Zd Zd Zd Zd Zd Zd Zd Zd+dZd Zd Zd Zd Zd Zd Zd Zd-dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Zd΄ Zdτ ZdЄ ZԐd+dфZՐd+d҄Z֐d+dӄZאd+dԄZؐd+dՄZِd+dքZdׄ Zd؄ Zdل Zdڄ Zސd+dۄZߐd.d܄Zd/d݄Zd/dބZd0d߄Zd.dZd.dZd.dZd.dZd1dZd-dZd*dZd/dZd.dZd/dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd,dZd Zd,dZd Zd Zd Zd 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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+dZ#d  Z$d! Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d2d(Z,d) Z-dS (3  IPolysNc                     d S N )selfgens     9lib/python3.11/site-packages/sympy/polys/compatibility.pydropzIPolys.drop           c                     d S r  r  )r  symbolsdomainorders       r!  clonezIPolys.clone   r#  r$  c                     d S r  r  )r  s    r!  	to_groundzIPolys.to_ground   r#  r$  c                     d S r  r  r  elements     r!  
ground_newzIPolys.ground_new   r#  r$  c                     d S r  r  r-  s     r!  
domain_newzIPolys.domain_new   r#  r$  c                     d S r  r  )r  ds     r!  	from_dictzIPolys.from_dict   r#  r$  c                     ddl m} t          ||          r|j        | k    r|S t	          d          |                     |          S )Nr   )PolyElementzdomain conversions)sympy.polys.ringsr6  
isinstanceringNotImplementedErrorr/  )r  r.  r6  s      r!  wrapzIPolys.wrap   s\    111111g{++ 	,|t# @)*>?????7+++r$  c                 P    |                      |                                          S r  )r;  to_denser-  s     r!  r=  zIPolys.to_dense	  s     yy!!**,,,r$  c                 d    |                      t          || j        dz
  | j                            S N   )r4  rL   ngensr'  r-  s     r!  
from_densezIPolys.from_dense  s(    ~~k'4:a<MMNNNr$  c                 |    |                      t          |                     |          ||| j                            S r  )rB  r   r=  r'  r  fcis       r!  r   zIPolys.dup_add_term  0    |DMM!,<,<aDKPPQQQr$  c           	          |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S Nr   r@  )rB  r   r=  r;  r"  rA  r'  rD  s       r!  r   zIPolys.dmp_add_term  d    |DMM!,<,<diill>O>OPQ>R>R>[>[>]>]_`bfblmnbnptp{||}}}r$  c                 |    |                      t          |                     |          ||| j                            S r  )rB  r   r=  r'  rD  s       r!  r   zIPolys.dup_sub_term  rH  r$  c           	          |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rJ  )rB  r   r=  r;  r"  rA  r'  rD  s       r!  r   zIPolys.dmp_sub_term  rK  r$  c                 |    |                      t          |                     |          ||| j                            S r  )rB  r   r=  r'  rD  s       r!  r   zIPolys.dup_mul_term  rH  r$  c           	          |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rJ  )rB  r   r=  r;  r"  rA  r'  rD  s       r!  r   zIPolys.dmp_mul_term  rK  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r	   r=  r'  r  rE  rF  s      r!  r	   zIPolys.dup_add_ground  .    ~dmmA.>.>4;OOPPPr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r
   r=  rA  r'  rQ  s      r!  r
   zIPolys.dmp_add_ground  8    ~dmmA.>.>4:a<QUQ\]]^^^r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  rQ  s      r!  r   zIPolys.dup_sub_ground   rR  r$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rQ  s      r!  r   zIPolys.dmp_sub_ground"  rT  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  rQ  s      r!  r   zIPolys.dup_mul_ground$  rR  r$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rQ  s      r!  r   zIPolys.dmp_mul_ground&  rT  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  rQ  s      r!  r   zIPolys.dup_quo_ground(  rR  r$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rQ  s      r!  r   zIPolys.dmp_quo_ground*  rT  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  rQ  s      r!  r   zIPolys.dup_exquo_ground,  s/    /a0@0@!T[QQRRRr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rQ  s      r!  r   zIPolys.dmp_exquo_ground.  :    /a0@0@!TZPQ\SWS^__```r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  r  rE  ns      r!  r   zIPolys.dup_lshift1  .    z$--*:*:At{KKLLLr$  c                 z    |                      t          |                     |          || j                            S r  )rB  r   r=  r'  r_  s      r!  r   zIPolys.dup_rshift3  ra  r$  c                 x    |                      t          |                     |          | j                            S r  )rB  r   r=  r'  r  rE  s     r!  r   zIPolys.dup_abs6  ,    wt}}Q'7'7EEFFFr$  c                     |                      t          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_abs8  4    wt}}Q'7'7At{SSTTTr$  c                 x    |                      t          |                     |          | j                            S r  )rB  r   r=  r'  rd  s     r!  r   zIPolys.dup_neg;  re  r$  c                     |                      t          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_neg=  rg  r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r   r=  r'  r  rE  gs      r!  r   zIPolys.dup_add@  :    wt}}Q'7'7q9I9I4;WWXXXr$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rk  s      r!  r   zIPolys.dmp_addB  E    wt}}Q'7'7q9I9I4:VW<Y]Ydeefffr$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r   r=  r'  rk  s      r!  r   zIPolys.dup_subE  rm  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rk  s      r!  r   zIPolys.dmp_subG  ro  r$  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rB  r   r=  r'  r  rE  rl  hs       r!  r   zIPolys.dup_add_mulJ  K    {4==+;+;T]]1=M=Mt}}]^O_O_aealmmnnnr$  c           	          |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rs  s       r!  r   zIPolys.dmp_add_mulL  W    {4==+;+;T]]1=M=Mt}}]^O_O_aeaklmamosoz{{|||r$  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rB  r   r=  r'  rs  s       r!  r   zIPolys.dup_sub_mulN  ru  r$  c           	          |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r    r=  rA  r'  rs  s       r!  r    zIPolys.dmp_sub_mulP  rw  r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r!   r=  r'  rk  s      r!  r!   zIPolys.dup_mulS  rm  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r"   r=  rA  r'  rk  s      r!  r"   zIPolys.dmp_mulU  ro  r$  c                 x    |                      t          |                     |          | j                            S r  )rB  r#   r=  r'  rd  s     r!  r#   zIPolys.dup_sqrX  re  r$  c                     |                      t          |                     |          | j        dz
  | j                            S r?  )rB  r$   r=  rA  r'  rd  s     r!  r$   zIPolys.dmp_sqrZ  rg  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  r%   r=  r'  r_  s      r!  r%   zIPolys.dup_pow\  s.    wt}}Q'7'7DKHHIIIr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  r&   r=  rA  r'  r_  s      r!  r&   zIPolys.dmp_pow^  s6    wt}}Q'7'7DJqL$+VVWWWr$  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r'   r=  r'  rB  r  rE  rl  qrs        r!  r'   zIPolys.dup_pdiva  sT    a(($--*:*:DKHH1""DOOA$6$677r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r(   r=  r'  rk  s      r!  r(   zIPolys.dup_premd  :    xa(8(8$--:J:JDKXXYYYr$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r)   r=  r'  rk  s      r!  r)   zIPolys.dup_pquof  r  r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r*   r=  r'  rk  s      r!  r*   zIPolys.dup_pexquoh  :    z$--*:*:DMM!<L<LdkZZ[[[r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS r?  )r+   r=  rA  r'  rB  r  s        r!  r+   zIPolys.dmp_pdivk  s\    a(($--*:*:DJqL$+VV1""DOOA$6$677r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r,   r=  rA  r'  rk  s      r!  r,   zIPolys.dmp_premn  E    xa(8(8$--:J:JDJWXLZ^Zeffgggr$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r-   r=  rA  r'  rk  s      r!  r-   zIPolys.dmp_pquop  r  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r.   r=  rA  r'  rk  s      r!  r.   zIPolys.dmp_pexquor  E    z$--*:*:DMM!<L<LdjYZl\`\ghhiiir$  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r/   r=  r'  rB  r  s        r!  r/   zIPolys.dup_rr_divu  T    $--**DMM!,<,<dkJJ1""DOOA$6$677r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS r?  )r0   r=  rA  r'  rB  r  s        r!  r0   zIPolys.dmp_rr_divx  \    $--**DMM!,<,<djlDKXX1""DOOA$6$677r$  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r1   r=  r'  rB  r  s        r!  r1   zIPolys.dup_ff_div{  r  r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS r?  )r2   r=  rA  r'  rB  r  s        r!  r2   zIPolys.dmp_ff_div~  r  r$  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r3   r=  r'  rB  r  s        r!  r3   zIPolys.dup_div  sT    t}}Q''q)9)94;GG1""DOOA$6$677r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r4   r=  r'  rk  s      r!  r4   zIPolys.dup_rem  rm  r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r5   r=  r'  rk  s      r!  r5   zIPolys.dup_quo  rm  r$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  r6   r=  r'  rk  s      r!  r6   zIPolys.dup_exquo  s:    yq)9)94==;K;KT[YYZZZr$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS r?  )r7   r=  rA  r'  rB  r  s        r!  r7   zIPolys.dmp_div  s\    t}}Q''q)9)94:a<UU1""DOOA$6$677r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r8   r=  rA  r'  rk  s      r!  r8   zIPolys.dmp_rem  ro  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r9   r=  rA  r'  rk  s      r!  r9   zIPolys.dmp_quo  ro  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  r:   r=  rA  r'  rk  s      r!  r:   zIPolys.dmp_exquo  sE    yq)9)94==;K;KTZXY\[_[fgghhhr$  c                 R    t          |                     |          | j                  S r  )r;   r=  r'  rd  s     r!  r;   zIPolys.dup_max_norm  s     DMM!,,dk:::r$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r<   r=  rA  r'  rd  s     r!  r<   zIPolys.dmp_max_norm  s(    DMM!,,djlDKHHHr$  c                 R    t          |                     |          | j                  S r  )r=   r=  r'  rd  s     r!  r=   zIPolys.dup_l1_norm  s     4==++T[999r$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r>   r=  rA  r'  rd  s     r!  r>   zIPolys.dmp_l1_norm  s(    4==++TZ\4;GGGr$  c                 R    t          |                     |          | j                  S r  )r?   r=  r'  rd  s     r!  r?   zIPolys.dup_l2_norm_squared       "4==#3#3T[AAAr$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r@   r=  rA  r'  rd  s     r!  r@   zIPolys.dmp_l2_norm_squared  s(    "4==#3#3TZ\4;OOOr$  c           
          |                      t          t          t          | j        |                    | j                            S r  )rB  rA   listmapr=  r'  r  polyss     r!  rA   zIPolys.dup_expand  s4    z$s4=%/H/H*I*I4;WWXXXr$  c           
          |                      t          t          t          | j        |                    | j        dz
  | j                            S r?  )rB  rB   r  r  r=  rA  r'  r  s     r!  rB   zIPolys.dmp_expand  s?    z$s4=%/H/H*I*I4:VW<Y]Ydeefffr$  c                 R    t          |                     |          | j                  S r  )rC   r=  r'  rd  s     r!  rC   zIPolys.dup_LC       dmmA&&444r$  c                     t          |                     |          | j                  }t          |t                    r| dd                              |          S |S r?  )rD   r=  r'  r8  r  rB  )r  rE  LCs      r!  rD   zIPolys.dmp_LC  R    DMM!$$dk22b$ 	8&&r***Ir$  c                 R    t          |                     |          | j                  S r  )rE   r=  r'  rd  s     r!  rE   zIPolys.dup_TC  r  r$  c                     t          |                     |          | j                  }t          |t                    r| dd                              |          S |S r?  )rF   r=  r'  r8  r  rB  )r  rE  TCs      r!  rF   zIPolys.dmp_TC  r  r$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )rG   r=  rA  r'  rd  s     r!  rG   zIPolys.dmp_ground_LC  (    T]]1--tz!|T[IIIr$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )rH   r=  rA  r'  rd  s     r!  rH   zIPolys.dmp_ground_TC  r  r$  c                 F    t          |                     |                    S r  )rI   r=  rd  s     r!  rI   zIPolys.dup_degree  s    $--**+++r$  c                 X    t          |                     |          | j        dz
            S r?  )rJ   r=  rA  rd  s     r!  rJ   zIPolys.dmp_degree  s$    $--**DJqL999r$  c                 Z    t          |                     |          || j        dz
            S r?  )rK   r=  rA  )r  rE  js      r!  rK   zIPolys.dmp_degree_in  s&    T]]1--q$*Q,???r$  c                 z    |                      t          |                     |          || j                            S r  )rB  rM   r=  r'  r  rE  ms      r!  rM   zIPolys.dup_integrate  s.    }T]]1-=-=q$+NNOOOr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  rN   r=  rA  r'  r  s      r!  rN   zIPolys.dmp_integrate  s8    }T]]1-=-=q$*Q,PTP[\\]]]r$  c                 z    |                      t          |                     |          || j                            S r  )rB  rP   r=  r'  r  s      r!  rP   zIPolys.dup_diff  s.    xa(8(8!T[IIJJJr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  rQ   r=  rA  r'  r  s      r!  rQ   zIPolys.dmp_diff  s6    xa(8(8!TZ\4;WWXXXr$  c           	          |                      t          |                     |          ||| j        dz
  | j                            S r?  )rB  rR   r=  rA  r'  r  rE  r  r  s       r!  rR   zIPolys.dmp_diff_in  s:    {4==+;+;Q4:a<QUQ\]]^^^r$  c           	          |                      t          |                     |          ||| j        dz
  | j                            S r?  )rB  rO   r=  rA  r'  r  s       r!  rO   zIPolys.dmp_integrate_in  s<    /a0@0@!Q
STVZVabbcccr$  c                 T    t          |                     |          || j                  S r  )rS   r=  r'  r  rE  as      r!  rS   zIPolys.dup_eval  s"    a((!T[999r$  c                     t          |                     |          || j        dz
  | j                  }| dd                              |          S r?  )rT   r=  rA  r'  rB  )r  rE  r  results       r!  rT   zIPolys.dmp_eval  sE    $--**Atz!|T[IIABBx""6***r$  c                     t          |                     |          ||| j        dz
  | j                  }|                     |                              |          S r?  )rU   r=  rA  r'  r"  rB  )r  rE  r  r  r  s        r!  rU   zIPolys.dmp_eval_in  sI    T]]1--q!TZ\4;OOyy||&&v...r$  c                     t          |                     |          |||| j        dz
  | j                  }|                     |                              |          S r?  )rW   r=  rA  r'  r"  rB  )r  rE  r  r  r  r  s         r!  rW   zIPolys.dmp_diff_eval_in  sK    !$--"2"2Aq!TZ\4;WWyy||&&v...r$  c                     t          |                     |          || j        dz
  | j                  }t	          |t
                    r+| d t          |                                        |          S |S r?  )rV   r=  rA  r'  r8  r  lenrB  )r  rE  Ar  s       r!  rV   zIPolys.dmp_eval_tail  sd    t}}Q//DJqL$+NNfd## 	#a&&>,,V444Mr$  c                 z    |                      t          |                     |          || j                            S r  )rB  rX   r=  r'  r  rE  ps      r!  rX   zIPolys.dup_trunc  .    yq)9)91dkJJKKKr$  c                     |                      t          |                     |          | dd                              |          | j        dz
  | j                            S r?  )rB  rY   r=  rA  r'  rk  s      r!  rY   zIPolys.dmp_trunc  sR    yq)9)948;L;LQ;O;OQUQ[\]Q]_c_jkklllr$  c                     |                      t          |                     |          || j        dz
  | j                            S r?  )rB  rZ   r=  rA  r'  r  s      r!  rZ   zIPolys.dmp_ground_trunc  r]  r$  c                 x    |                      t          |                     |          | j                            S r  )rB  r[   r=  r'  rd  s     r!  r[   zIPolys.dup_monic  s,    yq)9)94;GGHHHr$  c                     |                      t          |                     |          | j        dz
  | j                            S r?  )rB  r\   r=  rA  r'  rd  s     r!  r\   zIPolys.dmp_ground_monic  s7    /a0@0@$*Q,PTP[\\]]]r$  c                     t          |                     |          |                     |          | j                  \  }}}||                     |          |                     |          fS r  )ra   r=  r'  rB  r  rE  rl  rF  FGs         r!  ra   zIPolys.dup_extract  sX    dmmA..a0@0@$+NN1a4??1%%tq'9'9::r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}}||                     |          |                     |          fS r?  )rb   r=  rA  r'  rB  r  s         r!  rb   zIPolys.dmp_ground_extract  sc    $T]]1%5%5t}}Q7G7GTUW[Wbcc1a4??1%%tq'9'9::r$  c                     t          |                     |                              d                                          | j                  \  }}|                     |          |                     |          fS r?  )rc   r;  r"  r=  r'  rB  r  rE  r  r  s       r!  rc   zIPolys.dup_real_imag  s^    TYYq\\..q11::<<dkJJ1""DOOA$6$677r$  c                 x    |                      t          |                     |          | j                            S r  )rB  rd   r=  r'  rd  s     r!  rd   zIPolys.dup_mirror   s,    z$--*:*:DKHHIIIr$  c                 z    |                      t          |                     |          || j                            S r  )rB  re   r=  r'  r  s      r!  re   zIPolys.dup_scale  r  r$  c                 z    |                      t          |                     |          || j                            S r  )rB  rf   r=  r'  r  s      r!  rf   zIPolys.dup_shift  r  r$  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rB  rg   r=  r'  r  s       r!  rg   zIPolys.dup_transform  sN    }T]]1-=-=t}}Q?O?OQUQ^Q^_`QaQacgcnoopppr$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  rh   r=  r'  rk  s      r!  rh   zIPolys.dup_compose	  s:    {4==+;+;T]]1=M=Mt{[[\\\r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  ri   r=  rA  r'  rk  s      r!  ri   zIPolys.dmp_compose  sE    {4==+;+;T]]1=M=MtzZ[|]a]hiijjjr$  c                     t          |                     |          | j                  }t          t	          | j        |                    S r  )rj   r=  r'  r  r  rB  )r  rE  
componentss      r!  rj   zIPolys.dup_decompose  s9    "4==#3#3T[AA
C44555r$  c                     t          |                     |          | j        dz
  | j                  }|                                                     |          S r?  )rk   r=  rA  r'  r+  rB  r  rE  r  s      r!  rk   zIPolys.dmp_lift  sE    $--**DJqL$+FF~~**6222r$  c                 R    t          |                     |          | j                  S r  )rl   r=  r'  rd  s     r!  rl   zIPolys.dup_sign_variations  r  r$  Fc                     t          |                     |          | j        |          \  }}|r.|                     | j                                                  }n| }||                    |          fS )Nconvertr'  )rm   r=  r'  r)  get_ringrB  r  rE  r  rF  r  r9  s         r!  rm   zIPolys.dup_clear_denoms  so    a 0 0$+wOOO1 	::T[%9%9%;%;:<<DDD4??1%%&&r$  c                     t          |                     |          | j        dz
  | j        |          \  }}|r.|                     | j                                                  }n| }||                    |          fS )Nr@  r  r  )rn   r=  rA  r'  r)  r  rB  r  s         r!  rn   zIPolys.dmp_clear_denoms   sx    a 0 0$*Q,U\]]]1 	::T[%9%9%;%;:<<DDD4??1%%&&r$  c                 z    |                      t          |                     |          || j                            S r  )rB  ro   r=  r'  r_  s      r!  ro   zIPolys.dup_revert(  ra  r$  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )rp   r=  r'  rB  r  rE  rl  srt  s        r!  rp   zIPolys.dup_half_gcdex+  sT    dmmA..a0@0@$+NN1""DOOA$6$677r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS r?  )rq   r=  rA  r'  rB  r  s        r!  rq   zIPolys.dmp_half_gcdex.  s^    dmmA..a0@0@$*Q,PTP[\\1""DOOA$6$677r$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )rr   r=  r'  rB  r  rE  rl  r  trt  s         r!  rr   zIPolys.dup_gcdex1  sd    DMM!,,dmmA.>.>LL1a""DOOA$6$68J8JKKr$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )rs   r=  rA  r'  rB  r  s         r!  rs   zIPolys.dmp_gcdex4  sl    DMM!,,dmmA.>.>
1dkZZ1a""DOOA$6$68J8JKKr$  c                     |                      t          |                     |          |                     |          | j                            S r  )rB  rt   r=  r'  rk  s      r!  rt   zIPolys.dup_invert8  r  r$  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S r?  )rB  ru   r=  rA  r'  rk  s      r!  ru   zIPolys.dmp_invert:  r  r$  c                     t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r  )rv   r=  r'  r  r  rB  r  rE  rl  prss       r!  rv   zIPolys.dup_euclidean_prs=  G    a 0 0$--2B2BDKPPC--...r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S r?  )rw   r=  rA  r'  r  r  rB  r  s       r!  rw   zIPolys.dmp_euclidean_prs@  Q    a 0 0$--2B2BDJqLRVR]^^C--...r$  c                     t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r  )rx   r=  r'  r  r  rB  r  s       r!  rx   zIPolys.dup_primitive_prsC  r  r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S r?  )ry   r=  rA  r'  r  r  rB  r  s       r!  ry   zIPolys.dmp_primitive_prsF  r  r$  c                     t          |                     |          |                     |          | j                  \  }}t          t	          | j        |                    |fS r  )rz   r=  r'  r  r  rB  r  rE  rl  r  sress        r!  rz   zIPolys.dup_inner_subresultantsJ  sR    +DMM!,<,<dmmA>N>NPTP[\\	TS#..//66r$  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}t	          t          | j        |                    |fS r?  )r~   r=  rA  r'  r  r  rB  r  s        r!  r~   zIPolys.dmp_inner_subresultantsM  s^    ,T]]1-=-=t}}Q?O?OQUQ[\]Q]_c_jkk	TS#..//66r$  c                     t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r  )r{   r=  r'  r  r  rB  r  s       r!  r{   zIPolys.dup_subresultantsQ  r  r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S r?  )r   r=  rA  r'  r  r  rB  r  s       r!  r   zIPolys.dmp_subresultantsT  r  r$  c                     t          |                     |          |                     |          | j                  \  }}|t          t	          | j        |                    fS r  )r|   r=  r'  r  r  rB  r  rE  rl  resr  s        r!  r|   zIPolys.dup_prs_resultantX  sP    $T]]1%5%5t}}Q7G7GUUST#dos334455r$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}| dd                              |          t          t          | j        |                    fS r?  )r   r=  rA  r'  rB  r  r  r  s        r!  r   zIPolys.dmp_prs_resultant[  sq    $T]]1%5%5t}}Q7G7GTUW[WbccSQRR##C(($s4?C/H/H*I*IJJr$  c                     t          |                     |          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S r?  )r   r=  r1  rA  r'  rB  )r  rE  rl  r  r  s        r!  r   zIPolys.dmp_zz_modular_resultant_  sf    &t}}Q'7'7q9I9I4??[\K]K]_c_ijk_kmqmxyyABBx""3'''r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S r?  )r   r=  rA  r'  rB  r  rE  rl  r  s       r!  r   zIPolys.dmp_zz_collins_resultantb  T    &t}}Q'7'7q9I9I4:VW<Y]YdeeABBx""3'''r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S r?  )r   r=  rA  r'  rB  r  s       r!  r   zIPolys.dmp_qq_collins_resultante  r  r$  c                 z    t          |                     |          |                     |          | j                  S r  )r}   r=  r'  rk  s      r!  r}   zIPolys.dup_resultanti  s.    T]]1--t}}Q/?/?MMMr$  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S r?  )r   r=  rA  r'  r8  r  rB  r  s       r!  r   zIPolys.dmp_resultantk  sh    DMM!,,dmmA.>.>
1dkZZc4   	8&&s+++Jr$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_discriminantr  s     a 0 0$+>>>r$  c                     t          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S r?  )r   r=  rA  r'  r8  r  rB  )r  rE  discs      r!  r   zIPolys.dmp_discriminantt  sZ    a 0 0$*Q,LLdD!! 	8&&t,,,Kr$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r=  r'  rB  r  rE  rl  Hr  r  s         r!  r   zIPolys.dup_rr_prs_gcd{  d     q!1!14==3C3CT[QQ1a""DOOA$6$68J8JKKr$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r=  r'  rB  r  s         r!  r   zIPolys.dup_ff_prs_gcd~  r  r$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )r   r=  rA  r'  rB  r  s         r!  r   zIPolys.dmp_rr_prs_gcd  o     q!1!14==3C3CTZPQ\SWS^__1a""DOOA$6$68J8JKKr$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )r   r=  rA  r'  rB  r  s         r!  r   zIPolys.dmp_ff_prs_gcd  r  r$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r=  r'  rB  r  s         r!  r   zIPolys.dup_zz_heu_gcd  r  r$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )r   r=  rA  r'  rB  r  s         r!  r   zIPolys.dmp_zz_heu_gcd  r  r$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r=  r'  rB  r  s         r!  r   zIPolys.dup_qq_heu_gcd  r  r$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )r   r=  rA  r'  rB  r  s         r!  r   zIPolys.dmp_qq_heu_gcd  r  r$  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r=  r'  rB  r  s         r!  r   zIPolys.dup_inner_gcd  sd    a 0 0$--2B2BDKPP1a""DOOA$6$68J8JKKr$  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS r?  )r   r=  rA  r'  rB  r  s         r!  r   zIPolys.dmp_inner_gcd  sn    a 0 0$--2B2BDJqLRVR]^^1a""DOOA$6$68J8JKKr$  c                     t          |                     |          |                     |          | j                  }|                     |          S r  )r   r=  r'  rB  r  rE  rl  r  s       r!  r   zIPolys.dup_gcd  ?    DMM!$$dmmA&6&6DDq!!!r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S r?  )r   r=  rA  r'  rB  r#  s       r!  r   zIPolys.dmp_gcd  G    DMM!$$dmmA&6&6
1dkRRq!!!r$  c                     t          |                     |          |                     |          | j                  }|                     |          S r  )r   r=  r'  rB  r#  s       r!  r   zIPolys.dup_rr_lcm  ?    t}}Q''q)9)94;GGq!!!r$  c                     t          |                     |          |                     |          | j                  }|                     |          S r  )r   r=  r'  rB  r#  s       r!  r   zIPolys.dup_ff_lcm  r(  r$  c                     t          |                     |          |                     |          | j                  }|                     |          S r  )r   r=  r'  rB  r#  s       r!  r   zIPolys.dup_lcm  r$  r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S r?  )r   r=  rA  r'  rB  r#  s       r!  r   zIPolys.dmp_rr_lcm  G    t}}Q''q)9)94:a<UUq!!!r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S r?  )r   r=  rA  r'  rB  r#  s       r!  r   zIPolys.dmp_ff_lcm  r,  r$  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S r?  )r   r=  rA  r'  rB  r#  s       r!  r   zIPolys.dmp_lcm  r&  r$  c                 V    t          |                     |          | j                  }|S r  )r]   r=  r'  r  rE  conts      r!  r]   zIPolys.dup_content  s$    4==++T[99r$  c                     t          |                     |          | j                  \  }}||                     |          fS r  )r_   r=  r'  rB  r  rE  r1  prims       r!  r_   zIPolys.dup_primitive  s:    "4==#3#3T[AA
dT__T****r$  c                     t          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S r?  )r   r=  rA  r'  r8  r  rB  r0  s      r!  r   zIPolys.dmp_content  sZ    4==++TZ\4;GGdD!! 	8&&t,,,Kr$  c                 &   t          |                     |          | j        dz
  | j                  \  }}t	          |t
                    r2| dd                              |          |                     |          fS ||                     |          fS r?  )r   r=  rA  r'  r8  r  rB  r3  s       r!  r   zIPolys.dmp_primitive  s    "4==#3#3TZ\4;OO
ddD!! 	1H''--tt/D/DEE$//$//00r$  c                 h    t          |                     |          | j        dz
  | j                  }|S r?  )r^   r=  rA  r'  r0  s      r!  r^   zIPolys.dmp_ground_content  s,    !$--"2"2DJqL$+NNr$  c                     t          |                     |          | j        dz
  | j                  \  }}||                     |          fS r?  )r`   r=  rA  r'  rB  r3  s       r!  r`   zIPolys.dmp_ground_primitive  sB    )$--*:*:DJqL$+VV
ddood++,,r$  Tc                 F   t          |                     |          |                     |          | j        |          }|s3|\  }}}}|||                     |          |                     |          fS |\  }}|                     |          |                     |          fS )Ninclude)r   r=  r'  rB  	r  rE  rl  r;  r  cfcgr  r  s	            r!  r   zIPolys.dup_cancel  s    DMM!,,dmmA.>.>U\]]] 	<!LBAqDOOA..0B0BCCDAqOOA&&(:(:;;r$  c                 X   t          |                     |          |                     |          | j        dz
  | j        |          }|s3|\  }}}}|||                     |          |                     |          fS |\  }}|                     |          |                     |          fS )Nr@  r:  )r   r=  rA  r'  rB  r<  s	            r!  r   zIPolys.dmp_cancel  s    DMM!,,dmmA.>.>
1dkcjkkk 	<!LBAqDOOA..0B0BCCDAqOOA&&(:(:;;r$  c           	           t                               |          t          t           j        |                     j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  rB  .0rl  kr  s      r!  
<listcomp>z-IPolys.dup_trial_division.<locals>.<listcomp>  .    >>>TQ$//!$$a(>>>r$  )r   r=  r  r  r'  r  rE  factorss   `  r!  r   zIPolys.dup_trial_division  sR    $T]]1%5%5tCw<W<W7X7XZ^Zeff>>>>W>>>>r$  c           	           t                               |          t          t           j        |                     j        dz
   j                  } fd|D             S )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z-IPolys.dmp_trial_division.<locals>.<listcomp>  rG  r$  )r   r=  r  r  rA  r'  rH  s   `  r!  r   zIPolys.dmp_trial_division  s^    $T]]1%5%5tCw<W<W7X7XZ^ZdefZfhlhstt>>>>W>>>>r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_zz_mignotte_bound  s     $T]]1%5%5t{CCCr$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_zz_mignotte_bound  s(    $T]]1%5%5tz!|T[QQQr$  c           
      L   | j         }t          | ||           ||           ||           ||           ||          | j                  \  }}	}
}|                     |          |                     |	          |                     |
          |                     |          fS r  )r=  r   r'  rB  )r  r  rE  rl  rt  r  r  Dr  r  STs               r!  r   zIPolys.dup_zz_hensel_step  s    M'11Q441qqttQQqTT11Q44UU
1a""DOOA$6$68J8JDOO\]L^L^__r$  c           
          | j         }t          | ||          t          t          ||                    || j                  }t          t          | j        |                    S r  )r=  r   r  r  r'  rB  )r  r  rE  f_listlrO  r  s          r!  r   zIPolys.dup_zz_hensel_lift  sR    M"1aaddDQ,@,@!T[QQC//000r$  c                 p     t                               |           j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z,IPolys.dup_zz_zassenhaus.<locals>.<listcomp>  rG  r$  )r   r=  r'  rH  s   `  r!  r   zIPolys.dup_zz_zassenhaus  s:    #DMM!$4$4dkBB>>>>W>>>>r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_zz_irreducible_p       #DMM!$4$4dkBBBr$  c                 V    t          |                     |          | j        |          S )N)irreducible)r   r=  r'  )r  rE  rZ  s      r!  r   zIPolys.dup_cyclotomic_p  s%    a 0 0$+;WWWWr$  c                 V    t          || j                  }|                     |          S r  )r   r'  rB  )r  r`  r  s      r!  r   zIPolys.dup_zz_cyclotomic_poly  s%    "1dk22q!!!r$  c                     t          |                     |          | j                  }||S t          t	          | j        |                    S r  )r   r=  r'  r  r  rB  r  s      r!  r   zIPolys.dup_zz_cyclotomic_factor  sF    )$--*:*:DKHH 	6MDOV44555r$  c                 0    t          |||| j                  S r  )r   r'  )r  Ecscts       r!  r   zIPolys.dmp_zz_wang_non_divisors  s    '2r4;???r$  c           
        
 | dd          

fd|D             }| d d         }t          t          |j        |                    }t          |                     |          |||||| j        dz
  | j                  \  }}}	|                     |          t          t          |j        |                    t          t          
j        |	                    fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  )r=  )rD  r  rE  mvs      r!  rF  z2IPolys.dmp_zz_wang_lead_coeffs.<locals>.<listcomp>  s,    111dar{{1~~q!111r$  )r  r  r=  r   rA  r'  rB  )r  rE  rQ  r_  r^  r  r  uvHHCCrc  s             @r!  r   zIPolys.dmp_zz_wang_lead_coeffs  s    !""X1111a111"1"XR[!$$%%+DMM!,<,<aQ1djYZl\`\ghh	2rq!!4BM2(>(>#?#?c"-Y[F\F\A]A]]]r$  c                     t          t          t          | j        |                    ||| j                  }t          t          | j        |                    S r  )r   r  r  r=  r'  rB  )r  r  r  r  r  s        r!  r   zIPolys.dup_zz_diophantine  sE    #DT]A)>)>$?$?At{SSC00111r$  c           	          t          t          t          | j        |                    |                     |          |||| j        dz
  | j                  }t          t          | j        |                    S r?  )r   r  r  r=  rA  r'  rB  )r  r  rF  r  r3  r  r  s          r!  r   zIPolys.dmp_zz_diophantine  sf    #DT]A)>)>$?$?qAQAQSTVWYZ\`\fgh\hjnjuvvC00111r$  c           	      `   | d d         }| dd          }t          t          |j        |                    }t          t          |j        |                    }t          |                     |          ||||| j        dz
  | j                  }t          t          | j        |                    S r?  )r  r  r=  r   rA  r'  rB  )	r  rE  r  r  r  r  rd  rc  r  s	            r!  r   z!IPolys.dmp_zz_wang_hensel_lifting!  s    "1"X!""XR[!$$%%#bk2&&''+DMM!,<,<aQ4:VW<Y]YdeeC00111r$  c                      t                               |           j        dz
   j        ||          } fd|D             S )Nr@  )modseedc                 :    g | ]}                     |          S r  rB  rD  rl  r  s     r!  rF  z&IPolys.dmp_zz_wang.<locals>.<listcomp>+  s%    666##666r$  )r   r=  rA  r'  )r  rE  rk  rl  rI  s   `    r!  r   zIPolys.dmp_zz_wang)  sJ    dmmA..
1dksY]^^^6666W6666r$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 :    g | ]}                     |          S r  rB  rn  s     r!  rF  z,IPolys.dup_zz_factor_sqf.<locals>.<listcomp>/  s%    >>>++>>>r$  )r   r=  r'  r  rE  coeffrI  s   `   r!  r   zIPolys.dup_zz_factor_sqf-  sD    *4==+;+;T[IIw>>>>W>>>??r$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z(IPolys.dup_zz_factor.<locals>.<listcomp>3  .    FFFTQ$//!,,a0FFFr$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_zz_factor1  D    &t}}Q'7'7EEwFFFFWFFFGGr$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z(IPolys.dmp_zz_factor.<locals>.<listcomp>6  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_zz_factor4  L    &t}}Q'7'7At{SSwFFFFWFFFGGr$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dup_qq_i_factor.<locals>.<listcomp>:  ru  r$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_qq_i_factor8  D    (q)9)94;GGwFFFFWFFFGGr$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dmp_qq_i_factor.<locals>.<listcomp>=  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_qq_i_factor;  L    (q)9)94:a<UUwFFFFWFFFGGr$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dup_zz_i_factor.<locals>.<listcomp>A  ru  r$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_zz_i_factor?  r|  r$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dmp_zz_i_factor.<locals>.<listcomp>D  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_zz_i_factorB  r  r$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z)IPolys.dup_ext_factor.<locals>.<listcomp>H  ru  r$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_ext_factorF  sD    'a(8(8$+FFwFFFFWFFFGGr$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z)IPolys.dmp_ext_factor.<locals>.<listcomp>K  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_ext_factorI  sL    'a(8(8$*Q,TTwFFFFWFFFGGr$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z(IPolys.dup_gf_factor.<locals>.<listcomp>O  ru  r$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_gf_factorM  rv  r$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z(IPolys.dmp_gf_factor.<locals>.<listcomp>R  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_gf_factorP  ry  r$  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dup_factor_list.<locals>.<listcomp>V  ru  r$  )r   r=  r'  rq  s   `   r!  r   zIPolys.dup_factor_listT  r|  r$  c                 p     t                               |           j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z2IPolys.dup_factor_list_include.<locals>.<listcomp>Y  rG  r$  )r   r=  r'  rH  s   `  r!  r   zIPolys.dup_factor_list_includeW  s:    )$--*:*:DKHH>>>>W>>>>r$  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dmp_factor_list.<locals>.<listcomp>]  ru  r$  )r   r=  rA  r'  rq  s   `   r!  r   zIPolys.dmp_factor_list[  r  r$  c                      t                               |           j        dz
   j                  } fd|D             S )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z2IPolys.dmp_factor_list_include.<locals>.<listcomp>`  rG  r$  )r   r=  rA  r'  rH  s   `  r!  r   zIPolys.dmp_factor_list_include^  sB    )$--*:*:DJqL$+VV>>>>W>>>>r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_irreducible_pb  s      q!1!14;???r$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_irreducible_pd  s(     q!1!14:a<MMMr$  c                     t          |                     |          | j                  }t          t	          | j        |                    S r  )r   r=  r'  r  r  rB  )r  rE  seqs      r!  r   zIPolys.dup_sturmg  s9    a(($+66C--...r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_sqf_pk  s     q))4;777r$  c                 d    t          |                     |          | j        dz
  | j                  S r?  )r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_sqf_pm  s(    q))4:a<EEEr$  c                     t          |                     |          | j                  \  }}}||                     |          |                                                     |          fS r  )r   r=  r'  rB  r+  r  rE  r  r  Rs        r!  r   zIPolys.dup_sqf_normp  sV    t}}Q//==1a4??1%%t~~'7'7'B'B1'E'EFFr$  c                     t          |                     |          | j        dz
  | j                  \  }}}||                     |          |                                                     |          fS r?  )r   r=  rA  r'  rB  r+  r  s        r!  r   zIPolys.dmp_sqf_norms  s^    t}}Q//At{KK1a4??1%%t~~'7'7'B'B1'E'EFFr$  c                 x    |                      t          |                     |          | j                            S r  )rB  r   r=  r'  rd  s     r!  r   zIPolys.dup_gf_sqf_partw  ,    t}}Q/?/?MMNNNr$  c                 x    |                      t          |                     |          | j                            S r  )rB  r   r=  r'  rd  s     r!  r   zIPolys.dmp_gf_sqf_party  r  r$  c                 x    |                      t          |                     |          | j                            S r  )rB  r   r=  r'  rd  s     r!  r   zIPolys.dup_sqf_part{  s,    |DMM!,<,<dkJJKKKr$  c                     |                      t          |                     |          | j        dz
  | j                            S r?  )rB  r   r=  rA  r'  rd  s     r!  r   zIPolys.dmp_sqf_part}  s4    |DMM!,<,<djlDKXXYYYr$  c                 ~     t                               |           j        |          \  }}| fd|D             fS )Nallc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dup_gf_sqf_list.<locals>.<listcomp>  ru  r$  )r   r=  r'  r  rE  r  rr  rI  s   `    r!  r   zIPolys.dup_gf_sqf_list  sI    (q)9)94;CPPPwFFFFWFFFGGr$  c                      t                               |           j        dz
   j        |          \  }}| fd|D             fS )Nr@  r  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z*IPolys.dmp_gf_sqf_list.<locals>.<listcomp>  ru  r$  )r   r=  rA  r'  r  s   `    r!  r   zIPolys.dmp_gf_sqf_list  sR    (q)9)94:a<Z]^^^wFFFFWFFFGGr$  c                 ~     t                               |           j        |          \  }}| fd|D             fS )Nr  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z'IPolys.dup_sqf_list.<locals>.<listcomp>  ru  r$  )r   r=  r'  r  s   `    r!  r   zIPolys.dup_sqf_list  sI    %dmmA&6&6MMMwFFFFWFFFGGr$  c                 t     t                               |           j        |          } fd|D             S )Nr  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z/IPolys.dup_sqf_list_include.<locals>.<listcomp>  rG  r$  )r   r=  r'  r  rE  r  rI  s   `   r!  r   zIPolys.dup_sqf_list_include  s?    &t}}Q'7'7#NNN>>>>W>>>>r$  c                      t                               |           j        dz
   j        |          \  }}| fd|D             fS )Nr@  r  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z'IPolys.dmp_sqf_list.<locals>.<listcomp>  ru  r$  )r   r=  rA  r'  r  s   `    r!  r   zIPolys.dmp_sqf_list  sR    %dmmA&6&6
1dkWZ[[[wFFFFWFFFGGr$  c                      t                               |           j        dz
   j        |          } fd|D             S )Nr@  r  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z/IPolys.dmp_sqf_list_include.<locals>.<listcomp>  rG  r$  )r   r=  rA  r'  r  s   `   r!  r   zIPolys.dmp_sqf_list_include  sH    &t}}Q'7'7At{X[\\\>>>>W>>>>r$  c                 p     t                               |           j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z'IPolys.dup_gff_list.<locals>.<listcomp>  rG  r$  )r   r=  r'  rH  s   `  r!  r   zIPolys.dup_gff_list  s:    t}}Q//==>>>>W>>>>r$  c                      t                               |           j        dz
   j                  } fd|D             S )Nr@  c                 D    g | ]\  }}                     |          |fS r  rB  rC  s      r!  rF  z'IPolys.dmp_gff_list.<locals>.<listcomp>  rG  r$  )r   r=  rA  r'  rH  s   `  r!  r   zIPolys.dmp_gff_list  sB    t}}Q//At{KK>>>>W>>>>r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_root_upper_bound  rX  r$  c                 R    t          |                     |          | j                  S r  )r   r=  r'  rd  s     r!  r   zIPolys.dup_root_lower_bound  rX  r$  c                 X    t          |                     |          || j        |          S )N)fast)r   r=  r'  )r  rE  Mr  s       r!  r   z IPolys.dup_step_refine_real_root  s(    (q)9)91dkPTUUUUr$  c           
      `    t          |                     |          || j        |||||          S )N)epsstepsdisjointr  mobius)r   r=  r'  )r  rE  r  r  r  r  r  r  s           r!  r   z!IPolys.dup_inner_refine_real_root  sD    )$--*:*:At{PS[`ksz~  HN  O  O  O  	Or$  c           
      `    t          |                     |          ||| j        ||||          S N)r  r  r  r  )r   r=  r'  r  rE  r  r  r  r  r  r  s           r!  r   z!IPolys.dup_outer_refine_real_root  sC    )$--*:*:Aq$+SV^cnv  ~B  C  C  C  	Cr$  c           
      `    t          |                     |          ||| j        ||||          S r  )r   r=  r'  r  s           r!  r   zIPolys.dup_refine_real_root  s2    #DMM!$4$4aDKSX]hpw{||||r$  c                 X    t          |                     |          | j        ||          S )N)r  r  )r   r=  r'  )r  rE  r  r  s       r!  r   z#IPolys.dup_inner_isolate_real_roots  s(    +DMM!,<,<dksY]^^^^r$  c           	      ^    t          |                     |          | j        |||||          S )N)r  infsupr  r  )r   r=  r'  )r  rE  r  r  r  r  r  s          r!  r   z'IPolys.dup_inner_isolate_positive_roots  B    /a0@0@$+SV\_ehos  }C  D  D  D  	Dr$  c           	      ^    t          |                     |          | j        |||||          S )N)r  r  r  r  r  )r   r=  r'  )r  rE  r  r  r  r  r  s          r!  r   z'IPolys.dup_inner_isolate_negative_roots  r  r$  c           	      ^    t          |                     |          | j        |||||          S N)r  r  r  r  blackbox)r   r=  r'  r  rE  r  r  r  r  r  s          r!  r   z!IPolys.dup_isolate_real_roots_sqf  sA    )$--*:*:DKSVY_bim  yA  B  B  B  	Br$  c           	      ^    t          |                     |          | j        |||||          S )N)r  r  r  basisr  )r   r=  r'  )r  rE  r  r  r  r  r  s          r!  r   zIPolys.dup_isolate_real_roots  s1    %dmmA&6&6RU[^fkrvwwwwr$  c           
      z    t          t          t          | j        |                    | j        ||||||          S )N)r  r  r  strictr  r  )r   r  r  r=  r'  )r  r  r  r  r  r  r  r  s           r!  r   z"IPolys.dup_isolate_real_roots_list  sU    *4DM50I0I+J+JDK]`fior  |B  JO  VZ  [  [  [  	[r$  c                 X    t          |                     |          | j        ||          S )N)r  r  )r   r=  r'  )r  rE  r  r  s       r!  r   zIPolys.dup_count_real_roots  s(    #DMM!$4$4dksPSTTTTr$  c                 Z    t          |                     |          | j        |||          S )N)r  r  exclude)r   r=  r'  )r  rE  r  r  r  s        r!  r   zIPolys.dup_count_complex_roots  s+    &t}}Q'7'7#SV`ghhhhr$  c                 \    t          |                     |          | j        ||||          S )N)r  r  r  r  )r   r=  r'  )r  rE  r  r  r  r  s         r!  r   z$IPolys.dup_isolate_complex_roots_sqf  s/    ,T]]1-=-=t{PSY\bepxyyyyr$  c           	      ^    t          |                     |          | j        |||||          S r  )r   r=  r'  r  s          r!  r   z IPolys.dup_isolate_all_roots_sqf  s=    (q)9)94;CUX^ahlw  A  A  A  	Ar$  c                 \    t          |                     |          | j        ||||          S )N)r  r  r  r  )r   r=  r'  )r  rE  r  r  r  r  s         r!  r   zIPolys.dup_isolate_all_roots  s.    $T]]1%5%5t{QTZ]dhiiiir$  c           	          ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_1r@  )sympy.polys.specialpolysr  tupler  rB  rA  r'  )r  r  s     r!  fateman_poly_F_1zIPolys.fateman_poly_F_1  D    AAAAAAS*>*>tz!|T[*Y*YZZ[[[r$  c           	          ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_2r@  )r  r  r  r  rB  rA  r'  )r  r  s     r!  fateman_poly_F_2zIPolys.fateman_poly_F_2  r  r$  c           	          ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_3r@  )r  r  r  r  rB  rA  r'  )r  r  s     r!  fateman_poly_F_3zIPolys.fateman_poly_F_3  r  r$  c                      t           fd                     |                                          D                       S )Nc                 Z    g | ]'}j         j                            |j                   (S r  )r'  domr  )rD  rF  r  s     r!  rF  z&IPolys.to_gf_dense.<locals>.<listcomp>  s/    jjja$+/11!T[AAjjjr$  )r   r;  r=  r-  s   ` r!  to_gf_densezIPolys.to_gf_dense  s?    jjjj499U\K]K]KfKfKhKhjjjkkkr$  c                 n    |                      t          || j        dz
  | j        j                            S r?  )r4  rL   rA  r'  r  r-  s     r!  from_gf_densezIPolys.from_gf_dense  s*    ~~k'4:a<QQRRRr$  c                 F    t          |                     |                    S r  )r   r  rd  s     r!  r   zIPolys.gf_degree  s    ))!,,---r$  c                 \    t          |                     |          | j        j                  S r  )r   r  r'  r  rd  s     r!  r   zIPolys.gf_LC  $    T%%a(($+/:::r$  c                 \    t          |                     |          | j        j                  S r  )r   r  r'  r  rd  s     r!  r   zIPolys.gf_TC  r  r$  c                 l    |                      t          |                     |                              S r  )r  r   r  rd  s     r!  r   zIPolys.gf_strip  s,    !!(4+;+;A+>+>"?"?@@@r$  c                     |                      t          |                     |          | j        j                            S r  )r  r   r  r'  rk  rd  s     r!  gf_trunczIPolys.gf_trunc  s2    !!(4+;+;A+>+>"P"PQQQr$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rd  s     r!  	gf_normalzIPolys.gf_normal  ;    !!(4+;+;A+>+>QUQ\Q`"a"abbbr$  c                 r    |                      t          || j        j        | j        j                            S r  )r  r   r'  rk  r  rd  s     r!  r   zIPolys.gf_from_dict  s*    !!,q$+/4;?"S"STTTr$  c                 `    t          |                     |          | j        j        |          S N)	symmetric)r   r  r'  rk  r  rE  r  s      r!  r   zIPolys.gf_to_dict  s)    $**1--t{)TTTTr$  c                 \    |                      t          || j        j                            S r  )r  r   r'  rk  rd  s     r!  r   zIPolys.gf_from_int_poly  s%    !!"21dko"F"FGGGr$  c                 `    t          |                     |          | j        j        |          S r  )r   r  r'  rk  r  s      r!  r   zIPolys.gf_to_int_poly  s)    d..q114;?iXXXXr$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rd  s     r!  r   zIPolys.gf_neg  8    !!&)9)9!)<)<dkot{"_"_```r$  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r'  rk  r  r  s      r!  r   zIPolys.gf_add_ground  =    !!-0@0@0C0CQY]YdYh"i"ijjjr$  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r'  rk  r  r  s      r!  r   zIPolys.gf_sub_ground  r  r$  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r'  rk  r  r  s      r!  r   zIPolys.gf_mul_ground  r  r$  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r'  rk  r  r  s      r!  r   zIPolys.gf_quo_ground  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_add  N    !!&)9)9!)<)<d>N>Nq>Q>QSWS^Sbdhdods"t"tuuur$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_sub  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_mul  r  r$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rd  s     r!  r   zIPolys.gf_sqr  r  r$  c           	          |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rs  s       r!  r   zIPolys.gf_add_mul  |    !!*T-=-=a-@-@$BRBRSTBUBUW[WgWghiWjWjlplwl{  ~B  ~I  ~M  #N  #N  O  O  	Or$  c           	          |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rs  s       r!  r   zIPolys.gf_sub_mul  r	  r$  c           
          |                      t          t          t          | j        |                    | j        j        | j        j                            S r  )r  r   r  r  r  r'  rk  r  )r  r  s     r!  r   zIPolys.gf_expand  sB    !!)DT5Eq1I1I,J,JDKO]a]h]l"m"mnnnr$  c                     t          |                     |          |                     |          | j        j        | j        j                  \  }}|                     |          |                     |          fS r  )r   r  r'  rk  r  r  r  s        r!  r   zIPolys.gf_div  sg    d&&q))4+;+;A+>+>QUQ\Q`aa1!!!$$d&8&8&;&;;;r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_rem  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_quo
  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_exquo  O    !!(4+;+;A+>+>@P@PQR@S@SUYU`Udfjfqfu"v"vwwwr$  c                     |                      t          |                     |          || j        j                            S r  )r  r   r  r'  r  r_  s      r!  r   zIPolys.gf_lshift  4    !!)D,<,<Q,?,?DKO"T"TUUUr$  c                     |                      t          |                     |          || j        j                            S r  )r  r   r  r'  r  r_  s      r!  r   zIPolys.gf_rshift  r  r$  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r'  rk  r  r_  s      r!  r   zIPolys.gf_pow  s=    !!&)9)9!)<)<aRVR]Ra"b"bcccr$  c           	          |                      t          |                     |          ||                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  )r  rE  r`  rl  s       r!  r   zIPolys.gf_pow_mod  sQ    !!*T-=-=a-@-@!TEUEUVWEXEXZ^ZeZikokvkz"{"{|||r$  c                    t          |                     |          |                     |          | j        j        | j        j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r  r'  rk  r  r  )r  rE  rl  rt  cffcfgs         r!  r   zIPolys.gf_cofactors  sz    "4#3#3A#6#68H8H8K8KT[_^b^i^mnn3!!!$$d&8&8&=&=t?Q?QRU?V?VVVr$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_gcd  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_lcm  r  r$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r'  rk  r  rk  s      r!  r   zIPolys.gf_gcdex   r  r$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_monic#  r  r$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_diff%  s;    !!'$*:*:1*=*=t{PTP[P_"`"`aaar$  c                 t    t          |                     |          || j        j        | j        j                  S r  )r  r  r'  rk  r  r  s      r!  r  zIPolys.gf_eval(  s,    t''**At{PPPr$  c                 t    t          |                     |          || j        j        | j        j                  S r  )r  r  r'  rk  r  )r  rE  r  s      r!  r  zIPolys.gf_multi_eval*  s,    T--a00!T[_dkoVVVr$  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r  r  r'  rk  r  rk  s      r!  r  zIPolys.gf_compose-  sO    !!*T-=-=a-@-@$BRBRSTBUBUW[WbWfhlhshw"x"xyyyr$  c           	          |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r  )r  r  r  r'  rk  r  )r  rl  rt  rE  s       r!  r  zIPolys.gf_compose_mod/  s|    !!.1A1A!1D1DdFVFVWXFYFY[_[k[klm[n[nptp{p  BF  BM  BQ  #R  #R  S  S  	Sr$  c           	      V   |                      |          }|                      |          }|                      |          }|                      |          }t          |||||| j        j        | j        j                  \  }}|                     |          |                     |          fS r  )r  r  r'  rk  r  r  )r  r  brF  r`  rE  UVs           r!  r  zIPolys.gf_trace_map2  s    QQQQAq!Q4;?DKOLL1!!!$$d&8&8&;&;;;r$  c                 r    |                      t          || j        j        | j        j                            S r  )r  r  r'  rk  r  r  r`  s     r!  r  zIPolys.gf_random:  s*    !!)At{"P"PQQQr$  c                 r    |                      t          || j        j        | j        j                            S r  )r  r	  r'  rk  r  r'  s     r!  r	  zIPolys.gf_irreducible<  s*    !!.DKOT[_"U"UVVVr$  c                 r    t          |                     |          | j        j        | j        j                  S r  )r
  r  r'  rk  r  rd  s     r!  r
  zIPolys.gf_irred_p_ben_or?  s*     !1!1!!4!4dkot{WWWr$  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_irred_p_rabinA  *     0 0 3 3T[_dkoVVVr$  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_irreducible_pC  r+  r$  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_sqf_pE  s*    ((++T[_dkoNNNr$  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_sqf_partH  s;    !!+d.>.>q.A.A4;?TXT_Tc"d"deeer$  c                      t                               |           j        j         j        j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  r  rC  s      r!  rF  z&IPolys.gf_sqf_list.<locals>.<listcomp>L  0    HHHtq!++A..2HHHr$  )r  r  r'  rk  r  r  s   `    r!  gf_sqf_listzIPolys.gf_sqf_listJ  sN    $T%5%5a%8%8$+/4;?[[wHHHHwHHHHHr$  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r'  rk  r  rd  s     r!  r  zIPolys.gf_QmatrixN  s*    $**1--t{PPPr$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z'IPolys.gf_berlekamp.<locals>.<listcomp>R  '    9991##A&&999r$  )r  r  r'  rk  r  rH  s   `  r!  r  zIPolys.gf_berlekampP  D    t//22DKOT[_UU99999999r$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  r1  rC  s      r!  rF  z,IPolys.gf_ddf_zassenhaus.<locals>.<listcomp>V  0    AAA1$$$Q''+AAAr$  )r  r  r'  rk  r  rH  s   `  r!  r  zIPolys.gf_ddf_zassenhausT  sD    #D$4$4Q$7$7$+/ZZAAAAAAAAr$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z,IPolys.gf_edf_zassenhaus.<locals>.<listcomp>Y  r7  r$  )r  r  r'  rk  r  r  rE  r`  rI  s   `   r!  r  zIPolys.gf_edf_zassenhausW  sD    #D$4$4Q$7$7$+/ZZ99999999r$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r  r1  rC  s      r!  rF  z'IPolys.gf_ddf_shoup.<locals>.<listcomp>]  r;  r$  )r  r  r'  rk  r  rH  s   `  r!  r  zIPolys.gf_ddf_shoup[  sD    t//22DKOT[_UUAAAAAAAAr$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z'IPolys.gf_edf_shoup.<locals>.<listcomp>`  r7  r$  )r  r  r'  rk  r  r>  s   `   r!  r  zIPolys.gf_edf_shoup^  r8  r$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z(IPolys.gf_zassenhaus.<locals>.<listcomp>d  r7  r$  )r  r  r'  rk  r  rH  s   `  r!  r  zIPolys.gf_zassenhausb  sD     0 0 3 3T[_dkoVV99999999r$  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z#IPolys.gf_shoup.<locals>.<listcomp>g  r7  r$  )r  r  r'  rk  r  rH  s   `  r!  r  zIPolys.gf_shoupe  sD    4++A..QQ99999999r$  c                      t                               |           j        j         j        j        |          \  }}| fd|D             fS )N)methodc                 :    g | ]}                     |          S r  r1  rn  s     r!  rF  z(IPolys.gf_factor_sqf.<locals>.<listcomp>k  s'    @@@!**1--@@@r$  )r  r  r'  rk  r  )r  rE  rH  rr  rI  s   `    r!  r  zIPolys.gf_factor_sqfi  sT    &t'7'7':':DKOT[_eklllw@@@@w@@@@@r$  c                      t                               |           j        j         j        j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r  r1  rC  s      r!  rF  z$IPolys.gf_factor.<locals>.<listcomp>n  r2  r$  )r  r  r'  rk  r  rq  s   `   r!  r  zIPolys.gf_factorl  sN    "4#3#3A#6#6YYwHHHHwHHHHHr$  )NNN)F)T)NN)NNNFF)NNNF)NF)NNNFFFr  (.  __name__
__module____qualname__r&  rA  r'  r(  gensr"  r)  r+  r/  r1  r4  r;  r=  rB  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,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rM   rN   rP   rQ   rR   rO   rS   rT   rU   rW   rV   rX   rY   rZ   r[   r\   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   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   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   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   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  r3  r  r  r  r  r  r  r  r  r  r  r  r$  r!  r  r     sp       GEFED             , , ,- - -O O OR R R~ ~ ~R R R~ ~ ~R R R~ ~ ~Q Q Q_ _ _Q Q Q_ _ _Q Q Q_ _ _Q Q Q_ _ _S S Sa a aM M MM M MG G GU U UG G GU U UY Y Yg g gY Y Yg g go o o} } }o o o} } }Y Y Yg g gG G GU U UJ J JX X X8 8 8Z Z ZZ Z Z\ \ \8 8 8h h hh h hj j j8 8 88 8 88 8 88 8 88 8 8Y Y YY Y Y[ [ [8 8 8g g gg g gi i i; ; ;I I I: : :H H HB B BP P PY Y Yg g g5 5 5  5 5 5  J J JJ J J, , ,: : :@ @ @P P P^ ^ ^K K KY Y Y_ _ _d d d: : :+ + +/ / // / /  L L Lm m ma a aI I I^ ^ ^; ; ;; ; ;8 8 8J J JL L LL L Lq q q] ] ]k k k6 6 63 3 3B B B' ' ' '' ' ' 'M M M8 8 88 8 8L L LL L L\ \ \j j j/ / // / // / // / /7 7 77 7 7/ / // / /6 6 6K K K( ( (( ( (( ( (N N N  ? ? ?  L L LL L LL L LL L LL L LL L LL L LL L LL L LL L L" " "" " "" " "" " "" " "" " "" " "" " "  + + +  1 1 1  - - -< < < << < < <? ? ?? ? ?D D DR R R` ` `1 1 1
? ? ?C C CX X X X" " "6 6 6@ @ @^ ^ ^2 2 2
2 2 2
2 2 27 7 7 7@ @ @H H HH H HH H HH H HH H HH H HH H HH H HH H HH H HH H H? ? ?H H H? ? ?@ @ @N N N/ / /8 8 8F F FG G GG G GO O OO O OL L LZ Z ZH H H HH H H HH H H H? ? ? ?H H H H? ? ? ?? ? ?? ? ?C C CC C CV V V VO O O OC C C C} } } }_ _ _ _D D D DD D D DB B B Bx x x x[ [ [ [U U U Ui i i iz z z zA A A Aj j j j\ \ \\ \ \\ \ \l l lS S S. . .; ; ;; ; ;A A AR R Rc c cU U UU U U UH H HY Y Y Ya a ak k kk k kk k kk k kv v vv v vv v va a aO O OO O Oo o o< < <v v vv v vx x xV V VV V Vd d d} } }W W Wv v vv v vx x xc c cb b bQ Q QW W Wz z zS S S< < <R R RW W WX X XW W WW W WO O Of f fI I I IQ Q Q: : :B B B: : :B B B: : :: : :: : :A A A AI I I I Ir$  r  N("  __doc__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-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   sympy.polys.densebasicrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   sympy.polys.densetoolsrM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   sympy.polys.euclidtoolsrp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   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.factortoolsr   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.rootisolationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.polys.sqfreetoolsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.polys.galoistoolsr   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  r  r  r  r  r  r  r  r  r  r  r  r  r  sympy.utilitiesr  r  r  r$  r!  <module>rZ     s	   > > 0 / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 - - - - - - - - - - - - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * * * * * * * * * * * * * * * * * * , , , , , , * * * * * * * * * * * * * * * * * * , , , , , , / / / / / / / / / / / / . . . . . . . . . . . . 6 6 6 6 6 6 6 6 6 6 6 6 - - - - - - - - - - - - ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 0 0 0 0 0 0 0 0 0 0 0 0 - - - - - - - - - - - - 0 0 0 0 0 0 . . . . . . 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 + + + + + + + + + + + + . . . . . . + + + + + + + + + + + + . . . . . . 0 0 0 0 0 0 3 3 3 3 3 3 , , , , , , , , , , , , 3 3 3 3 3 3 , , , , , , 3 3 3 3 3 3 . . . . . . 5 5 5 5 5 5 0 0 0 0 0 0 7 7 7 7 7 7 . . . . . . 5 5 5 5 5 5 0 0 0 0 0 0 - - - - - - , , , , , , , , , , , , 0 0 0 0 0 0 . . . . . . . . . . . . 0 0 0 0 0 0 + + + + + + 6 6 6 6 6 6 3 3 3 3 3 3 3 3 3 3 3 3 - - - - - - 2 2 2 2 2 2 2 2 2 2 2 2 - - - - - - - - - - - - . . . . . . . . . . . . 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ; ; ; ; ; ; 5 5 5 5 5 5 5 5 5 5 5 5 1 1 1 1 1 1 ; ; ; ; ; ; 5 5 5 5 5 5 5 5 5 5 5 5 < < < < < < < < < < < < < < < < < < 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 + + + + + + + + + + + + . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . + + + + + + / / / / / / 1 1 1 1 1 1 . . . . . . . . . . . . 6 6 6 6 6 6 6 6 6 6 6 6 9 9 9 9 9 9 9 9 9 9 9 9 6 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 8 8 8 8 8 8 4 4 4 4 4 4 : : : : : : < < < < < < 5 5 5 5 5 5 1 1 1 1 1 1 < < < < < < ; ; ; ; ; ; 6 6 6 6 6 6 6 6 6 6 6 6 > > > > > > / / / / / / 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 ; ; ; ; ; ; 3 3 3 3 3 3 ; ; ; ; ; ; 5 5 5 5 5 5 5 5 5 5 5 5 / / / / / / : : : : : : : : : : : : ? ? ? ? ? ? @ @ @ @ @ @ @ @ @ @ @ @ : : : : : : B B B B B B F F F F F F F F F F F F @ @ @ @ @ @ < < < < < < A A A A A A : : : : : : = = = = = = C C C C C C ? ? ? ? ? ? ; ; ; ; ; ;Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z
	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 # " " " " "HI HI HI HI HI HI HI HI HI HIr$  