
    g                        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dolMmqZq ddplrmsZs ddqlrmtZt ddrlrmuZu ddslrmvZv ddtlrmwZw ddulrmxZx ddvlrmyZy ddwlrmzZz ddxlrm{Z{ ddylrm|Z| ddzlrm}Z} dd{lrm~Z~ dd|lrmZ dd}lrmZ dd~lrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ ddlrmZ 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dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  ddӐl!m"Z" 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)	dmp_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dmp_norm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                   J   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 Zudp Zvd-drZwd-ds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 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ф 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d0dބZd1d߄Zd1dZd2dZd0dZd0dZd0dZd0dZd3dZd/dZd,dZd1dZd0dZd1dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd.dZd Zd.d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 Z#d  Z$d-d!Z%d" Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d4d*Z.d+ Z/dS (5  IPolysNc                     d S N )selfgens     U/var/www/html/ai-engine/env/lib/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.ringsr8  
isinstanceringNotImplementedErrorr1  )r!  r0  r8  s      r#  wrapzIPolys.wrap  sY    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   )r6  rL   ngensr)  r/  s     r#  
from_densezIPolys.from_dense  s(    ~~k'4:a<MMNNNr&  c                 |    |                      t          |                     |          ||| j                            S r  )rD  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   rB  )rD  r   r?  r=  r$  rC  r)  rF  s       r#  r   zIPolys.dmp_add_term  d    |DMM!,<,<diill>O>OPQ>R>R>[>[>]>]_`bfblmnbnptp{||}}}r&  c                 |    |                      t          |                     |          ||| j                            S r  )rD  r   r?  r)  rF  s       r#  r   zIPolys.dup_sub_term  rJ  r&  c           	          |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rL  )rD  r   r?  r=  r$  rC  r)  rF  s       r#  r   zIPolys.dmp_sub_term  rM  r&  c                 |    |                      t          |                     |          ||| j                            S r  )rD  r   r?  r)  rF  s       r#  r   zIPolys.dup_mul_term  rJ  r&  c           	          |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rL  )rD  r   r?  r=  r$  rC  r)  rF  s       r#  r   zIPolys.dmp_mul_term  rM  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r	   r?  r)  r!  rG  rH  s      r#  r	   zIPolys.dup_add_ground  .    ~dmmA.>.>4;OOPPPr&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  r
   r?  rC  r)  rS  s      r#  r
   zIPolys.dmp_add_ground   8    ~dmmA.>.>4:a<QUQ\]]^^^r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  rS  s      r#  r   zIPolys.dup_sub_ground"  rT  r&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rS  s      r#  r   zIPolys.dmp_sub_ground$  rV  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  rS  s      r#  r   zIPolys.dup_mul_ground&  rT  r&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rS  s      r#  r   zIPolys.dmp_mul_ground(  rV  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  rS  s      r#  r   zIPolys.dup_quo_ground*  rT  r&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rS  s      r#  r   zIPolys.dmp_quo_ground,  rV  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  rS  s      r#  r   zIPolys.dup_exquo_ground.  s/    /a0@0@!T[QQRRRr&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rS  s      r#  r   zIPolys.dmp_exquo_ground0  :    /a0@0@!TZPQ\SWS^__```r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  r!  rG  ns      r#  r   zIPolys.dup_lshift3  .    z$--*:*:At{KKLLLr&  c                 z    |                      t          |                     |          || j                            S r  )rD  r   r?  r)  ra  s      r#  r   zIPolys.dup_rshift5  rc  r&  c                 x    |                      t          |                     |          | j                            S r  )rD  r   r?  r)  r!  rG  s     r#  r   zIPolys.dup_abs8  ,    wt}}Q'7'7EEFFFr&  c                     |                      t          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rf  s     r#  r   zIPolys.dmp_abs:  4    wt}}Q'7'7At{SSTTTr&  c                 x    |                      t          |                     |          | j                            S r  )rD  r   r?  r)  rf  s     r#  r   zIPolys.dup_neg=  rg  r&  c                     |                      t          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rf  s     r#  r   zIPolys.dmp_neg?  ri  r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r   r?  r)  r!  rG  gs      r#  r   zIPolys.dup_addB  :    wt}}Q'7'7q9I9I4;WWXXXr&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rm  s      r#  r   zIPolys.dmp_addD  E    wt}}Q'7'7q9I9I4:VW<Y]Ydeefffr&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r   r?  r)  rm  s      r#  r   zIPolys.dup_subG  ro  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rm  s      r#  r   zIPolys.dmp_subI  rq  r&  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rD  r   r?  r)  r!  rG  rn  hs       r#  r   zIPolys.dup_add_mulL  K    {4==+;+;T]]1=M=Mt}}]^O_O_aealmmnnnr&  c           	          |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  ru  s       r#  r   zIPolys.dmp_add_mulN  W    {4==+;+;T]]1=M=Mt}}]^O_O_aeaklmamosoz{{|||r&  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rD  r   r?  r)  ru  s       r#  r   zIPolys.dup_sub_mulP  rw  r&  c           	          |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r    r?  rC  r)  ru  s       r#  r    zIPolys.dmp_sub_mulR  ry  r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r!   r?  r)  rm  s      r#  r!   zIPolys.dup_mulU  ro  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r"   r?  rC  r)  rm  s      r#  r"   zIPolys.dmp_mulW  rq  r&  c                 x    |                      t          |                     |          | j                            S r  )rD  r#   r?  r)  rf  s     r#  r#   zIPolys.dup_sqrZ  rg  r&  c                     |                      t          |                     |          | j        dz
  | j                            S rA  )rD  r$   r?  rC  r)  rf  s     r#  r$   zIPolys.dmp_sqr\  ri  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  r%   r?  r)  ra  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 rA  )rD  r&   r?  rC  r)  ra  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)  rD  r!  rG  rn  qrs        r#  r'   zIPolys.dup_pdivc  sT    a(($--*:*:DKHH1""DOOA$6$677r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r(   r?  r)  rm  s      r#  r(   zIPolys.dup_premf  :    xa(8(8$--:J:JDKXXYYYr&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r)   r?  r)  rm  s      r#  r)   zIPolys.dup_pquoh  r  r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r*   r?  r)  rm  s      r#  r*   zIPolys.dup_pexquoj  :    z$--*:*:DMM!<L<LdkZZ[[[r&  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rA  )r+   r?  rC  r)  rD  r  s        r#  r+   zIPolys.dmp_pdivm  s\    a(($--*:*:DJqL$+VV1""DOOA$6$677r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r,   r?  rC  r)  rm  s      r#  r,   zIPolys.dmp_premp  E    xa(8(8$--:J:JDJWXLZ^Zeffgggr&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r-   r?  rC  r)  rm  s      r#  r-   zIPolys.dmp_pquor  r  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r.   r?  rC  r)  rm  s      r#  r.   zIPolys.dmp_pexquot  E    z$--*:*:DMM!<L<LdjYZl\`\ghhiiir&  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r/   r?  r)  rD  r  s        r#  r/   zIPolys.dup_rr_divw  T    $--**DMM!,<,<dkJJ1""DOOA$6$677r&  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rA  )r0   r?  rC  r)  rD  r  s        r#  r0   zIPolys.dmp_rr_divz  \    $--**DMM!,<,<djlDKXX1""DOOA$6$677r&  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r1   r?  r)  rD  r  s        r#  r1   zIPolys.dup_ff_div}  r  r&  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rA  )r2   r?  rC  r)  rD  r  s        r#  r2   zIPolys.dmp_ff_div  r  r&  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )r3   r?  r)  rD  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  )rD  r4   r?  r)  rm  s      r#  r4   zIPolys.dup_rem  ro  r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r5   r?  r)  rm  s      r#  r5   zIPolys.dup_quo  ro  r&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  r6   r?  r)  rm  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 rA  )r7   r?  rC  r)  rD  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 rA  )rD  r8   r?  rC  r)  rm  s      r#  r8   zIPolys.dmp_rem  rq  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r9   r?  rC  r)  rm  s      r#  r9   zIPolys.dmp_quo  rq  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  r:   r?  rC  r)  rm  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)  rf  s     r#  r;   zIPolys.dup_max_norm  s     DMM!,,dk:::r&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )r<   r?  rC  r)  rf  s     r#  r<   zIPolys.dmp_max_norm  s(    DMM!,,djlDKHHHr&  c                 R    t          |                     |          | j                  S r  )r=   r?  r)  rf  s     r#  r=   zIPolys.dup_l1_norm  s     4==++T[999r&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )r>   r?  rC  r)  rf  s     r#  r>   zIPolys.dmp_l1_norm  s(    4==++TZ\4;GGGr&  c                 R    t          |                     |          | j                  S r  )r?   r?  r)  rf  s     r#  r?   zIPolys.dup_l2_norm_squared       "4==#3#3T[AAAr&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )r@   r?  rC  r)  rf  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  )rD  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 rA  )rD  rB   r  r  r?  rC  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)  rf  s     r#  rC   zIPolys.dup_LC       dmmA&&444r&  c                     t          |                     |          | j                  }t          |t                    r| dd                              |          S |S rA  )rD   r?  r)  r:  r  rD  )r!  rG  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)  rf  s     r#  rE   zIPolys.dup_TC  r  r&  c                     t          |                     |          | j                  }t          |t                    r| dd                              |          S |S rA  )rF   r?  r)  r:  r  rD  )r!  rG  TCs      r#  rF   zIPolys.dmp_TC  r  r&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )rG   r?  rC  r)  rf  s     r#  rG   zIPolys.dmp_ground_LC  (    T]]1--tz!|T[IIIr&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )rH   r?  rC  r)  rf  s     r#  rH   zIPolys.dmp_ground_TC  r  r&  c                 F    t          |                     |                    S r  )rI   r?  rf  s     r#  rI   zIPolys.dup_degree  s    $--**+++r&  c                 X    t          |                     |          | j        dz
            S rA  )rJ   r?  rC  rf  s     r#  rJ   zIPolys.dmp_degree  s$    $--**DJqL999r&  c                 Z    t          |                     |          || j        dz
            S rA  )rK   r?  rC  )r!  rG  js      r#  rK   zIPolys.dmp_degree_in  s&    T]]1--q$*Q,???r&  c                 z    |                      t          |                     |          || j                            S r  )rD  rM   r?  r)  r!  rG  ms      r#  rM   zIPolys.dup_integrate  s.    }T]]1-=-=q$+NNOOOr&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  rN   r?  rC  r)  r  s      r#  rN   zIPolys.dmp_integrate  s8    }T]]1-=-=q$*Q,PTP[\\]]]r&  c                 z    |                      t          |                     |          || j                            S r  )rD  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 rA  )rD  rQ   r?  rC  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 rA  )rD  rR   r?  rC  r)  r!  rG  r  r  s       r#  rR   zIPolys.dmp_diff_in  s:    {4==+;+;Q4:a<QUQ\]]^^^r&  c           	          |                      t          |                     |          ||| j        dz
  | j                            S rA  )rD  rO   r?  rC  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!  rG  as      r#  rS   zIPolys.dup_eval  s"    a((!T[999r&  c                     t          |                     |          || j        dz
  | j                  }| dd                              |          S rA  )rT   r?  rC  r)  rD  )r!  rG  r  results       r#  rT   zIPolys.dmp_eval  sE    $--**Atz!|T[IIABBx""6***r&  c                     t          |                     |          ||| j        dz
  | j                  }|                     |                              |          S rA  )rU   r?  rC  r)  r$  rD  )r!  rG  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 rA  )rW   r?  rC  r)  r$  rD  )r!  rG  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 rA  )rV   r?  rC  r)  r:  r  lenrD  )r!  rG  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  )rD  rX   r?  r)  r!  rG  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 rA  )rD  rY   r?  rC  r)  rm  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 rA  )rD  rZ   r?  rC  r)  r  s      r#  rZ   zIPolys.dmp_ground_trunc  r_  r&  c                 x    |                      t          |                     |          | j                            S r  )rD  r[   r?  r)  rf  s     r#  r[   zIPolys.dup_monic  s,    yq)9)94;GGHHHr&  c                     |                      t          |                     |          | j        dz
  | j                            S rA  )rD  r\   r?  rC  r)  rf  s     r#  r\   zIPolys.dmp_ground_monic  s7    /a0@0@$*Q,PTP[\\]]]r&  c                     t          |                     |          |                     |          | j                  \  }}}||                     |          |                     |          fS r  )ra   r?  r)  rD  r!  rG  rn  rH  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 rA  )rb   r?  rC  r)  rD  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 rA  )rc   r=  r$  r?  r)  rD  r!  rG  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  )rD  rd   r?  r)  rf  s     r#  rd   zIPolys.dup_mirror  s,    z$--*:*:DKHHIIIr&  c                 z    |                      t          |                     |          || j                            S r  )rD  re   r?  r)  r  s      r#  re   zIPolys.dup_scale  r  r&  c                 z    |                      t          |                     |          || j                            S r  )rD  rf   r?  r)  r  s      r#  rf   zIPolys.dup_shift  r  r&  c                     |                      t          |                     |          || j        dz
  | j                            S rA  )rD  rg   r?  rC  r)  r  s      r#  rg   zIPolys.dmp_shift  s6    yq)9)91djlDKXXYYYr&  c           	          |                      t          |                     |          |                     |          |                     |          | j                            S r  )rD  rh   r?  r)  r  s       r#  rh   zIPolys.dup_transform
  sN    }T]]1-=-=t}}Q?O?OQUQ^Q^_`QaQacgcnoopppr&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  ri   r?  r)  rm  s      r#  ri   zIPolys.dup_compose  s:    {4==+;+;T]]1=M=Mt{[[\\\r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  rj   r?  rC  r)  rm  s      r#  rj   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  )rk   r?  r)  r  r  rD  )r!  rG  
componentss      r#  rk   zIPolys.dup_decompose  s9    "4==#3#3T[AA
C44555r&  c                     t          |                     |          | j        dz
  | j                  }|                                                     |          S rA  )rl   r?  rC  r)  r-  rD  r!  rG  r  s      r#  rl   zIPolys.dmp_lift  sE    $--**DJqL$+FF~~**6222r&  c                 R    t          |                     |          | j                  S r  )rm   r?  r)  rf  s     r#  rm   zIPolys.dup_sign_variations  r  r&  Fc                     t          |                     |          | j        |          \  }}|r.|                     | j                                                  }n| }||                    |          fS )Nconvertr)  )rn   r?  r)  r+  get_ringrD  r!  rG  r  rH  r  r;  s         r#  rn   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 )NrB  r  r  )ro   r?  rC  r)  r+  r  rD  r  s         r#  ro   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  )rD  rp   r?  r)  ra  s      r#  rp   zIPolys.dup_revert,  rc  r&  c                     t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r  )rq   r?  r)  rD  r!  rG  rn  srv  s        r#  rq   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 rA  )rr   r?  rC  r)  rD  r  s        r#  rr   zIPolys.dmp_half_gcdex2  s^    dmmA..a0@0@$*Q,PTP[\\1""DOOA$6$677r&  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )rs   r?  r)  rD  r!  rG  rn  r  trv  s         r#  rs   zIPolys.dup_gcdex5  sd    DMM!,,dmmA.>.>LL1a""DOOA$6$68J8JKKr&  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rA  )rt   r?  rC  r)  rD  r  s         r#  rt   zIPolys.dmp_gcdex8  sl    DMM!,,dmmA.>.>
1dkZZ1a""DOOA$6$68J8JKKr&  c                     |                      t          |                     |          |                     |          | j                            S r  )rD  ru   r?  r)  rm  s      r#  ru   zIPolys.dup_invert<  r  r&  c                     |                      t          |                     |          |                     |          | j        dz
  | j                            S rA  )rD  rv   r?  rC  r)  rm  s      r#  rv   zIPolys.dmp_invert>  r  r&  c                     t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r  )rw   r?  r)  r  r  rD  r!  rG  rn  prss       r#  rw   zIPolys.dup_euclidean_prsA  G    a 0 0$--2B2BDKPPC--...r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rA  )rx   r?  rC  r)  r  r  rD  r  s       r#  rx   zIPolys.dmp_euclidean_prsD  Q    a 0 0$--2B2BDJqLRVR]^^C--...r&  c                     t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r  )ry   r?  r)  r  r  rD  r  s       r#  ry   zIPolys.dup_primitive_prsG  r  r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rA  )rz   r?  rC  r)  r  r  rD  r  s       r#  rz   zIPolys.dmp_primitive_prsJ  r   r&  c                     t          |                     |          |                     |          | j                  \  }}t          t	          | j        |                    |fS r  )r{   r?  r)  r  r  rD  r!  rG  rn  r  sress        r#  r{   zIPolys.dup_inner_subresultantsN  sR    +DMM!,<,<dmmA>N>NPTP[\\	TS#..//66r&  c                     t          |                     |          |                     |          | j        dz
  | j                  \  }}t	          t          | j        |                    |fS rA  )r   r?  rC  r)  r  r  rD  r  s        r#  r   zIPolys.dmp_inner_subresultantsQ  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  rD  r  s       r#  r|   zIPolys.dup_subresultantsU  r  r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rA  )r   r?  rC  r)  r  r  rD  r  s       r#  r   zIPolys.dmp_subresultantsX  r   r&  c                     t          |                     |          |                     |          | j                  \  }}|t          t	          | j        |                    fS r  )r}   r?  r)  r  r  rD  r!  rG  rn  resr  s        r#  r}   zIPolys.dup_prs_resultant\  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 rA  )r   r?  rC  r)  rD  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 rA  )r   r?  r3  rC  r)  rD  )r!  rG  rn  r  r  s        r#  r   zIPolys.dmp_zz_modular_resultantc  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 rA  )r   r?  rC  r)  rD  r!  rG  rn  r  s       r#  r   zIPolys.dmp_zz_collins_resultantf  T    &t}}Q'7'7q9I9I4:VW<Y]YdeeABBx""3'''r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S rA  )r   r?  rC  r)  rD  r  s       r#  r   zIPolys.dmp_qq_collins_resultanti  r  r&  c                 z    t          |                     |          |                     |          | j                  S r  )r~   r?  r)  rm  s      r#  r~   zIPolys.dup_resultantm  s.    T]]1--t}}Q/?/?MMMr&  c                     t          |                     |          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S rA  )r   r?  rC  r)  r:  r  rD  r  s       r#  r   zIPolys.dmp_resultanto  sh    DMM!,,dmmA.>.>
1dkZZc4   	8&&s+++Jr&  c                 R    t          |                     |          | j                  S r  )r   r?  r)  rf  s     r#  r   zIPolys.dup_discriminantv  s     a 0 0$+>>>r&  c                     t          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S rA  )r   r?  rC  r)  r:  r  rD  )r!  rG  discs      r#  r   zIPolys.dmp_discriminantx  sZ    a 0 0$*Q,LLdD!! 	8&&t,,,Kr&  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r?  r)  rD  r!  rG  rn  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)  rD  r  s         r#  r   zIPolys.dup_ff_prs_gcd  r  r&  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rA  )r   r?  rC  r)  rD  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 rA  )r   r?  rC  r)  rD  r  s         r#  r   zIPolys.dmp_ff_prs_gcd  r  r&  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r?  r)  rD  r  s         r#  r   zIPolys.dup_zz_heu_gcd  r  r&  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rA  )r   r?  rC  r)  rD  r  s         r#  r   zIPolys.dmp_zz_heu_gcd  r  r&  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r?  r)  rD  r  s         r#  r   zIPolys.dup_qq_heu_gcd  r  r&  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rA  )r   r?  rC  r)  rD  r  s         r#  r   zIPolys.dmp_qq_heu_gcd  r  r&  c                     t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r  )r   r?  r)  rD  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 rA  )r   r?  rC  r)  rD  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)  rD  r!  rG  rn  r  s       r#  r   zIPolys.dup_gcd  ?    DMM!$$dmmA&6&6DDq!!!r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rA  )r   r?  rC  r)  rD  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)  rD  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)  rD  r&  s       r#  r   zIPolys.dup_ff_lcm  r+  r&  c                     t          |                     |          |                     |          | j                  }|                     |          S r  )r   r?  r)  rD  r&  s       r#  r   zIPolys.dup_lcm  r'  r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rA  )r   r?  rC  r)  rD  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 rA  )r   r?  rC  r)  rD  r&  s       r#  r   zIPolys.dmp_ff_lcm  r/  r&  c                     t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rA  )r   r?  rC  r)  rD  r&  s       r#  r   zIPolys.dmp_lcm  r)  r&  c                 V    t          |                     |          | j                  }|S r  )r]   r?  r)  r!  rG  conts      r#  r]   zIPolys.dup_content  s$    4==++T[99r&  c                     t          |                     |          | j                  \  }}||                     |          fS r  )r_   r?  r)  rD  r!  rG  r4  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 rA  )r   r?  rC  r)  r:  r  rD  r3  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 rA  )r   r?  rC  r)  r:  r  rD  r6  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 rA  )r^   r?  rC  r)  r3  s      r#  r^   zIPolys.dmp_ground_content  s,    !$--"2"2DJqL$+NNr&  c                     t          |                     |          | j        dz
  | j                  \  }}||                     |          fS rA  )r`   r?  rC  r)  rD  r6  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)  rD  	r!  rG  rn  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 )NrB  r=  )r   r?  rC  r)  rD  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   rD  .0rn  kr!  s      r#  
<listcomp>z-IPolys.dup_trial_division.<locals>.<listcomp>  .    >>>TQ$//!$$a(>>>r&  )r   r?  r  r  r)  r!  rG  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 )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z-IPolys.dmp_trial_division.<locals>.<listcomp>  rJ  r&  )r   r?  r  r  rC  r)  rK  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)  rf  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 rA  )r   r?  rC  r)  rf  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)  rD  )r!  r  rG  rn  rv  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)  rD  )r!  r  rG  f_listlrR  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   rE  rF  s      r#  rI  z,IPolys.dup_zz_zassenhaus.<locals>.<listcomp>  rJ  r&  )r   r?  r)  rK  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)  rf  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!  rG  r]  s      r#  r   zIPolys.dup_cyclotomic_p  s%    a 0 0$+;WWWWr&  c                 V    t          || j                  }|                     |          S r  )r   r)  rD  )r!  rb  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  rD  r  s      r#  r   zIPolys.dup_zz_cyclotomic_factor  sC    )$--*:*:DKHH>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 )NrB  c                 D    g | ]\  }}                     |          |fS r   )r?  )rG  r  rH  mvs      r#  rI  z2IPolys.dmp_zz_wang_lead_coeffs.<locals>.<listcomp>  s,    111dar{{1~~q!111r&  )r  r  r?  r   rC  r)  rD  )r!  rG  rT  rb  ra  r  r  uvHHCCrf  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)  rD  )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 rA  )r   r  r  r?  rC  r)  rD  )r!  r  rH  r  r5  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 rA  )r  r  r?  r   rC  r)  rD  )	r!  rG  r  r  r  r  rg  rf  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 )NrB  )modseedc                 :    g | ]}                     |          S r   rE  rG  rn  r!  s     r#  rI  z&IPolys.dmp_zz_wang.<locals>.<listcomp>/  s%    666##666r&  )r   r?  rC  r)  )r!  rG  rn  ro  rL  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   rE  rq  s     r#  rI  z,IPolys.dup_zz_factor_sqf.<locals>.<listcomp>3  s%    >>>++>>>r&  )r   r?  r)  r!  rG  coeffrL  s   `   r#  r   zIPolys.dup_zz_factor_sqf1  sD    *4==+;+;T[IIw>>>>W>>>??r&  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z(IPolys.dup_zz_factor.<locals>.<listcomp>7  .    FFFTQ$//!,,a0FFFr&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_zz_factor5  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 )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z(IPolys.dmp_zz_factor.<locals>.<listcomp>:  rx  r&  )r   r?  rC  r)  rt  s   `   r#  r   zIPolys.dmp_zz_factor8  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   rE  rF  s      r#  rI  z*IPolys.dup_qq_i_factor.<locals>.<listcomp>>  rx  r&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_qq_i_factor<  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 )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z*IPolys.dmp_qq_i_factor.<locals>.<listcomp>A  rx  r&  )r   r?  rC  r)  rt  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   rE  rF  s      r#  rI  z*IPolys.dup_zz_i_factor.<locals>.<listcomp>E  rx  r&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_zz_i_factorC  r  r&  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z*IPolys.dmp_zz_i_factor.<locals>.<listcomp>H  rx  r&  )r   r?  rC  r)  rt  s   `   r#  r   zIPolys.dmp_zz_i_factorF  r  r&  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z)IPolys.dup_ext_factor.<locals>.<listcomp>L  rx  r&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_ext_factorJ  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 )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z)IPolys.dmp_ext_factor.<locals>.<listcomp>O  rx  r&  )r   r?  rC  r)  rt  s   `   r#  r   zIPolys.dmp_ext_factorM  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   rE  rF  s      r#  rI  z(IPolys.dup_gf_factor.<locals>.<listcomp>S  rx  r&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_gf_factorQ  ry  r&  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z(IPolys.dmp_gf_factor.<locals>.<listcomp>V  rx  r&  )r   r?  rC  r)  rt  s   `   r#  r   zIPolys.dmp_gf_factorT  r|  r&  c                 z     t                               |           j                  \  }}| fd|D             fS )Nc                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z*IPolys.dup_factor_list.<locals>.<listcomp>Z  rx  r&  )r   r?  r)  rt  s   `   r#  r   zIPolys.dup_factor_listX  r  r&  c                 p     t                               |           j                  } fd|D             S )Nc                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z2IPolys.dup_factor_list_include.<locals>.<listcomp>]  rJ  r&  )r   r?  r)  rK  s   `  r#  r   zIPolys.dup_factor_list_include[  s:    )$--*:*:DKHH>>>>W>>>>r&  c                      t                               |           j        dz
   j                  \  }}| fd|D             fS )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z*IPolys.dmp_factor_list.<locals>.<listcomp>a  rx  r&  )r   r?  rC  r)  rt  s   `   r#  r   zIPolys.dmp_factor_list_  r  r&  c                      t                               |           j        dz
   j                  } fd|D             S )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z2IPolys.dmp_factor_list_include.<locals>.<listcomp>d  rJ  r&  )r   r?  rC  r)  rK  s   `  r#  r   zIPolys.dmp_factor_list_includeb  sB    )$--*:*:DJqL$+VV>>>>W>>>>r&  c                 R    t          |                     |          | j                  S r  )r   r?  r)  rf  s     r#  r   zIPolys.dup_irreducible_pf  s      q!1!14;???r&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )r   r?  rC  r)  rf  s     r#  r   zIPolys.dmp_irreducible_ph  s(     q!1!14:a<MMMr&  c                     t          |                     |          | j                  }t          t	          | j        |                    S r  )r   r?  r)  r  r  rD  )r!  rG  seqs      r#  r   zIPolys.dup_sturmk  s9    a(($+66C--...r&  c                 R    t          |                     |          | j                  S r  )r   r?  r)  rf  s     r#  r   zIPolys.dup_sqf_po  s     q))4;777r&  c                 d    t          |                     |          | j        dz
  | j                  S rA  )r   r?  rC  r)  rf  s     r#  r   zIPolys.dmp_sqf_pq  s(    q))4:a<EEEr&  c                     t          |                     |          | j        dz
  | j                  }|                                                     |          S rA  )r   r?  rC  r)  r-  rD  ra  s      r#  r   zIPolys.dmp_normt  sE    T]]1%%tz!|T[AA~~**1---r&  c                     t          |                     |          | j                  \  }}}||                     |          |                                                     |          fS r  )r   r?  r)  rD  r-  r!  rG  r  r  Rs        r#  r   zIPolys.dup_sqf_normx  sV    t}}Q//==1a4??1%%t~~'7'7'B'B1'E'EFFr&  c                     t          |                     |          | j        dz
  | j                  \  }}}||                     |          |                                                     |          fS rA  )r   r?  rC  r)  rD  r-  r  s        r#  r   zIPolys.dmp_sqf_norm{  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  )rD  r   r?  r)  rf  s     r#  r   zIPolys.dup_gf_sqf_part  ,    t}}Q/?/?MMNNNr&  c                 x    |                      t          |                     |          | j                            S r  )rD  r   r?  r)  rf  s     r#  r   zIPolys.dmp_gf_sqf_part  r  r&  c                 x    |                      t          |                     |          | j                            S r  )rD  r   r?  r)  rf  s     r#  r   zIPolys.dup_sqf_part  s,    |DMM!,<,<dkJJKKKr&  c                     |                      t          |                     |          | j        dz
  | j                            S rA  )rD  r   r?  rC  r)  rf  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   rE  rF  s      r#  rI  z*IPolys.dup_gf_sqf_list.<locals>.<listcomp>  rx  r&  )r   r?  r)  r!  rG  r  ru  rL  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 )NrB  r  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z*IPolys.dmp_gf_sqf_list.<locals>.<listcomp>  rx  r&  )r   r?  rC  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   rE  rF  s      r#  rI  z'IPolys.dup_sqf_list.<locals>.<listcomp>  rx  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   rE  rF  s      r#  rI  z/IPolys.dup_sqf_list_include.<locals>.<listcomp>  rJ  r&  )r   r?  r)  r!  rG  r  rL  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 )NrB  r  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z'IPolys.dmp_sqf_list.<locals>.<listcomp>  rx  r&  )r   r?  rC  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 )NrB  r  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z/IPolys.dmp_sqf_list_include.<locals>.<listcomp>  rJ  r&  )r   r?  rC  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   rE  rF  s      r#  rI  z'IPolys.dup_gff_list.<locals>.<listcomp>  rJ  r&  )r   r?  r)  rK  s   `  r#  r   zIPolys.dup_gff_list  s:    t}}Q//==>>>>W>>>>r&  c                      t                               |           j        dz
   j                  } fd|D             S )NrB  c                 D    g | ]\  }}                     |          |fS r   rE  rF  s      r#  rI  z'IPolys.dmp_gff_list.<locals>.<listcomp>  rJ  r&  )r   r?  rC  r)  rK  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)  rf  s     r#  r   zIPolys.dup_root_upper_bound  r[  r&  c                 R    t          |                     |          | j                  S r  )r   r?  r)  rf  s     r#  r   zIPolys.dup_root_lower_bound  r[  r&  c                 X    t          |                     |          || j        |          S )N)fast)r   r?  r)  )r!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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!  rG  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_1rB  )sympy.polys.specialpolysr  tupler  rD  rC  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_2rB  )r  r  r  r  rD  rC  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_3rB  )r  r  r  r  rD  rC  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  )rG  rH  r!  s     r#  rI  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 rA  )r6  rL   rC  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  rf  s     r#  r   zIPolys.gf_degree  s    ))!,,---r&  c                 \    t          |                     |          | j        j                  S r  )r   r  r)  r  rf  s     r#  r   zIPolys.gf_LC  $    T%%a(($+/:::r&  c                 \    t          |                     |          | j        j                  S r  )r   r  r)  r  rf  s     r#  r   zIPolys.gf_TC  r  r&  c                 l    |                      t          |                     |                              S r  )r  r   r  rf  s     r#  r   zIPolys.gf_strip  s,    !!(4+;+;A+>+>"?"?@@@r&  c                     |                      t          |                     |          | j        j                            S r  )r  r   r  r)  rn  rf  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)  rn  r  rf  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)  rn  r  rf  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)  rn  r!  rG  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)  rn  rf  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)  rn  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)  rn  r  rf  s     r#  r   zIPolys.gf_neg  8    !!&)9)9!)<)<dkot{"_"_```r&  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r)  rn  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)  rn  r  r  s      r#  r   zIPolys.gf_sub_ground  r  r&  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r)  rn  r  r  s      r#  r   zIPolys.gf_mul_ground  r  r&  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r)  rn  r  r  s      r#  r   zIPolys.gf_quo_ground  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rm  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)  rn  r  rm  s      r#  r   zIPolys.gf_sub  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rm  s      r#  r   zIPolys.gf_mul   r  r&  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rf  s     r#  r   zIPolys.gf_sqr  r  r&  c           	          |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  ru  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)  rn  r  ru  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)  rn  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)  rn  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)  rn  r  rm  s      r#  r   zIPolys.gf_rem  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rm  s      r#  r   zIPolys.gf_quo  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rm  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  ra  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  ra  s      r#  r   zIPolys.gf_rshift  r  r&  c                     |                      t          |                     |          || j        j        | j        j                            S r  )r  r   r  r)  rn  r  ra  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)  rn  r  )r!  rG  rb  rn  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)  rn  r  r  )r!  rG  rn  rv  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)  rn  r  rm  s      r#  r   zIPolys.gf_gcd$  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r   r  r)  rn  r  rm  s      r#  r   zIPolys.gf_lcm&  r  r&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  rm  s      r#  r  zIPolys.gf_gcdex(  r  r&  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_monic+  r  r&  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  rf  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)  rn  r  r  s      r#  r  zIPolys.gf_eval0  s,    t''**At{PPPr&  c                 t    t          |                     |          || j        j        | j        j                  S r  )r  r  r)  rn  r  )r!  rG  r  s      r#  r  zIPolys.gf_multi_eval2  s,    T--a00!T[_dkoVVVr&  c                     |                      t          |                     |          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  rm  s      r#  r  zIPolys.gf_compose5  sO    !!*T-=-=a-@-@$BRBRSTBUBUW[WbWfhlhshw"x"xyyyr&  c           	          |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  )r!  rn  rv  rG  s       r#  r  zIPolys.gf_compose_mod7  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)  rn  r  r  )r!  r  brH  rb  rG  UVs           r#  r	  zIPolys.gf_trace_map:  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)  rn  r  r!  rb  s     r#  r
  zIPolys.gf_randomB  s*    !!)At{"P"PQQQr&  c                 r    |                      t          || j        j        | j        j                            S r  )r  r  r)  rn  r  r+  s     r#  r  zIPolys.gf_irreducibleD  s*    !!.DKOT[_"U"UVVVr&  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_irred_p_ben_orG  s*     !1!1!!4!4dkot{WWWr&  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_irred_p_rabinI  *     0 0 3 3T[_dkoVVVr&  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_irreducible_pK  r/  r&  c                 r    t          |                     |          | j        j        | j        j                  S r  )r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_sqf_pM  s*    ((++T[_dkoNNNr&  c                     |                      t          |                     |          | j        j        | j        j                            S r  )r  r  r  r)  rn  r  rf  s     r#  r  zIPolys.gf_sqf_partP  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  rF  s      r#  rI  z&IPolys.gf_sqf_list.<locals>.<listcomp>T  0    HHHtq!++A..2HHHr&  )r  r  r)  rn  r  r  s   `    r#  gf_sqf_listzIPolys.gf_sqf_listR  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)  rn  r  rf  s     r#  r  zIPolys.gf_QmatrixV  s*    $**1--t{PPPr&  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r   r5  rq  s     r#  rI  z'IPolys.gf_berlekamp.<locals>.<listcomp>Z  '    9991##A&&999r&  )r  r  r)  rn  r  rK  s   `  r#  r  zIPolys.gf_berlekampX  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   r5  rF  s      r#  rI  z,IPolys.gf_ddf_zassenhaus.<locals>.<listcomp>^  0    AAA1$$$Q''+AAAr&  )r  r  r)  rn  r  rK  s   `  r#  r  zIPolys.gf_ddf_zassenhaus\  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   r5  rq  s     r#  rI  z,IPolys.gf_edf_zassenhaus.<locals>.<listcomp>a  r;  r&  )r  r  r)  rn  r  r!  rG  rb  rL  s   `   r#  r  zIPolys.gf_edf_zassenhaus_  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   r5  rF  s      r#  rI  z'IPolys.gf_ddf_shoup.<locals>.<listcomp>e  r?  r&  )r  r  r)  rn  r  rK  s   `  r#  r  zIPolys.gf_ddf_shoupc  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   r5  rq  s     r#  rI  z'IPolys.gf_edf_shoup.<locals>.<listcomp>h  r;  r&  )r  r  r)  rn  r  rB  s   `   r#  r  zIPolys.gf_edf_shoupf  r<  r&  c                      t                               |           j        j         j        j                  } fd|D             S )Nc                 :    g | ]}                     |          S r   r5  rq  s     r#  rI  z(IPolys.gf_zassenhaus.<locals>.<listcomp>l  r;  r&  )r  r  r)  rn  r  rK  s   `  r#  r  zIPolys.gf_zassenhausj  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   r5  rq  s     r#  rI  z#IPolys.gf_shoup.<locals>.<listcomp>o  r;  r&  )r  r  r)  rn  r  rK  s   `  r#  r  zIPolys.gf_shoupm  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   r5  rq  s     r#  rI  z(IPolys.gf_factor_sqf.<locals>.<listcomp>s  s'    @@@!**1--@@@r&  )r  r  r)  rn  r  )r!  rG  rL  ru  rL  s   `    r#  r  zIPolys.gf_factor_sqfq  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   r5  rF  s      r#  rI  z$IPolys.gf_factor.<locals>.<listcomp>v  r6  r&  )r  r  r)  rn  r  rt  s   `   r#  r  zIPolys.gf_factort  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  (0  __name__
__module____qualname__r(  rC  r)  r*  gensr$  r+  r-  r1  r3  r6  r=  r?  rD  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   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  r  r  r7  r  r  r  r  r  r  r  r  r  r  r   r&  r#  r  r     s       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Z Z Z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   rp   sympy.polys.euclidtoolsrq   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   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   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>r^     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 ? ? ? ? ? ? ; ; ; ; ; ;D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D	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 # " " " " "NI NI NI NI NI NI NI NI NI NIr&  