
    Xh                    2   d Z ddlmZ ddlmZ er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m0Z0 dd+lm1Z1 dd,lm2Z2 dd-lm3Z3 dd.lm4Z4 dd/lm5Z5 dd0lm6Z6 dd1lm7Z7 dd2lm8Z8 dd3lm9Z9 dd4lm:Z: dd5lm;Z; dd6lm<Z< dd7lm=Z= dd8lm>Z> dd9lm?Z? dd:lm@Z@ dd;lmAZA dd<lmBZB dd=lmCZC dd>lmDZD dd?lmEZE dd@lmFZF ddAlmGZG ddBlmHZH ddClmIZI ddDlmJZJ ddElmKZK ddFlmLZL ddGlmMZM ddHlNmOZO ddIlNmPZP ddJlNmQZQ ddKlNmRZR ddLlNmSZS ddMlNmTZT ddNlNmUZU ddOlNmVZV ddPlNmWZW ddQlNmXZX ddRlYmZZZ ddSlYm[Z[ ddTlYm\Z\ ddUlYm]Z] ddVlYm^Z^ ddWlYm_Z_ ddXlYm`Z` ddYlYmaZa ddZlYmbZb dd[lYmcZc dd\lYmdZd dd]lYmeZe dd^lYmfZf dd_lYmgZg dd`lYmhZh ddalYmiZi ddblYmjZj ddclYmkZk dddlYmlZl ddelYmmZm ddflYmnZn ddglYmoZo ddhlYmpZp ddilYmqZq ddjlYmrZr ddklYmsZs ddllYmtZt ddmlYmuZu ddnlYmvZv ddolYmwZw ddplYmxZx ddqlYmyZy ddrlYmzZz ddslYm{Z{ ddtlYm|Z| ddulYm}Z} ddvl~mZ ddwl~mZ ddxl~mZ ddyl~mZ ddzl~mZ dd{l~mZ dd|l~mZ dd}l~mZ dd~l~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ ddl~mZ 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dlmZmZmZmZmZmZmZmZmZmZmZm Z mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddِl-m.Z. e. G dڄ dۦ                      Z/dS )z8Compatibility interface between dense and sparse polys.     )annotations)TYPE_CHECKING)Expr)Domain)MonomialOrderPolyElement)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                  v   e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   d Zd6d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'd0 Z(d1 Z)d2 Z*d3 Z+d4 Z,d5 Z-d6 Z.d7 Z/d8 Z0d9 Z1d: Z2d; Z3d< Z4d= Z5d> Z6d? Z7d@ Z8dA Z9dB Z:dC Z;dD Z<dE Z=dF Z>dG Z?dH Z@dI ZAdJ ZBdK ZCdL ZDdM ZEdN ZFdO ZGdP ZHdQ ZIdR ZJdS ZKdT ZLdU ZMdV ZNdW ZOdX ZPdY ZQdZ ZRd[ ZSd\ ZTd] ZUd^ ZVd_ ZWd` ZXda ZYdb ZZdc Z[dd Z\de Z]df Z^dg Z_dh Z`di Zadj Zbdk Zcdl Zddm Zedn Zfdo Zgdp Zhdq Zidr Zjds Zkdt Zldu Zmdv Zndw Zodx Zpdy Zqdz Zrd7d|Zsd7d}Ztd~ Zud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d 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 Zd8dZd8dZd Zd Zd Zd Zd Zd Zd Zd Zd7dZd Zd Zd Zd Zd Zd Zd Zd9d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Ґd7d݄ZӐd7dބZԐd7d߄ZՐd7dZ֐d7dZאd7dZd Zd Zd Zd Zܐd7dZݐd:dZސd;dZߐd;dZd<dZd:dZd:dZd:dZd:dZd=dZd9dZd6dZd;dZd:dZd;dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd Zd8dZd Zd8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 d7d+Z!d, Z"d- Z#d. Z$d/ Z%d0 Z&d1 Z'd2 Z(d3 Z)d>d4Z*d5 Z+dS (?  IPolysztuple[PolyElement, ...]gensztuple[Expr, ...]symbolsintngensr   domainr   orderc                    d S N )selfgens     k/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/polys/compatibility.pydropzIPolys.drop           Nc                    d S r,  r-  )r.  r&  r)  r*  s       r0  clonezIPolys.clone   r2  r3  c                    d S r,  r-  )r.  s    r0  	to_groundzIPolys.to_ground   r2  r3  c                    d S r,  r-  r.  elements     r0  
ground_newzIPolys.ground_new  r2  r3  c                    d S r,  r-  r9  s     r0  
domain_newzIPolys.domain_new  r2  r3  c                    d S r,  r-  )r.  ds     r0  	from_dictzIPolys.from_dict  r2  r3  c                    ddl m} t          ||          r|j        | k    r|S t	          d          |                     |          S )Nr   r   zdomain conversions)sympy.polys.ringsr	   
isinstanceringNotImplementedErrorr;  )r.  r:  r	   s      r0  wrapzIPolys.wrap  sY    111111g{++ 	,|t##)*>?????7+++r3  c                P    |                      |                                          S r,  )rF  to_denser9  s     r0  rH  zIPolys.to_dense  s     yy!!**,,,r3  c                d    |                      t          || j        dz
  | j                            S N   )r@  rS   r(  r)  r9  s     r0  
from_densezIPolys.from_dense  s(    ~~k'4:a<MMNNNr3  c                |    |                      t          |                     |          ||| j                            S r,  )rL  r
   rH  r)  r.  fcis       r0  r
   zIPolys.dup_add_term  0    |DMM!,<,<aDKPPQQQr3  c           	         |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S Nr   rK  )rL  r   rH  rF  r1  r(  r)  rN  s       r0  r   zIPolys.dmp_add_term  d    |DMM!,<,<diill>O>OPQ>R>R>[>[>]>]_`bfblmnbnptp{||}}}r3  c                |    |                      t          |                     |          ||| j                            S r,  )rL  r   rH  r)  rN  s       r0  r   zIPolys.dup_sub_term  rR  r3  c           	         |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rT  )rL  r   rH  rF  r1  r(  r)  rN  s       r0  r   zIPolys.dmp_sub_term!  rU  r3  c                |    |                      t          |                     |          ||| j                            S r,  )rL  r   rH  r)  rN  s       r0  r   zIPolys.dup_mul_term#  rR  r3  c           	         |                      t          |                     |          |                     |                              d                                          || j        dz
  | j                            S rT  )rL  r   rH  rF  r1  r(  r)  rN  s       r0  r   zIPolys.dmp_mul_term%  rU  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r.  rO  rP  s      r0  r   zIPolys.dup_add_ground(  .    ~dmmA.>.>4;OOPPPr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  r[  s      r0  r   zIPolys.dmp_add_ground*  8    ~dmmA.>.>4:a<QUQ\]]^^^r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r[  s      r0  r   zIPolys.dup_sub_ground,  r\  r3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  r[  s      r0  r   zIPolys.dmp_sub_ground.  r^  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r[  s      r0  r   zIPolys.dup_mul_ground0  r\  r3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  r[  s      r0  r   zIPolys.dmp_mul_ground2  r^  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r[  s      r0  r   zIPolys.dup_quo_ground4  r\  r3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  r[  s      r0  r   zIPolys.dmp_quo_ground6  r^  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r[  s      r0  r   zIPolys.dup_exquo_ground8  s/    /a0@0@!T[QQRRRr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  r[  s      r0  r   zIPolys.dmp_exquo_ground:  :    /a0@0@!TZPQ\SWS^__```r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  r.  rO  ns      r0  r   zIPolys.dup_lshift=  .    z$--*:*:At{KKLLLr3  c                z    |                      t          |                     |          || j                            S r,  )rL  r   rH  r)  ri  s      r0  r   zIPolys.dup_rshift?  rk  r3  c                x    |                      t          |                     |          | j                            S r,  )rL  r   rH  r)  r.  rO  s     r0  r   zIPolys.dup_absB  ,    wt}}Q'7'7EEFFFr3  c                    |                      t          |                     |          | j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_absD  4    wt}}Q'7'7At{SSTTTr3  c                x    |                      t          |                     |          | j                            S r,  )rL  r   rH  r)  rn  s     r0  r   zIPolys.dup_negG  ro  r3  c                    |                      t          |                     |          | j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_negI  rq  r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r    rH  r)  r.  rO  gs      r0  r    zIPolys.dup_addL  :    wt}}Q'7'7q9I9I4;WWXXXr3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r!   rH  r(  r)  ru  s      r0  r!   zIPolys.dmp_addN  E    wt}}Q'7'7q9I9I4:VW<Y]Ydeefffr3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r"   rH  r)  ru  s      r0  r"   zIPolys.dup_subQ  rw  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r#   rH  r(  r)  ru  s      r0  r#   zIPolys.dmp_subS  ry  r3  c           	         |                      t          |                     |          |                     |          |                     |          | j                            S r,  )rL  r$   rH  r)  r.  rO  rv  hs       r0  r$   zIPolys.dup_add_mulV  K    {4==+;+;T]]1=M=Mt}}]^O_O_aealmmnnnr3  c           	         |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r%   rH  r(  r)  r}  s       r0  r%   zIPolys.dmp_add_mulX  W    {4==+;+;T]]1=M=Mt}}]^O_O_aeaklmamosoz{{|||r3  c           	         |                      t          |                     |          |                     |          |                     |          | j                            S r,  )rL  r&   rH  r)  r}  s       r0  r&   zIPolys.dup_sub_mulZ  r  r3  c           	         |                      t          |                     |          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r'   rH  r(  r)  r}  s       r0  r'   zIPolys.dmp_sub_mul\  r  r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r(   rH  r)  ru  s      r0  r(   zIPolys.dup_mul_  rw  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r)   rH  r(  r)  ru  s      r0  r)   zIPolys.dmp_mula  ry  r3  c                x    |                      t          |                     |          | j                            S r,  )rL  r*   rH  r)  rn  s     r0  r*   zIPolys.dup_sqrd  ro  r3  c                    |                      t          |                     |          | j        dz
  | j                            S rJ  )rL  r+   rH  r(  r)  rn  s     r0  r+   zIPolys.dmp_sqrf  rq  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  r,   rH  r)  ri  s      r0  r,   zIPolys.dup_powh  s.    wt}}Q'7'7DKHHIIIr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  r-   rH  r(  r)  ri  s      r0  r-   zIPolys.dmp_powj  s6    wt}}Q'7'7DJqL$+VVWWWr3  c                    t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r,  )r.   rH  r)  rL  r.  rO  rv  qrs        r0  r.   zIPolys.dup_pdivm  sT    a(($--*:*:DKHH1""DOOA$6$677r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r/   rH  r)  ru  s      r0  r/   zIPolys.dup_premp  :    xa(8(8$--:J:JDKXXYYYr3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r0   rH  r)  ru  s      r0  r0   zIPolys.dup_pquor  r  r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r1   rH  r)  ru  s      r0  r1   zIPolys.dup_pexquot  :    z$--*:*:DMM!<L<LdkZZ[[[r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rJ  )r2   rH  r(  r)  rL  r  s        r0  r2   zIPolys.dmp_pdivw  s\    a(($--*:*:DJqL$+VV1""DOOA$6$677r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r3   rH  r(  r)  ru  s      r0  r3   zIPolys.dmp_premz  E    xa(8(8$--:J:JDJWXLZ^Zeffgggr3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r4   rH  r(  r)  ru  s      r0  r4   zIPolys.dmp_pquo|  r  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r5   rH  r(  r)  ru  s      r0  r5   zIPolys.dmp_pexquo~  E    z$--*:*:DMM!<L<LdjYZl\`\ghhiiir3  c                    t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r,  )r6   rH  r)  rL  r  s        r0  r6   zIPolys.dup_rr_div  T    $--**DMM!,<,<dkJJ1""DOOA$6$677r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rJ  )r7   rH  r(  r)  rL  r  s        r0  r7   zIPolys.dmp_rr_div  \    $--**DMM!,<,<djlDKXX1""DOOA$6$677r3  c                    t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r,  )r8   rH  r)  rL  r  s        r0  r8   zIPolys.dup_ff_div  r  r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rJ  )r9   rH  r(  r)  rL  r  s        r0  r9   zIPolys.dmp_ff_div  r  r3  c                    t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r,  )r:   rH  r)  rL  r  s        r0  r:   zIPolys.dup_div  sT    t}}Q''q)9)94;GG1""DOOA$6$677r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r;   rH  r)  ru  s      r0  r;   zIPolys.dup_rem  rw  r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r<   rH  r)  ru  s      r0  r<   zIPolys.dup_quo  rw  r3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r=   rH  r)  ru  s      r0  r=   zIPolys.dup_exquo  s:    yq)9)94==;K;KT[YYZZZr3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rJ  )r>   rH  r(  r)  rL  r  s        r0  r>   zIPolys.dmp_div  s\    t}}Q''q)9)94:a<UU1""DOOA$6$677r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r?   rH  r(  r)  ru  s      r0  r?   zIPolys.dmp_rem  ry  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r@   rH  r(  r)  ru  s      r0  r@   zIPolys.dmp_quo  ry  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  rA   rH  r(  r)  ru  s      r0  rA   zIPolys.dmp_exquo  sE    yq)9)94==;K;KTZXY\[_[fgghhhr3  c                R    t          |                     |          | j                  S r,  )rB   rH  r)  rn  s     r0  rB   zIPolys.dup_max_norm  s     DMM!,,dk:::r3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )rC   rH  r(  r)  rn  s     r0  rC   zIPolys.dmp_max_norm  s(    DMM!,,djlDKHHHr3  c                R    t          |                     |          | j                  S r,  )rD   rH  r)  rn  s     r0  rD   zIPolys.dup_l1_norm  s     4==++T[999r3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )rE   rH  r(  r)  rn  s     r0  rE   zIPolys.dmp_l1_norm  s(    4==++TZ\4;GGGr3  c                R    t          |                     |          | j                  S r,  )rF   rH  r)  rn  s     r0  rF   zIPolys.dup_l2_norm_squared       "4==#3#3T[AAAr3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )rG   rH  r(  r)  rn  s     r0  rG   zIPolys.dmp_l2_norm_squared  s(    "4==#3#3TZ\4;OOOr3  c           
         |                      t          t          t          | j        |                    | j                            S r,  )rL  rH   listmaprH  r)  r.  polyss     r0  rH   zIPolys.dup_expand  s4    z$s4=%/H/H*I*I4;WWXXXr3  c           
         |                      t          t          t          | j        |                    | j        dz
  | j                            S rJ  )rL  rI   r  r  rH  r(  r)  r  s     r0  rI   zIPolys.dmp_expand  s?    z$s4=%/H/H*I*I4:VW<Y]Ydeefffr3  c                R    t          |                     |          | j                  S r,  )rJ   rH  r)  rn  s     r0  rJ   zIPolys.dup_LC       dmmA&&444r3  c                    t          |                     |          | j                  }t          |t                    r| dd                              |          S |S rJ  )rK   rH  r)  rC  r  rL  )r.  rO  LCs      r0  rK   zIPolys.dmp_LC  R    DMM!$$dk22b$ 	8&&r***Ir3  c                R    t          |                     |          | j                  S r,  )rL   rH  r)  rn  s     r0  rL   zIPolys.dup_TC  r  r3  c                    t          |                     |          | j                  }t          |t                    r| dd                              |          S |S rJ  )rM   rH  r)  rC  r  rL  )r.  rO  TCs      r0  rM   zIPolys.dmp_TC  r  r3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )rN   rH  r(  r)  rn  s     r0  rN   zIPolys.dmp_ground_LC  (    T]]1--tz!|T[IIIr3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )rO   rH  r(  r)  rn  s     r0  rO   zIPolys.dmp_ground_TC  r  r3  c                F    t          |                     |                    S r,  )rP   rH  rn  s     r0  rP   zIPolys.dup_degree  s    $--**+++r3  c                X    t          |                     |          | j        dz
            S rJ  )rQ   rH  r(  rn  s     r0  rQ   zIPolys.dmp_degree  s$    $--**DJqL999r3  c                Z    t          |                     |          || j        dz
            S rJ  )rR   rH  r(  )r.  rO  js      r0  rR   zIPolys.dmp_degree_in  s&    T]]1--q$*Q,???r3  c                z    |                      t          |                     |          || j                            S r,  )rL  rT   rH  r)  r.  rO  ms      r0  rT   zIPolys.dup_integrate  s.    }T]]1-=-=q$+NNOOOr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  rU   rH  r(  r)  r  s      r0  rU   zIPolys.dmp_integrate  s8    }T]]1-=-=q$*Q,PTP[\\]]]r3  c                z    |                      t          |                     |          || j                            S r,  )rL  rW   rH  r)  r  s      r0  rW   zIPolys.dup_diff  s.    xa(8(8!T[IIJJJr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  rX   rH  r(  r)  r  s      r0  rX   zIPolys.dmp_diff  s6    xa(8(8!TZ\4;WWXXXr3  c           	         |                      t          |                     |          ||| j        dz
  | j                            S rJ  )rL  rY   rH  r(  r)  r.  rO  r  r  s       r0  rY   zIPolys.dmp_diff_in  s:    {4==+;+;Q4:a<QUQ\]]^^^r3  c           	         |                      t          |                     |          ||| j        dz
  | j                            S rJ  )rL  rV   rH  r(  r)  r  s       r0  rV   zIPolys.dmp_integrate_in  s<    /a0@0@!Q
STVZVabbcccr3  c                T    t          |                     |          || j                  S r,  )rZ   rH  r)  r.  rO  as      r0  rZ   zIPolys.dup_eval  s"    a((!T[999r3  c                    t          |                     |          || j        dz
  | j                  }| dd                              |          S rJ  )r[   rH  r(  r)  rL  )r.  rO  r  results       r0  r[   zIPolys.dmp_eval  sE    $--**Atz!|T[IIABBx""6***r3  c                    t          |                     |          ||| j        dz
  | j                  }|                     |                              |          S rJ  )r\   rH  r(  r)  r1  rL  )r.  rO  r  r  r  s        r0  r\   zIPolys.dmp_eval_in  sI    T]]1--q!TZ\4;OOyy||&&v...r3  c                    t          |                     |          |||| j        dz
  | j                  }|                     |                              |          S rJ  )r^   rH  r(  r)  r1  rL  )r.  rO  r  r  r  r  s         r0  r^   zIPolys.dmp_diff_eval_in  sK    !$--"2"2Aq!TZ\4;WWyy||&&v...r3  c                    t          |                     |          || j        dz
  | j                  }t	          |t
                    r+| d t          |                                        |          S |S rJ  )r]   rH  r(  r)  rC  r  lenrL  )r.  rO  Ar  s       r0  r]   zIPolys.dmp_eval_tail  sd    t}}Q//DJqL$+NNfd## 	#a&&>,,V444Mr3  c                z    |                      t          |                     |          || j                            S r,  )rL  r_   rH  r)  r.  rO  ps      r0  r_   zIPolys.dup_trunc  .    yq)9)91dkJJKKKr3  c                    |                      t          |                     |          | dd                              |          | j        dz
  | j                            S rJ  )rL  r`   rH  r(  r)  ru  s      r0  r`   zIPolys.dmp_trunc  sR    yq)9)948;L;LQ;O;OQUQ[\]Q]_c_jkklllr3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  ra   rH  r(  r)  r  s      r0  ra   zIPolys.dmp_ground_trunc  rg  r3  c                x    |                      t          |                     |          | j                            S r,  )rL  rb   rH  r)  rn  s     r0  rb   zIPolys.dup_monic  s,    yq)9)94;GGHHHr3  c                    |                      t          |                     |          | j        dz
  | j                            S rJ  )rL  rc   rH  r(  r)  rn  s     r0  rc   zIPolys.dmp_ground_monic  s7    /a0@0@$*Q,PTP[\\]]]r3  c                    t          |                     |          |                     |          | j                  \  }}}||                     |          |                     |          fS r,  )rh   rH  r)  rL  r.  rO  rv  rP  FGs         r0  rh   zIPolys.dup_extract  sX    dmmA..a0@0@$+NN1a4??1%%tq'9'9::r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}}||                     |          |                     |          fS rJ  )ri   rH  r(  r)  rL  r  s         r0  ri   zIPolys.dmp_ground_extract  sc    $T]]1%5%5t}}Q7G7GTUW[Wbcc1a4??1%%tq'9'9::r3  c                    t          |                     |                              d                                          | j                  \  }}|                     |          |                     |          fS rJ  )rj   rF  r1  rH  r)  rL  r.  rO  r  r  s       r0  rj   zIPolys.dup_real_imag  s^    TYYq\\..q11::<<dkJJ1""DOOA$6$677r3  c                x    |                      t          |                     |          | j                            S r,  )rL  rk   rH  r)  rn  s     r0  rk   zIPolys.dup_mirror  s,    z$--*:*:DKHHIIIr3  c                z    |                      t          |                     |          || j                            S r,  )rL  rl   rH  r)  r  s      r0  rl   zIPolys.dup_scale  r  r3  c                z    |                      t          |                     |          || j                            S r,  )rL  rm   rH  r)  r  s      r0  rm   zIPolys.dup_shift  r  r3  c                    |                      t          |                     |          || j        dz
  | j                            S rJ  )rL  rn   rH  r(  r)  r  s      r0  rn   zIPolys.dmp_shift  s6    yq)9)91djlDKXXYYYr3  c           	         |                      t          |                     |          |                     |          |                     |          | j                            S r,  )rL  ro   rH  r)  r  s       r0  ro   zIPolys.dup_transform  sN    }T]]1-=-=t}}Q?O?OQUQ^Q^_`QaQacgcnoopppr3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  rp   rH  r)  ru  s      r0  rp   zIPolys.dup_compose  s:    {4==+;+;T]]1=M=Mt{[[\\\r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  rq   rH  r(  r)  ru  s      r0  rq   zIPolys.dmp_compose  sE    {4==+;+;T]]1=M=MtzZ[|]a]hiijjjr3  c                    t          |                     |          | j                  }t          t	          | j        |                    S r,  )rr   rH  r)  r  r  rL  )r.  rO  
componentss      r0  rr   zIPolys.dup_decompose  s9    "4==#3#3T[AA
C44555r3  c                    t          |                     |          | j        dz
  | j                  }|                                                     |          S rJ  )rs   rH  r(  r)  r7  rL  r.  rO  r  s      r0  rs   zIPolys.dmp_lift   sE    $--**DJqL$+FF~~**6222r3  c                R    t          |                     |          | j                  S r,  )rt   rH  r)  rn  s     r0  rt   zIPolys.dup_sign_variations$  r  r3  Fc                    t          |                     |          | j        |          \  }}|r.|                     | j                                                  }n| }||                    |          fS )Nconvertr)  )ru   rH  r)  r5  get_ringrL  r.  rO  r  rP  r  rD  s         r0  ru   zIPolys.dup_clear_denoms'  so    a 0 0$+wOOO1 	::T[%9%9%;%;:<<DDD4??1%%&&r3  c                    t          |                     |          | j        dz
  | j        |          \  }}|r.|                     | j                                                  }n| }||                    |          fS )NrK  r  r  )rv   rH  r(  r)  r5  r  rL  r  s         r0  rv   zIPolys.dmp_clear_denoms.  sx    a 0 0$*Q,U\]]]1 	::T[%9%9%;%;:<<DDD4??1%%&&r3  c                z    |                      t          |                     |          || j                            S r,  )rL  rw   rH  r)  ri  s      r0  rw   zIPolys.dup_revert6  rk  r3  c                    t          |                     |          |                     |          | j                  \  }}|                     |          |                     |          fS r,  )rx   rH  r)  rL  r.  rO  rv  sr~  s        r0  rx   zIPolys.dup_half_gcdex9  sT    dmmA..a0@0@$+NN1""DOOA$6$677r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}|                     |          |                     |          fS rJ  )ry   rH  r(  r)  rL  r  s        r0  ry   zIPolys.dmp_half_gcdex<  s^    dmmA..a0@0@$*Q,PTP[\\1""DOOA$6$677r3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )rz   rH  r)  rL  r.  rO  rv  r  tr~  s         r0  rz   zIPolys.dup_gcdex?  sd    DMM!,,dmmA.>.>LL1a""DOOA$6$68J8JKKr3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r{   rH  r(  r)  rL  r  s         r0  r{   zIPolys.dmp_gcdexB  sl    DMM!,,dmmA.>.>
1dkZZ1a""DOOA$6$68J8JKKr3  c                    |                      t          |                     |          |                     |          | j                            S r,  )rL  r|   rH  r)  ru  s      r0  r|   zIPolys.dup_invertF  r  r3  c                    |                      t          |                     |          |                     |          | j        dz
  | j                            S rJ  )rL  r}   rH  r(  r)  ru  s      r0  r}   zIPolys.dmp_invertH  r  r3  c                    t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r,  )r~   rH  r)  r  r  rL  r.  rO  rv  prss       r0  r~   zIPolys.dup_euclidean_prsK  G    a 0 0$--2B2BDKPPC--...r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rJ  )r   rH  r(  r)  r  r  rL  r  s       r0  r   zIPolys.dmp_euclidean_prsN  Q    a 0 0$--2B2BDJqLRVR]^^C--...r3  c                    t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r,  )r   rH  r)  r  r  rL  r  s       r0  r   zIPolys.dup_primitive_prsQ  r  r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rJ  )r   rH  r(  r)  r  r  rL  r  s       r0  r   zIPolys.dmp_primitive_prsT  r  r3  c                    t          |                     |          |                     |          | j                  \  }}t          t	          | j        |                    |fS r,  )r   rH  r)  r  r  rL  r.  rO  rv  r  sress        r0  r   zIPolys.dup_inner_subresultantsX  sR    +DMM!,<,<dmmA>N>NPTP[\\	TS#..//66r3  c                    t          |                     |          |                     |          | j        dz
  | j                  \  }}t	          t          | j        |                    |fS rJ  )r   rH  r(  r)  r  r  rL  r  s        r0  r   zIPolys.dmp_inner_subresultants[  s^    ,T]]1-=-=t}}Q?O?OQUQ[\]Q]_c_jkk	TS#..//66r3  c                    t          |                     |          |                     |          | j                  }t          t	          | j        |                    S r,  )r   rH  r)  r  r  rL  r  s       r0  r   zIPolys.dup_subresultants_  r  r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }t	          t          | j        |                    S rJ  )r   rH  r(  r)  r  r  rL  r  s       r0  r   zIPolys.dmp_subresultantsb  r  r3  c                    t          |                     |          |                     |          | j                  \  }}|t          t	          | j        |                    fS r,  )r   rH  r)  r  r  rL  r.  rO  rv  resr  s        r0  r   zIPolys.dup_prs_resultantf  sP    $T]]1%5%5t}}Q7G7GUUST#dos334455r3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}| dd                              |          t          t          | j        |                    fS rJ  )r   rH  r(  r)  rL  r  r  r  s        r0  r   zIPolys.dmp_prs_resultanti  sq    $T]]1%5%5t}}Q7G7GTUW[WbccSQRR##C(($s4?C/H/H*I*IJJr3  c                    t          |                     |          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S rJ  )r   rH  r=  r(  r)  rL  )r.  rO  rv  r  r  s        r0  r   zIPolys.dmp_zz_modular_resultantm  sf    &t}}Q'7'7q9I9I4??[\K]K]_c_ijk_kmqmxyyABBx""3'''r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S rJ  )r   rH  r(  r)  rL  r.  rO  rv  r  s       r0  r   zIPolys.dmp_zz_collins_resultantp  T    &t}}Q'7'7q9I9I4:VW<Y]YdeeABBx""3'''r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }| dd                              |          S rJ  )r   rH  r(  r)  rL  r  s       r0  r   zIPolys.dmp_qq_collins_resultants  r  r3  c                z    t          |                     |          |                     |          | j                  S r,  )r   rH  r)  ru  s      r0  r   zIPolys.dup_resultantw  s.    T]]1--t}}Q/?/?MMMr3  c                    t          |                     |          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S rJ  )r   rH  r(  r)  rC  r  rL  r  s       r0  r   zIPolys.dmp_resultanty  sh    DMM!,,dmmA.>.>
1dkZZc4   	8&&s+++Jr3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_discriminant  s     a 0 0$+>>>r3  c                    t          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S rJ  )r   rH  r(  r)  rC  r  rL  )r.  rO  discs      r0  r   zIPolys.dmp_discriminant  sZ    a 0 0$*Q,LLdD!! 	8&&t,,,Kr3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r   rH  r)  rL  r.  rO  rv  Hr  r  s         r0  r   zIPolys.dup_rr_prs_gcd  d     q!1!14==3C3CT[QQ1a""DOOA$6$68J8JKKr3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r   rH  r)  rL  r   s         r0  r   zIPolys.dup_ff_prs_gcd  r"  r3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r   rH  r(  r)  rL  r   s         r0  r   zIPolys.dmp_rr_prs_gcd  o     q!1!14==3C3CTZPQ\SWS^__1a""DOOA$6$68J8JKKr3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r   rH  r(  r)  rL  r   s         r0  r   zIPolys.dmp_ff_prs_gcd  r%  r3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r   rH  r)  rL  r   s         r0  r   zIPolys.dup_zz_heu_gcd  r"  r3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r   rH  r(  r)  rL  r   s         r0  r   zIPolys.dmp_zz_heu_gcd  r%  r3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r   rH  r)  rL  r   s         r0  r   zIPolys.dup_qq_heu_gcd  r"  r3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r   rH  r(  r)  rL  r   s         r0  r   zIPolys.dmp_qq_heu_gcd  r%  r3  c                    t          |                     |          |                     |          | j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r   rH  r)  rL  r   s         r0  r   zIPolys.dup_inner_gcd  sd    a 0 0$--2B2BDKPP1a""DOOA$6$68J8JKKr3  c                   t          |                     |          |                     |          | j        dz
  | j                  \  }}}|                     |          |                     |          |                     |          fS rJ  )r   rH  r(  r)  rL  r   s         r0  r   zIPolys.dmp_inner_gcd  sn    a 0 0$--2B2BDJqLRVR]^^1a""DOOA$6$68J8JKKr3  c                    t          |                     |          |                     |          | j                  }|                     |          S r,  )r   rH  r)  rL  r.  rO  rv  r!  s       r0  r   zIPolys.dup_gcd  ?    DMM!$$dmmA&6&6DDq!!!r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rJ  )r   rH  r(  r)  rL  r.  s       r0  r   zIPolys.dmp_gcd  G    DMM!$$dmmA&6&6
1dkRRq!!!r3  c                    t          |                     |          |                     |          | j                  }|                     |          S r,  )r   rH  r)  rL  r.  s       r0  r   zIPolys.dup_rr_lcm  ?    t}}Q''q)9)94;GGq!!!r3  c                    t          |                     |          |                     |          | j                  }|                     |          S r,  )r   rH  r)  rL  r.  s       r0  r   zIPolys.dup_ff_lcm  r3  r3  c                    t          |                     |          |                     |          | j                  }|                     |          S r,  )r   rH  r)  rL  r.  s       r0  r   zIPolys.dup_lcm  r/  r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rJ  )r   rH  r(  r)  rL  r.  s       r0  r   zIPolys.dmp_rr_lcm  G    t}}Q''q)9)94:a<UUq!!!r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rJ  )r   rH  r(  r)  rL  r.  s       r0  r   zIPolys.dmp_ff_lcm  r7  r3  c                    t          |                     |          |                     |          | j        dz
  | j                  }|                     |          S rJ  )r   rH  r(  r)  rL  r.  s       r0  r   zIPolys.dmp_lcm  r1  r3  c                V    t          |                     |          | j                  }|S r,  )rd   rH  r)  r.  rO  conts      r0  rd   zIPolys.dup_content  s$    4==++T[99r3  c                    t          |                     |          | j                  \  }}||                     |          fS r,  )rf   rH  r)  rL  r.  rO  r<  prims       r0  rf   zIPolys.dup_primitive  s:    "4==#3#3T[AA
dT__T****r3  c                    t          |                     |          | j        dz
  | j                  }t	          |t
                    r| dd                              |          S |S rJ  )r   rH  r(  r)  rC  r  rL  r;  s      r0  r   zIPolys.dmp_content  sZ    4==++TZ\4;GGdD!! 	8&&t,,,Kr3  c                &   t          |                     |          | j        dz
  | j                  \  }}t	          |t
                    r2| dd                              |          |                     |          fS ||                     |          fS rJ  )r   rH  r(  r)  rC  r  rL  r>  s       r0  r   zIPolys.dmp_primitive  s    "4==#3#3TZ\4;OO
ddD!! 	1H''--tt/D/DEE$//$//00r3  c                h    t          |                     |          | j        dz
  | j                  }|S rJ  )re   rH  r(  r)  r;  s      r0  re   zIPolys.dmp_ground_content  s,    !$--"2"2DJqL$+NNr3  c                    t          |                     |          | j        dz
  | j                  \  }}||                     |          fS rJ  )rg   rH  r(  r)  rL  r>  s       r0  rg   zIPolys.dmp_ground_primitive  sB    )$--*:*:DJqL$+VV
ddood++,,r3  Tc                F   t          |                     |          |                     |          | j        |          }|s3|\  }}}}|||                     |          |                     |          fS |\  }}|                     |          |                     |          fS )Ninclude)r   rH  r)  rL  	r.  rO  rv  rF  r  cfcgr  r  s	            r0  r   zIPolys.dup_cancel  s    DMM!,,dmmA.>.>U\]]] 	<!LBAqDOOA..0B0BCCDAqOOA&&(:(:;;r3  c                X   t          |                     |          |                     |          | j        dz
  | j        |          }|s3|\  }}}}|||                     |          |                     |          fS |\  }}|                     |          |                     |          fS )NrK  rE  )r   rH  r(  r)  rL  rG  s	            r0  r   zIPolys.dmp_cancel  s    DMM!,,dmmA.>.>
1dkcjkkk 	<!LBAqDOOA..0B0BCCDAqOOA&&(:(:;;r3  c           	          t                               |          t          t           j        |                     j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  rL  .0rv  kr.  s      r0  
<listcomp>z-IPolys.dup_trial_division.<locals>.<listcomp>  .    >>>TQ$//!$$a(>>>r3  )r   rH  r  r  r)  r.  rO  factorss   `  r0  r   zIPolys.dup_trial_division  sR    $T]]1%5%5tCw<W<W7X7XZ^Zeff>>>>W>>>>r3  c           	          t                               |          t          t           j        |                     j        dz
   j                  } fd|D             S )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z-IPolys.dmp_trial_division.<locals>.<listcomp>  rR  r3  )r   rH  r  r  r(  r)  rS  s   `  r0  r   zIPolys.dmp_trial_division  s^    $T]]1%5%5tCw<W<W7X7XZ^ZdefZfhlhstt>>>>W>>>>r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_zz_mignotte_bound  s     $T]]1%5%5t{CCCr3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_zz_mignotte_bound  s(    $T]]1%5%5tz!|T[QQQr3  c           
     L   | j         }t          | ||           ||           ||           ||           ||          | j                  \  }}	}
}|                     |          |                     |	          |                     |
          |                     |          fS r,  )rH  r   r)  rL  )r.  r  rO  rv  r~  r  r  Dr  r!  STs               r0  r   zIPolys.dup_zz_hensel_step  s    M'11Q441qqttQQqTT11Q44UU
1a""DOOA$6$68J8JDOO\]L^L^__r3  c           
         | j         }t          | ||          t          t          ||                    || j                  }t          t          | j        |                    S r,  )rH  r   r  r  r)  rL  )r.  r  rO  f_listlrZ  r  s          r0  r   zIPolys.dup_zz_hensel_lift  sR    M"1aaddDQ,@,@!T[QQC//000r3  c                p     t                               |           j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z,IPolys.dup_zz_zassenhaus.<locals>.<listcomp>  rR  r3  )r   rH  r)  rS  s   `  r0  r   zIPolys.dup_zz_zassenhaus  s:    #DMM!$4$4dkBB>>>>W>>>>r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_zz_irreducible_p       #DMM!$4$4dkBBBr3  c                V    t          |                     |          | j        |          S )N)irreducible)r   rH  r)  )r.  rO  re  s      r0  r   zIPolys.dup_cyclotomic_p  s%    a 0 0$+;WWWWr3  c                V    t          || j                  }|                     |          S r,  )r   r)  rL  )r.  rj  r  s      r0  r   zIPolys.dup_zz_cyclotomic_poly	  s%    "1dk22q!!!r3  c                    t          |                     |          | j                  }||S t          t	          | j        |                    S r,  )r   rH  r)  r  r  rL  r  s      r0  r   zIPolys.dup_zz_cyclotomic_factor  sC    )$--*:*:DKHH>MDOV44555r3  c                0    t          |||| j                  S r,  )r   r)  )r.  Ecscts       r0  r   zIPolys.dmp_zz_wang_non_divisors  s    '2r4;???r3  c           
       
 | dd          

fd|D             }| d d         }t          t          |j        |                    }t          |                     |          |||||| j        dz
  | j                  \  }}}	|                     |          t          t          |j        |                    t          t          
j        |	                    fS )NrK  c                D    g | ]\  }}                     |          |fS r-  )rH  )rO  r  rP  mvs      r0  rQ  z2IPolys.dmp_zz_wang_lead_coeffs.<locals>.<listcomp>  s,    111dar{{1~~q!111r3  )r  r  rH  r   r(  r)  rL  )r.  rO  r\  rj  ri  r!  r  uvHHCCrn  s             @r0  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]]]r3  c                    t          t          t          | j        |                    ||| j                  }t          t          | j        |                    S r,  )r   r  r  rH  r)  rL  )r.  r  r  r  r  s        r0  r   zIPolys.dup_zz_diophantine%  sE    #DT]A)>)>$?$?At{SSC00111r3  c           	         t          t          t          | j        |                    |                     |          |||| j        dz
  | j                  }t          t          | j        |                    S rJ  )r   r  r  rH  r(  r)  rL  )r.  r  rP  r  r?  r  r  s          r0  r   zIPolys.dmp_zz_diophantine*  sf    #DT]A)>)>$?$?qAQAQSTVWYZ\`\fgh\hjnjuvvC00111r3  c           	     `   | d d         }| dd          }t          t          |j        |                    }t          t          |j        |                    }t          |                     |          ||||| j        dz
  | j                  }t          t          | j        |                    S rJ  )r  r  rH  r   r(  r)  rL  )	r.  rO  r!  r  r  r  ro  rn  r  s	            r0  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1r3  c                     t                               |           j        dz
   j        ||          } fd|D             S )NrK  )modseedc                :    g | ]}                     |          S r-  rM  rO  rv  r.  s     r0  rQ  z&IPolys.dmp_zz_wang.<locals>.<listcomp>9  s%    666##666r3  )r   rH  r(  r)  )r.  rO  rv  rw  rT  s   `    r0  r   zIPolys.dmp_zz_wang7  sJ    dmmA..
1dksY]^^^6666W6666r3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                :    g | ]}                     |          S r-  rM  ry  s     r0  rQ  z,IPolys.dup_zz_factor_sqf.<locals>.<listcomp>=  s%    >>>++>>>r3  )r   rH  r)  r.  rO  coeffrT  s   `   r0  r   zIPolys.dup_zz_factor_sqf;  sD    *4==+;+;T[IIw>>>>W>>>??r3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z(IPolys.dup_zz_factor.<locals>.<listcomp>A  .    FFFTQ$//!,,a0FFFr3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_zz_factor?  D    &t}}Q'7'7EEwFFFFWFFFGGr3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z(IPolys.dmp_zz_factor.<locals>.<listcomp>D  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_zz_factorB  L    &t}}Q'7'7At{SSwFFFFWFFFGGr3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dup_qq_i_factor.<locals>.<listcomp>H  r  r3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_qq_i_factorF  D    (q)9)94;GGwFFFFWFFFGGr3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dmp_qq_i_factor.<locals>.<listcomp>K  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_qq_i_factorI  L    (q)9)94:a<UUwFFFFWFFFGGr3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dup_zz_i_factor.<locals>.<listcomp>O  r  r3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_zz_i_factorM  r  r3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dmp_zz_i_factor.<locals>.<listcomp>R  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_zz_i_factorP  r  r3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z)IPolys.dup_ext_factor.<locals>.<listcomp>V  r  r3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_ext_factorT  sD    'a(8(8$+FFwFFFFWFFFGGr3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z)IPolys.dmp_ext_factor.<locals>.<listcomp>Y  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_ext_factorW  sL    'a(8(8$*Q,TTwFFFFWFFFGGr3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z(IPolys.dup_gf_factor.<locals>.<listcomp>]  r  r3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_gf_factor[  r  r3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z(IPolys.dmp_gf_factor.<locals>.<listcomp>`  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_gf_factor^  r  r3  c                z     t                               |           j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dup_factor_list.<locals>.<listcomp>d  r  r3  )r   rH  r)  r|  s   `   r0  r   zIPolys.dup_factor_listb  r  r3  c                p     t                               |           j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z2IPolys.dup_factor_list_include.<locals>.<listcomp>g  rR  r3  )r   rH  r)  rS  s   `  r0  r   zIPolys.dup_factor_list_includee  s:    )$--*:*:DKHH>>>>W>>>>r3  c                     t                               |           j        dz
   j                  \  }}| fd|D             fS )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dmp_factor_list.<locals>.<listcomp>k  r  r3  )r   rH  r(  r)  r|  s   `   r0  r   zIPolys.dmp_factor_listi  r  r3  c                     t                               |           j        dz
   j                  } fd|D             S )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z2IPolys.dmp_factor_list_include.<locals>.<listcomp>n  rR  r3  )r   rH  r(  r)  rS  s   `  r0  r   zIPolys.dmp_factor_list_includel  sB    )$--*:*:DJqL$+VV>>>>W>>>>r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_irreducible_pp  s      q!1!14;???r3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_irreducible_pr  s(     q!1!14:a<MMMr3  c                    t          |                     |          | j                  }t          t	          | j        |                    S r,  )r   rH  r)  r  r  rL  )r.  rO  seqs      r0  r   zIPolys.dup_sturmu  s9    a(($+66C--...r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_sqf_py  s     q))4;777r3  c                d    t          |                     |          | j        dz
  | j                  S rJ  )r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_sqf_p{  s(    q))4:a<EEEr3  c                    t          |                     |          | j        dz
  | j                  }|                                                     |          S rJ  )r   rH  r(  r)  r7  rL  ri  s      r0  r   zIPolys.dmp_norm~  sE    T]]1%%tz!|T[AA~~**1---r3  c                    t          |                     |          | j                  \  }}}||                     |          |                                                     |          fS r,  )r   rH  r)  rL  r7  r.  rO  r  r  Rs        r0  r   zIPolys.dup_sqf_norm  sV    t}}Q//==1a4??1%%t~~'7'7'B'B1'E'EFFr3  c                    t          |                     |          | j        dz
  | j                  \  }}}||                     |          |                                                     |          fS rJ  )r   rH  r(  r)  rL  r7  r  s        r0  r   zIPolys.dmp_sqf_norm  s^    t}}Q//At{KK1a4??1%%t~~'7'7'B'B1'E'EFFr3  c                x    |                      t          |                     |          | j                            S r,  )rL  r   rH  r)  rn  s     r0  r   zIPolys.dup_gf_sqf_part  ,    t}}Q/?/?MMNNNr3  c                x    |                      t          |                     |          | j                            S r,  )rL  r   rH  r)  rn  s     r0  r   zIPolys.dmp_gf_sqf_part  r  r3  c                x    |                      t          |                     |          | j                            S r,  )rL  r   rH  r)  rn  s     r0  r   zIPolys.dup_sqf_part  s,    |DMM!,<,<dkJJKKKr3  c                    |                      t          |                     |          | j        dz
  | j                            S rJ  )rL  r   rH  r(  r)  rn  s     r0  r   zIPolys.dmp_sqf_part  s4    |DMM!,<,<djlDKXXYYYr3  c                ~     t                               |           j        |          \  }}| fd|D             fS )Nallc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dup_gf_sqf_list.<locals>.<listcomp>  r  r3  )r   rH  r)  r.  rO  r  r}  rT  s   `    r0  r   zIPolys.dup_gf_sqf_list  sI    (q)9)94;CPPPwFFFFWFFFGGr3  c                     t                               |           j        dz
   j        |          \  }}| fd|D             fS )NrK  r  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z*IPolys.dmp_gf_sqf_list.<locals>.<listcomp>  r  r3  )r   rH  r(  r)  r  s   `    r0  r   zIPolys.dmp_gf_sqf_list  sR    (q)9)94:a<Z]^^^wFFFFWFFFGGr3  c                ~     t                               |           j        |          \  }}| fd|D             fS )Nr  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z'IPolys.dup_sqf_list.<locals>.<listcomp>  r  r3  )r   rH  r)  r  s   `    r0  r   zIPolys.dup_sqf_list  sI    %dmmA&6&6MMMwFFFFWFFFGGr3  c                t     t                               |           j        |          } fd|D             S )Nr  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z/IPolys.dup_sqf_list_include.<locals>.<listcomp>  rR  r3  )r   rH  r)  r.  rO  r  rT  s   `   r0  r   zIPolys.dup_sqf_list_include  s?    &t}}Q'7'7#NNN>>>>W>>>>r3  c                     t                               |           j        dz
   j        |          \  }}| fd|D             fS )NrK  r  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z'IPolys.dmp_sqf_list.<locals>.<listcomp>  r  r3  )r   rH  r(  r)  r  s   `    r0  r   zIPolys.dmp_sqf_list  sR    %dmmA&6&6
1dkWZ[[[wFFFFWFFFGGr3  c                     t                               |           j        dz
   j        |          } fd|D             S )NrK  r  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z/IPolys.dmp_sqf_list_include.<locals>.<listcomp>  rR  r3  )r   rH  r(  r)  r  s   `   r0  r   zIPolys.dmp_sqf_list_include  sH    &t}}Q'7'7At{X[\\\>>>>W>>>>r3  c                p     t                               |           j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z'IPolys.dup_gff_list.<locals>.<listcomp>  rR  r3  )r   rH  r)  rS  s   `  r0  r   zIPolys.dup_gff_list  s:    t}}Q//==>>>>W>>>>r3  c                     t                               |           j        dz
   j                  } fd|D             S )NrK  c                D    g | ]\  }}                     |          |fS r-  rM  rN  s      r0  rQ  z'IPolys.dmp_gff_list.<locals>.<listcomp>  rR  r3  )r   rH  r(  r)  rS  s   `  r0  r   zIPolys.dmp_gff_list  sB    t}}Q//At{KK>>>>W>>>>r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_root_upper_bound  rc  r3  c                R    t          |                     |          | j                  S r,  )r   rH  r)  rn  s     r0  r   zIPolys.dup_root_lower_bound  rc  r3  c                X    t          |                     |          || j        |          S )N)fast)r   rH  r)  )r.  rO  Mr  s       r0  r   z IPolys.dup_step_refine_real_root  s(    (q)9)91dkPTUUUUr3  c           
     `    t          |                     |          || j        |||||          S )N)epsstepsdisjointr  mobius)r   rH  r)  )r.  rO  r  r  r  r  r  r  s           r0  r   z!IPolys.dup_inner_refine_real_root  sD    )$--*:*:At{PS[`ksz~  HN  O  O  O  	Or3  c           
     `    t          |                     |          ||| j        ||||          S N)r  r  r  r  )r   rH  r)  r.  rO  r  r  r  r  r  r  s           r0  r   z!IPolys.dup_outer_refine_real_root  sC    )$--*:*:Aq$+SV^cnv  ~B  C  C  C  	Cr3  c           
     `    t          |                     |          ||| j        ||||          S r  )r   rH  r)  r  s           r0  r   zIPolys.dup_refine_real_root  s2    #DMM!$4$4aDKSX]hpw{||||r3  c                X    t          |                     |          | j        ||          S )N)r  r  )r   rH  r)  )r.  rO  r  r  s       r0  r   z#IPolys.dup_inner_isolate_real_roots  s(    +DMM!,<,<dksY]^^^^r3  c           	     ^    t          |                     |          | j        |||||          S )N)r  infsupr  r  )r   rH  r)  )r.  rO  r  r  r  r  r  s          r0  r   z'IPolys.dup_inner_isolate_positive_roots  B    /a0@0@$+SV\_ehos  }C  D  D  D  	Dr3  c           	     ^    t          |                     |          | j        |||||          S )N)r  r  r  r  r  )r   rH  r)  )r.  rO  r  r  r  r  r  s          r0  r   z'IPolys.dup_inner_isolate_negative_roots  r  r3  c           	     ^    t          |                     |          | j        |||||          S N)r  r  r  r  blackbox)r   rH  r)  r.  rO  r  r  r  r  r  s          r0  r   z!IPolys.dup_isolate_real_roots_sqf  sA    )$--*:*:DKSVY_bim  yA  B  B  B  	Br3  c           	     ^    t          |                     |          | j        |||||          S )N)r  r  r  basisr  )r   rH  r)  )r.  rO  r  r  r  r  r  s          r0  r   zIPolys.dup_isolate_real_roots  s1    %dmmA&6&6RU[^fkrvwwwwr3  c           
     z    t          t          t          | j        |                    | j        ||||||          S )N)r  r  r  strictr  r  )r   r  r  rH  r)  )r.  r  r  r  r  r  r  r  s           r0  r   z"IPolys.dup_isolate_real_roots_list  sU    *4DM50I0I+J+JDK]`fior  |B  JO  VZ  [  [  [  	[r3  c                X    t          |                     |          | j        ||          S )N)r  r  )r   rH  r)  )r.  rO  r  r  s       r0  r   zIPolys.dup_count_real_roots  s(    #DMM!$4$4dksPSTTTTr3  c                Z    t          |                     |          | j        |||          S )N)r  r  exclude)r   rH  r)  )r.  rO  r  r  r  s        r0  r   zIPolys.dup_count_complex_roots  s+    &t}}Q'7'7#SV`ghhhhr3  c                \    t          |                     |          | j        ||||          S )N)r  r  r  r  )r   rH  r)  )r.  rO  r  r  r  r  s         r0  r   z$IPolys.dup_isolate_complex_roots_sqf  s/    ,T]]1-=-=t{PSY\bepxyyyyr3  c           	     ^    t          |                     |          | j        |||||          S r  )r   rH  r)  r  s          r0  r   z IPolys.dup_isolate_all_roots_sqf  s=    (q)9)94;CUX^ahlw  A  A  A  	Ar3  c                \    t          |                     |          | j        ||||          S )N)r  r  r  r  )r   rH  r)  )r.  rO  r  r  r  r  s         r0  r   zIPolys.dup_isolate_all_roots  s.    $T]]1%5%5t{QTZ]dhiiiir3  c           	         ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_1rK  )sympy.polys.specialpolysr  tupler  rL  r(  r)  )r.  r  s     r0  fateman_poly_F_1zIPolys.fateman_poly_F_1  D    AAAAAAS*>*>tz!|T[*Y*YZZ[[[r3  c           	         ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_2rK  )r  r  r  r  rL  r(  r)  )r.  r  s     r0  fateman_poly_F_2zIPolys.fateman_poly_F_2  r  r3  c           	         ddl m} t          t          | j         || j        dz
  | j                                      S )Nr   )dmp_fateman_poly_F_3rK  )r  r  r  r  rL  r(  r)  )r.  r  s     r0  fateman_poly_F_3zIPolys.fateman_poly_F_3  r  r3  c                     t           fd                     |                                          D                       S )Nc                Z    g | ]'}j         j                            |j                   (S r-  )r)  domr  )rO  rP  r.  s     r0  rQ  z&IPolys.to_gf_dense.<locals>.<listcomp>  s/    jjja$+/11!T[AAjjjr3  )r   rF  rH  r9  s   ` r0  to_gf_densezIPolys.to_gf_dense  s?    jjjj499U\K]K]KfKfKhKhjjjkkkr3  c                n    |                      t          || j        dz
  | j        j                            S rJ  )r@  rS   r(  r)  r  r9  s     r0  from_gf_densezIPolys.from_gf_dense  s*    ~~k'4:a<QQRRRr3  c                F    t          |                     |                    S r,  )r   r  rn  s     r0  r   zIPolys.gf_degree  s    ))!,,---r3  c                \    t          |                     |          | j        j                  S r,  )r   r  r)  r  rn  s     r0  r   zIPolys.gf_LC  $    T%%a(($+/:::r3  c                \    t          |                     |          | j        j                  S r,  )r   r  r)  r  rn  s     r0  r   zIPolys.gf_TC  r  r3  c                l    |                      t          |                     |                              S r,  )r  r   r  rn  s     r0  r   zIPolys.gf_strip  s,    !!(4+;+;A+>+>"?"?@@@r3  c                    |                      t          |                     |          | j        j                            S r,  )r  r   r  r)  rv  rn  s     r0  gf_trunczIPolys.gf_trunc  s2    !!(4+;+;A+>+>"P"PQQQr3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  rn  s     r0  	gf_normalzIPolys.gf_normal  ;    !!(4+;+;A+>+>QUQ\Q`"a"abbbr3  c                r    |                      t          || j        j        | j        j                            S r,  )r  r   r)  rv  r  rn  s     r0  r   zIPolys.gf_from_dict  s*    !!,q$+/4;?"S"STTTr3  c                `    t          |                     |          | j        j        |          S N)	symmetric)r   r  r)  rv  r.  rO  r  s      r0  r   zIPolys.gf_to_dict  s)    $**1--t{)TTTTr3  c                \    |                      t          || j        j                            S r,  )r  r   r)  rv  rn  s     r0  r   zIPolys.gf_from_int_poly  s%    !!"21dko"F"FGGGr3  c                `    t          |                     |          | j        j        |          S r  )r   r  r)  rv  r  s      r0  r   zIPolys.gf_to_int_poly  s)    d..q114;?iXXXXr3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  rn  s     r0  r   zIPolys.gf_neg  8    !!&)9)9!)<)<dkot{"_"_```r3  c                    |                      t          |                     |          || j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r  s      r0  r   zIPolys.gf_add_ground  =    !!-0@0@0C0CQY]YdYh"i"ijjjr3  c                    |                      t          |                     |          || j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r  s      r0  r   zIPolys.gf_sub_ground  r  r3  c                    |                      t          |                     |          || j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r  s      r0  r   zIPolys.gf_mul_ground  r  r3  c                    |                      t          |                     |          || j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r  s      r0  r   zIPolys.gf_quo_ground  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  ru  s      r0  r   zIPolys.gf_add  N    !!&)9)9!)<)<d>N>Nq>Q>QSWS^Sbdhdods"t"tuuur3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  ru  s      r0  r   zIPolys.gf_sub  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  ru  s      r0  r   zIPolys.gf_mul
  r  r3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  rn  s     r0  r   zIPolys.gf_sqr  r	  r3  c           	         |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r}  s       r0  r   zIPolys.gf_add_mul  |    !!*T-=-=a-@-@$BRBRSTBUBUW[WgWghiWjWjlplwl{  ~B  ~I  ~M  #N  #N  O  O  	Or3  c           	         |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  r}  s       r0  r   zIPolys.gf_sub_mul  r  r3  c           
         |                      t          t          t          | j        |                    | j        j        | j        j                            S r,  )r  r   r  r  r  r)  rv  r  )r.  r  s     r0  r   zIPolys.gf_expand  sB    !!)DT5Eq1I1I,J,JDKO]a]h]l"m"mnnnr3  c                    t          |                     |          |                     |          | j        j        | j        j                  \  }}|                     |          |                     |          fS r,  )r   r  r)  rv  r  r  r  s        r0  r   zIPolys.gf_div  sg    d&&q))4+;+;A+>+>QUQ\Q`aa1!!!$$d&8&8&;&;;;r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  ru  s      r0  r   zIPolys.gf_rem  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r   r  r)  rv  r  ru  s      r0  r   zIPolys.gf_quo  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  ru  s      r0  r  zIPolys.gf_exquo  O    !!(4+;+;A+>+>@P@PQR@S@SUYU`Udfjfqfu"v"vwwwr3  c                    |                      t          |                     |          || j        j                            S r,  )r  r  r  r)  r  ri  s      r0  r  zIPolys.gf_lshift!  4    !!)D,<,<Q,?,?DKO"T"TUUUr3  c                    |                      t          |                     |          || j        j                            S r,  )r  r  r  r)  r  ri  s      r0  r  zIPolys.gf_rshift#  r  r3  c                    |                      t          |                     |          || j        j        | j        j                            S r,  )r  r  r  r)  rv  r  ri  s      r0  r  zIPolys.gf_pow&  s=    !!&)9)9!)<)<aRVR]Ra"b"bcccr3  c           	         |                      t          |                     |          ||                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  )r.  rO  rj  rv  s       r0  r  zIPolys.gf_pow_mod(  sQ    !!*T-=-=a-@-@!TEUEUVWEXEXZ^ZeZikokvkz"{"{|||r3  c                   t          |                     |          |                     |          | j        j        | j        j                  \  }}}|                     |          |                     |          |                     |          fS r,  )r  r  r)  rv  r  r  )r.  rO  rv  r~  cffcfgs         r0  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Vr3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  ru  s      r0  r  zIPolys.gf_gcd.  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  ru  s      r0  r  zIPolys.gf_lcm0  r  r3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r	  r  r)  rv  r  ru  s      r0  r	  zIPolys.gf_gcdex2  r  r3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r
  r  r)  rv  r  rn  s     r0  r
  zIPolys.gf_monic5  r   r3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_diff7  s;    !!'$*:*:1*=*=t{PTP[P_"`"`aaar3  c                t    t          |                     |          || j        j        | j        j                  S r,  )r  r  r)  rv  r  r  s      r0  r  zIPolys.gf_eval:  s,    t''**At{PPPr3  c                t    t          |                     |          || j        j        | j        j                  S r,  )r  r  r)  rv  r  )r.  rO  r  s      r0  r  zIPolys.gf_multi_eval<  s,    T--a00!T[_dkoVVVr3  c                    |                      t          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  ru  s      r0  r  zIPolys.gf_compose?  sO    !!*T-=-=a-@-@$BRBRSTBUBUW[WbWfhlhshw"x"xyyyr3  c           	         |                      t          |                     |          |                     |          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  )r.  rv  r~  rO  s       r0  r  zIPolys.gf_compose_modA  s|    !!.1A1A!1D1DdFVFVWXFYFY[_[k[klm[n[nptp{p  BF  BM  BQ  #R  #R  S  S  	Sr3  c           	     V   |                      |          }|                      |          }|                      |          }|                      |          }t          |||||| j        j        | j        j                  \  }}|                     |          |                     |          fS r,  )r  r  r)  rv  r  r  )r.  r  brP  rj  rO  UVs           r0  r  zIPolys.gf_trace_mapD  s    QQQQAq!Q4;?DKOLL1!!!$$d&8&8&;&;;;r3  c                r    |                      t          || j        j        | j        j                            S r,  )r  r  r)  rv  r  r.  rj  s     r0  r  zIPolys.gf_randomL  s*    !!)At{"P"PQQQr3  c                r    |                      t          || j        j        | j        j                            S r,  )r  r  r)  rv  r  r3  s     r0  r  zIPolys.gf_irreducibleN  s*    !!.DKOT[_"U"UVVVr3  c                r    t          |                     |          | j        j        | j        j                  S r,  )r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_irred_p_ben_orQ  s*     !1!1!!4!4dkot{WWWr3  c                r    t          |                     |          | j        j        | j        j                  S r,  )r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_irred_p_rabinS  *     0 0 3 3T[_dkoVVVr3  c                r    t          |                     |          | j        j        | j        j                  S r,  )r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_irreducible_pU  r7  r3  c                r    t          |                     |          | j        j        | j        j                  S r,  )r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_sqf_pW  s*    ((++T[_dkoNNNr3  c                    |                      t          |                     |          | j        j        | j        j                            S r,  )r  r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_sqf_partZ  s;    !!+d.>.>q.A.A4;?TXT_Tc"d"deeer3  c                     t                               |           j        j         j        j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  r  rN  s      r0  rQ  z&IPolys.gf_sqf_list.<locals>.<listcomp>^  0    HHHtq!++A..2HHHr3  )r  r  r)  rv  r  r  s   `    r0  gf_sqf_listzIPolys.gf_sqf_list\  sN    $T%5%5a%8%8$+/4;?[[wHHHHwHHHHHr3  c                r    t          |                     |          | j        j        | j        j                  S r,  )r  r  r)  rv  r  rn  s     r0  r  zIPolys.gf_Qmatrix`  s*    $**1--t{PPPr3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z'IPolys.gf_berlekamp.<locals>.<listcomp>d  '    9991##A&&999r3  )r  r  r)  rv  r  rS  s   `  r0  r  zIPolys.gf_berlekampb  D    t//22DKOT[_UU99999999r3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  r=  rN  s      r0  rQ  z,IPolys.gf_ddf_zassenhaus.<locals>.<listcomp>h  0    AAA1$$$Q''+AAAr3  )r  r  r)  rv  r  rS  s   `  r0  r  zIPolys.gf_ddf_zassenhausf  sD    #D$4$4Q$7$7$+/ZZAAAAAAAAr3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z,IPolys.gf_edf_zassenhaus.<locals>.<listcomp>k  rC  r3  )r  r  r)  rv  r  r.  rO  rj  rT  s   `   r0  r  zIPolys.gf_edf_zassenhausi  sD    #D$4$4Q$7$7$+/ZZ99999999r3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                D    g | ]\  }}                     |          |fS r-  r=  rN  s      r0  rQ  z'IPolys.gf_ddf_shoup.<locals>.<listcomp>o  rG  r3  )r  r  r)  rv  r  rS  s   `  r0  r  zIPolys.gf_ddf_shoupm  sD    t//22DKOT[_UUAAAAAAAAr3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z'IPolys.gf_edf_shoup.<locals>.<listcomp>r  rC  r3  )r  r  r)  rv  r  rJ  s   `   r0  r  zIPolys.gf_edf_shoupp  rD  r3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z(IPolys.gf_zassenhaus.<locals>.<listcomp>v  rC  r3  )r  r  r)  rv  r  rS  s   `  r0  r  zIPolys.gf_zassenhaust  sD     0 0 3 3T[_dkoVV99999999r3  c                     t                               |           j        j         j        j                  } fd|D             S )Nc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z#IPolys.gf_shoup.<locals>.<listcomp>y  rC  r3  )r  r  r)  rv  r  rS  s   `  r0  r  zIPolys.gf_shoupw  sD    4++A..QQ99999999r3  c                     t                               |           j        j         j        j        |          \  }}| fd|D             fS )N)methodc                :    g | ]}                     |          S r-  r=  ry  s     r0  rQ  z(IPolys.gf_factor_sqf.<locals>.<listcomp>}  s'    @@@!**1--@@@r3  )r   r  r)  rv  r  )r.  rO  rT  r}  rT  s   `    r0  r   zIPolys.gf_factor_sqf{  sT    &t'7'7':':DKOT[_eklllw@@@@w@@@@@r3  c                     t                               |           j        j         j        j                  \  }}| fd|D             fS )Nc                D    g | ]\  }}                     |          |fS r-  r=  rN  s      r0  rQ  z$IPolys.gf_factor.<locals>.<listcomp>  r>  r3  )r!  r  r)  rv  r  r|  s   `   r0  r!  zIPolys.gf_factor~  sN    "4#3#3A#6#6YYwHHHHwHHHHHr3  )NNN)F)T)NN)NNNFF)NNNF)NF)NNNFFFr,  (,  __name__
__module____qualname____annotations__r1  r5  r7  r;  r=  r@  rF  rH  rL  r
   r   r   r   r   r   r   r   r   r   r   r   r   r   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   rL   rM   rN   rO   rP   rQ   rR   rT   rU   rW   rX   rY   rV   rZ   r[   r\   r^   r]   r_   r`   ra   rb   rc   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   rd   rf   r   r   re   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r?  r  r  r  r  r  r  r  r  r   r!  r-  r3  r0  r$  r$     s         "!!!JJJNNN             , , ,- - -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r3  r$  N(0  __doc__
__future__r   typingr   sympy.core.exprr   sympy.polys.domains.domainr   sympy.polys.orderingsr   rB  r	   sympy.polys.densearithr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   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   sympy.polys.densebasicrJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   sympy.polys.densetoolsrT   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   rq   rr   rs   rt   ru   rv   rw   sympy.polys.euclidtoolsrx   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   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-  r3  r0  <module>rk     s   > > " " " " " "             .$$$$$$111111333333------ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / 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 # " " " " "OI OI OI OI OI OI OI OI OI OIr3  