+
    ‹°³jc!  ã                   óð   € R t ^ RIHtHtHtHt ^ RIHtHtH	t	H
t
 ^ RIHtHt ^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHtHtHt ]R 4       t]R	 4       t]R
 4       t]]! R4      3R l4       t]RR l4       tR# )z/High-level polynomials manipulation functions. )ÚSÚBasicÚsymbolsÚDummy)ÚPolificationFailedÚComputationFailedÚMultivariatePolynomialErrorÚOptionError)Úallowed_flagsÚbuild_options)Úpoly_from_exprÚPoly)Úsymmetric_polyÚinterpolating_poly)Úsring)Únumbered_symbolsÚtakeÚpublicc                ó  € \        VRR.4       Rp\        V R4      '       g   RpV .p \        V .VO5/ VB w  r@VP                  p\	        W4      pVP                  p\        \        V4      4       Uu. uF  p\        V4      NK  	  pp. pV  FE  p	V	P                  4       w  r«pVP                  V
P                  ! V!  VP                  ! V!  34       KG  	  \        VX4       UUUu. uF  w  pw  rïWßP                  4       3NK  	  ppppVP                  '       g.   \        V4       F  w  pw  ppVP                  V4      V3W‡&   K   	  V'       g   Vw  pVP                  '       g   V# V'       d   VV3# VV3,           # u upi u upppi )a^  
Rewrite a polynomial in terms of elementary symmetric polynomials.

A symmetric polynomial is a multivariate polynomial that remains invariant
under any variable permutation, i.e., if `f = f(x_1, x_2, \dots, x_n)`,
then `f = f(x_{i_1}, x_{i_2}, \dots, x_{i_n})`, where
`(i_1, i_2, \dots, i_n)` is a permutation of `(1, 2, \dots, n)` (an
element of the group `S_n`).

Returns a tuple of symmetric polynomials ``(f1, f2, ..., fn)`` such that
``f = f1 + f2 + ... + fn``.

Examples
========

>>> from sympy.polys.polyfuncs import symmetrize
>>> from sympy.abc import x, y

>>> symmetrize(x**2 + y**2)
(-2*x*y + (x + y)**2, 0)

>>> symmetrize(x**2 + y**2, formal=True)
(s1**2 - 2*s2, 0, [(s1, x + y), (s2, x*y)])

>>> symmetrize(x**2 - y**2)
(-2*x*y + (x + y)**2, -2*y**2)

>>> symmetrize(x**2 - y**2, formal=True)
(s1**2 - 2*s2, -2*y**2, [(s1, x + y), (s2, x*y)])

Úformalr   TÚ__iter__F)r
   Úhasattrr   r   r   ÚrangeÚlenÚnextÚ
symmetrizeÚappendÚas_exprÚzipr   Ú	enumerateÚsubs)ÚFÚgensÚargsÚiterableÚRÚoptr   ÚiÚresultÚfÚpÚrÚmÚsÚ_ÚgÚpolysÚsymÚnon_syms   &*,                ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/polys/polyfuncs.pyr   r      sg  € ôB �$˜ 9Ð-Ô.à€Hä�1�j×!Ò!ØˆØˆCˆä�Ð"�TÒ"˜TÑ"�D€AØ�9‰9€Dä
˜Ó
#€CØ�k‰k€GÜ&+¬C°«IÔ&6Ó7Ñ&6 Œt�GŽ}Ñ&6€GÐ7à€FãˆØ—,‘,“.‰ˆˆaØ�‰�q—y’y 'Ñ*¨A¯IªI°tÑ,<Ð=Ö>ñ ô 03°7¸A¬Õ?©¡) !¡V aˆa—‘“Ó©€EÒ?à�:�:ˆ:Ü!*¨6Ö!2ÑˆA‰~��WØŸ™ %›¨'Ð2ˆF‹Iñ "3÷ Ø‰ˆà�:�:ˆ:ØˆçØ˜5�=Ð à˜U˜HÕ$Ð$ùò/ 8ùô @s   Á2E=Ã%Fc                óÀ  € \        V. 4        \        V .VO5/ VB w  r4\        P
                  TP                  rvTP                  '       d)   TP                  4        F  pYg,          T,           pK  	  T# \        Y74      TR,          rTP                  4        F  pYg,          \        T.TO5/ TB ,           pK!  	  T#   \         d   pTP                  u Rp?# Rp?ii ; i)aš  
Rewrite a polynomial in Horner form.

Among other applications, evaluation of a polynomial at a point is optimal
when it is applied using the Horner scheme ([1]).

Examples
========

>>> from sympy.polys.polyfuncs import horner
>>> from sympy.abc import x, y, a, b, c, d, e

>>> horner(9*x**4 + 8*x**3 + 7*x**2 + 6*x + 5)
x*(x*(x*(9*x + 8) + 7) + 6) + 5

>>> horner(a*x**4 + b*x**3 + c*x**2 + d*x + e)
e + x*(d + x*(c + x*(a*x + b)))

>>> f = 4*x**2*y**2 + 2*x**2*y + 2*x*y**2 + x*y

>>> horner(f, wrt=x)
x*(x*y*(4*y + 2) + y*(2*y + 1))

>>> horner(f, wrt=y)
y*(x*y*(4*x + 2) + x*(2*x + 1))

References
==========
[1] - https://en.wikipedia.org/wiki/Horner_scheme

Nºé   NN)r
   r   r   Úexprr   ÚZeroÚgenÚis_univariateÚ
all_coeffsr   Úhorner)	r)   r"   r#   r!   r&   ÚexcÚformr9   Úcoeffs	   &*,      r3   r<   r<   W   sÅ   € ôB �$˜ÔðÜ Ð1 DÒ1¨DÑ1‰ˆô —‘˜Ÿ™ˆ#à‡‡€Ø—\‘\–^ˆEØ•8˜eÕ#ŠDñ $ð €Kô �q“,  R¥ˆ4à—\‘\–^ˆEØ•8œf UÐ:¨TÒ:°TÑ:Õ:ŠDñ $ð €Køô ô Ø�x‰x�ûðús   ŽB< Â<CÃCÃCÃCc                óÔ  € \        V 4      p\        V \        4      '       d;   W9   d   \        W,          4      # \	        \        V P                  4       !  4      w  r4M¯\        V ^ ,          \        4      '       d<   \	        \        V !  4      w  r4W9   d!   \        WCP                  V4      ,          4      # MWV\        ^V^,           4      9   d   \        W^,
          ,          4      # \	        V 4      p\	        \        ^V^,           4      4      p \        W!W44      P                  4       #   \         d7    \        4       p\        Y%Y44      P                  4       P                  YQ4      u # i ; i)a½  
Construct an interpolating polynomial for the data points
evaluated at point x (which can be symbolic or numeric).

Examples
========

>>> from sympy.polys.polyfuncs import interpolate
>>> from sympy.abc import a, b, x

A list is interpreted as though it were paired with a range starting
from 1:

>>> interpolate([1, 4, 9, 16], x)
x**2

This can be made explicit by giving a list of coordinates:

>>> interpolate([(1, 1), (2, 4), (3, 9)], x)
x**2

The (x, y) coordinates can also be given as keys and values of a
dictionary (and the points need not be equispaced):

>>> interpolate([(-1, 2), (1, 2), (2, 5)], x)
x**2 + 1
>>> interpolate({-1: 2, 1: 2, 2: 5}, x)
x**2 + 1

If the interpolation is going to be used only once then the
value of interest can be passed instead of passing a symbol:

>>> interpolate([1, 4, 9], 5)
25

Symbolic coordinates are also supported:

>>> [(i,interpolate((a, b), i)) for i in range(1, 4)]
[(1, a), (2, b), (3, -a + 2*b)]
)r   Ú
isinstanceÚdictr   Úlistr   ÚitemsÚtupleÚindexr   r   ÚexpandÚ
ValueErrorr   r    )ÚdataÚxÚnÚXÚYÚds   &&    r3   ÚinterpolaterO   �   s  € ôT 	ˆD‹	€Aä�$œ×ÒØŒ9Ü�T•W“:ÐÜ”C˜Ÿ™›Ñ&Ó'‰ˆˆ1ä�d˜1•gœu×%Ò%Üœ˜T™
Ó#‰DˆAØŒvÜ˜Ÿ7™7 1›:�Ó'Ð'ð ð ”E˜!˜Q �U“OÔ#Ü˜ !�e�“~Ð%Ü�T“
ˆAÜ”U˜1˜a !�e“_Ó%ˆAðBÜ! !¨Ó-×4Ñ4Ó6Ð6øÜô BÜ‹GˆÜ! !¨Ó-×4Ñ4Ó6×;Ñ;¸AÓAÒAðBús   ÄD& Ä&>E'Å&E'rJ   c                óJ  aaa
€ ^ RI Hp \        \        V !  4      w  rE\	        V4      S,
          ^,
          pV^ 8  d   \        R4      hV! SV,           ^,           SV,           ^,           4      p\        \        SV4      4       FE  p\        SV,           ^,           4       F%  p	WyV3,          WI,          ,          WyV^,           3&   K'  	  KG  	  \        V^,           4       FZ  p\        SV,           ^,           4       F:  p	WyWh,
          3,          ) WY,          ,          WySV,           ^,           V,
          3&   K<  	  K\  	  VP                  4       ^ ,          o
\        VV
3R l\        S^,           4       4       4      \        VVV
3R l\        V^,           4       4       4      ,          # )a  
Returns a rational interpolation, where the data points are element of
any integral domain.

The first argument  contains the data (as a list of coordinates). The
``degnum`` argument is the degree in the numerator of the rational
function. Setting it too high will decrease the maximal degree in the
denominator for the same amount of data.

Examples
========

>>> from sympy.polys.polyfuncs import rational_interpolate

>>> data = [(1, -210), (2, -35), (3, 105), (4, 231), (5, 350), (6, 465)]
>>> rational_interpolate(data, 2)
(105*x**2 - 525)/(x + 1)

Values do not need to be integers:

>>> from sympy import sympify
>>> x = [1, 2, 3, 4, 5, 6]
>>> y = sympify("[-1, 0, 2, 22/5, 7, 68/7]")
>>> rational_interpolate(zip(x, y), 2)
(3*x**2 - 7*x + 2)/(x + 1)

The symbol for the variable can be changed if needed:
>>> from sympy import symbols
>>> z = symbols('z')
>>> rational_interpolate(data, 2, X=z)
(105*z**2 - 525)/(z + 1)

References
==========

.. [1] Algorithm is adapted from:
       http://axiom-wiki.newsynthesis.org/RationalInterpolation

)Úonesz'Too few values for the required degree.c              3   óR   <"  € T F  pSV,          SV,          ,          x € K  	  R # 5i©N© )Ú.0r'   rL   r+   s   & €€r3   Ú	<genexpr>Ú'rational_interpolate.<locals>.<genexpr>  s!   øé € Ð7Ñ%6 ��!•�q˜!•t—’Ó%6ùs   ƒ$'c              3   ón   <"  € T F*  pSVS,           ^,           ,          SV,          ,          x € K,  	  R# 5i)r6   NrT   )rU   r'   rL   Údegnumr+   s   & €€€r3   rV   rW     s*   øé € ÐA±L¨q�!�A˜•J •NÕ# a¨¥d×*Ò*³Lùs   ƒ25)
Úsympy.matrices.denserQ   rC   r   r   r	   r   ÚmaxÚ	nullspaceÚsum)rI   rY   rL   rQ   ÚxdataÚydataÚkÚcÚjr'   r+   s   &ff       @r3   Úrational_interpolaterc   Ï   sD  ú€ õR *äœ˜T™
Ó#�L€EäˆE‹
�VÕ˜aÕ€AØˆ1„uÜÐCÓDÐDÙˆV�a�Z˜!�^˜V a�Z¨!�^Ó,€AÜ”3�v˜q“>Ö"ˆÜ�v •z A•~Ö&ˆAØ˜q˜D�' %¥(Õ*ˆA��Q•ˆh‹Kó 'ñ #ô �1�q•5Ž\ˆÜ�v •z A•~Ö&ˆAØ()¨Q­U¨(­ |°EµHÕ'<ˆA�˜!•˜a• !Õ#Ð#Ó$ó 'ñ ð 	
�‰‹�aÕ€AÜÕ7¤U¨6°A­:Ô%6Ó7Ó7ÜÖA´E¸!¸a½%´LÓAÓAõBð Có    Nc                óº  € \        V. 4       \        V\        4      '       d   V3V,           Rr \        V .VO5/ VB w  rT P                  '       d   \        R4      hT P                  4       pT^8  d   \        R4      hTf   \        R^R7      p\        Y4      pT\        T4      8w  d   \        RT: R\        T4      : 24      hT P                  4       T P                  4       r‡. R
r©\        TR	,          4       F<  w  r¼\!        T^,           T4      pY¬T,          ,          pT	P#                  YÜ34       T
) p
K>  	  T	#   \         d   p\        R^T4      hRp?ii ; i)zÿ
Generate Viete's formulas for ``f``.

Examples
========

>>> from sympy.polys.polyfuncs import viete
>>> from sympy import symbols

>>> x, a, b, c, r1, r2 = symbols('x,a:c,r1:3')

>>> viete(a*x**2 + b*x + c, [r1, r2], x)
[(r1 + r2, -b/a), (r1*r2, c/a)]

NÚvietez(multivariate polynomials are not allowedz8Cannot derive Viete's formulas for a constant polynomialr+   )Ústartz	required z roots, got r5   éÿÿÿÿ)r
   rA   r   r   r   r   Úis_multivariater   ÚdegreerH   r   r   r   ÚLCr;   r   r   r   )r)   Úrootsr"   r#   r&   r=   rK   ÚlcÚcoeffsr(   Úsignr'   r?   Úpolys   &&*,          r3   rf   rf     sI  € ô" �$˜Ôä�%œ×ÒØ�h •o tˆeð1Ü Ð1 DÒ1¨DÑ1‰ˆð 	××ÐÜ)Ø6ó8ð 	8ð 	
�‰‹
€Aàˆ1„uÜØFóHð 	Hð ‚}Ü  ¨AÔ.ˆä�‹N€EàŒC�‹J„Ý»¼3¸u½:ÐFÓGÐGà—‘“˜Ÿ™›ˆØ�rˆDä˜f R�jÖ)‰ˆÜ˜a !�e UÓ+ˆØ˜B•h•ˆØ�‰�t�mÔ$ØˆuŠñ	 *ð €Møô= ô 1Ü ¨¨CÓ0Ð0ûð1ús   ¯D= Ä=EÅEÅErS   )Ú__doc__Ú
sympy.corer   r   r   r   Úsympy.polys.polyerrorsr   r   r   r	   Úsympy.polys.polyoptionsr
   r   Úsympy.polys.polytoolsr   r   Úsympy.polys.specialpolysr   r   Úsympy.polys.ringsr   Úsympy.utilitiesr   r   r   r   r<   rO   rc   rf   rT   rd   r3   Ú<module>ry      s¤   ðÙ 5÷ 0Ó /÷.ó .÷ Aß 6÷(å #ß :Ñ :àñD%ó ðD%ðN ñ2ó ð2ðj ñ>Bó ð>BðB Ù)0°«ó 8Có ð8Cðv ó5ó ò5rd   