Ë
    täin  ã                   óˆ   — 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mZmZmZ d d	lmZ d
„ Zd„ Zd„ Zd„ Zy)é    )Údefaultdict)ÚAdd)ÚMul)ÚS)Úconstruct_domain)ÚPolyNonlinearErroré   )ÚSDMÚ	sdm_irrefÚsdm_particular_from_rrefÚsdm_nullspace_from_rref)Ú
filldedentc                 ó”  — t        |«      }t        | |«      \  }}t        |||«      }|j                  }|j                  s|j
                  r/|j                  «       j                  «       d   j                  «       }t        |«      \  }}}	|r	|d   |k(  ryt        ||dz   |«      }
t        ||j                  |||	«      \  }}t        t        «      }|
j                  «       D ]+  \  }}|||      j!                  |j#                  |«      «       Œ- t%        ||«      D ]K  \  }}||   }|j                  «       D ].  \  }}|||      j!                  ||j#                  |«      z  «       Œ0 ŒM |j                  «       D ��ci c]  \  }}|t'        |Ž “Œ }}}t(        j*                  }t-        |«      t-        |«      z
  D ]  }|||<   Œ	 |S c c}}w )a  Solve a linear system of equations.

    Examples
    ========

    Solve a linear system with a unique solution:

    >>> from sympy import symbols, Eq
    >>> from sympy.polys.matrices.linsolve import _linsolve
    >>> x, y = symbols('x, y')
    >>> eqs = [Eq(x + y, 1), Eq(x - y, 2)]
    >>> _linsolve(eqs, [x, y])
    {x: 3/2, y: -1/2}

    In the case of underdetermined systems the solution will be expressed in
    terms of the unknown symbols that are unconstrained:

    >>> _linsolve([Eq(x + y, 0)], [x, y])
    {x: -y, y: y}

    r   éÿÿÿÿNr	   )ÚlenÚ_linear_eq_to_dictÚsympy_dict_to_dmÚdomainÚis_RealFieldÚis_ComplexFieldÚto_ddmÚrrefÚto_sdmr   r   r   Úoner   ÚlistÚitemsÚappendÚto_sympyÚzipr   r   ÚZeroÚset)ÚeqsÚsymsÚnsymsÚeqsdictÚconstÚAaugÚKÚArrefÚpivotsÚnzcolsÚPÚVÚ	nonpivotsÚsolÚiÚvÚnpiÚViÚsymÚsÚtermsÚzeros                         úl/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/polys/matrices/linsolve.pyÚ	_linsolver9   0   s°  € ô0 �‹I€Eô (¨¨TÓ2�N€GˆUÜ˜G U¨DÓ1€DØ�‰€Að
 	‡~‚~˜×*Ò*Ø�{‰{‹}×!Ñ!Ó# AÑ&×-Ñ-Ó/ˆô & d›OÑ€Eˆ6�6ñ �&˜‘* Ò%Øô 	! ¨¨a©°Ó8€Aô +¨5°!·%±%¸ÀÈÓO�L€A€yô ”dÓ
€CØ—‘–	‰ˆˆ1ØˆD�‰G‰×Ñ˜AŸJ™J q›MÕ*ð ä�y !Ö$‰ˆˆRØ�3‰iˆØ—H‘H–J‰DˆAˆqØ��Q‘‰L×Ñ  a§j¡j°£mÑ 3Õ4ñ ð %ð +.¯)©)¬+Ô
6©+™h˜a ˆ1Œc�5ˆk‰>¨+€CÑ
6ô �6‰6€DÜ�‹Yœ˜S›Ô!ˆØˆˆAŠð "ð €Jùó 7s   Å;Gc                 óö  —  t        |«      j                  d„ | D «       Ž }t        |dd¬«      \  }}t        t	        ||«      «      }t        | «      }t        |«      }t        t	        |t        |«      «      «      }	g }
t	        | |«      D ]M  \  }}|j                  «       D ��ci c]  \  }}|	|   ||   “Œ }}}|r	||    ||<   |sŒ=|
j                  |«       ŒO t        t        |
«      ||dz   f|«      }|S c c}}w )z?Convert a system of dict equations to a sparse augmented matrixc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­w)N)Úvalues)Ú.0Úes     r8   Ú	<genexpr>z#sympy_dict_to_dm.<locals>.<genexpr>z   s   è ø€ Ð @±Z° §¡§±Zùs   ‚T)ÚfieldÚ	extensionr	   )r!   Úunionr   Údictr   r   Úranger   r   r
   Ú	enumerate)Ú
eqs_coeffsÚeqs_rhsr#   Úelemsr(   Úelems_KÚelem_mapÚneqsr$   Ú	sym2indexr%   ÚeqÚrhsr5   ÚcÚeqdictÚsdm_augs                    r8   r   r   x   s÷   € àŒC�‹L×ÑÑ @±ZÓ @ÐA€EÜ! %¨t¸tÔD�J€A€wÜ”C˜˜wÓ'Ó(€HÜˆz‹?€DÜ�‹I€EÜ”S˜œu U›|Ó,Ó-€IØ€GÜ�z 7Ö+‰ˆˆCØ8:¿¹¼
ÔC¹
±°°1�)˜A‘, ¨¡Ñ+¸
ˆÑCÙØ% c™]˜NˆF�5‰MÚØ�N‰N˜6Õ"ð ,ô ”)˜GÓ$ t¨U°Q©YÐ&7¸Ó;€GØ€Nùó Ds   Â!C5c                 óà  — g }g }t        |«      }| D ]Ñ  }|j                  r’t        |j                  |«      \  }}t        |j                  |«      \  }}	||z  }|	j                  «       D ]  \  }
}|
|v r||
xx   |z  cc<   Œ| ||
<   Œ |j                  «       D �
�ci c]  \  }
}|sŒ	|
|“Œ }}
}||}}nt        ||«      \  }}|j                  |«       |j                  |«       ŒÓ ||fS c c}}
w )am  Convert a system Expr/Eq equations into dict form, returning
    the coefficient dictionaries and a list of syms-independent terms
    from each expression in ``eqs```.

    Examples
    ========

    >>> from sympy.polys.matrices.linsolve import _linear_eq_to_dict
    >>> from sympy.abc import x
    >>> _linear_eq_to_dict([2*x + 3], {x})
    ([{x: 2}], [3])
    )r!   Úis_EqualityÚ_lin_eq2dictÚlhsrN   r   r   )r"   r#   ÚcoeffsÚindÚsymsetr>   Úcoeffr6   ÚcRÚtRÚkr1   rO   Úds                 r8   r   r   ‹   sõ   € ð €FØ
€CÜ�‹Y€FÛˆØ�=Š=Ü'¨¯©¨vÓ6‰LˆE�5Ü! !§%¡%¨Ó0‰FˆB�ð �R‰KˆEØŸ™ž
‘��1Ø˜‘:Ø˜!“H ‘M”Hà !˜r�E˜!’Hð	 #ð ',§k¡k¤mÔ9¡m™d˜a ²q�Q˜‘T mˆEÑ9Ø˜%ˆq‰Aä  6Ó*‰DˆAˆqØ�‰�aÔØ�
‰
�1�ð% ð& �3ˆ;Ðùó :s   Â
C*Â&C*c                 ó`  — | |v r"t         j                  | t         j                  ifS | j                  r£t	        t
        «      }g }| j                  D ]N  }t        ||«      \  }}|j                  |«       |j                  «       D ]  \  }}||   j                  |«       Œ ŒP t        |Ž }	|j                  «       D �
�ci c]  \  }
}|
t        |Ž “Œ }}
}|	|fS | j                  rŸdx}}g }| j                  D ]B  }t        ||«      \  }}|s|j                  |«       Œ&|€|}|}Œ-t        t        d| z  «      «      ‚ t        j                  |«      }	|€|	i fS |j                  «       D �
�ci c]  \  }
}|
|	|z  “Œ }}
}|	|z  |fS | j!                  |«      s| i fS t        d| z  «      ‚c c}}
w c c}}
w )aÓ  return (c, d) where c is the sym-independent part of ``a`` and
    ``d`` is an efficiently calculated dictionary mapping symbols to
    their coefficients. A PolyNonlinearError is raised if non-linearity
    is detected.

    The values in the dictionary will be non-zero.

    Examples
    ========

    >>> from sympy.polys.matrices.linsolve import _lin_eq2dict
    >>> from sympy.abc import x, y
    >>> _lin_eq2dict(x + 2*y + 3, {x, y})
    (3, {x: 1, y: 2})
    Nz-
                    nonlinear cross-term: %sznonlinear term: %s)r   r    ÚOneÚis_Addr   r   ÚargsrT   r   r   r   Úis_Mulr   r   r   Ú
_from_argsÚ	has_xfree)ÚarX   Ú
terms_listÚ
coeff_listÚaiÚciÚtiÚmijÚcijrY   r4   rV   r6   Úterms_coeffrO   s                  r8   rT   rT   ±   sÊ  € ð  	ˆF�{Ü�v‰v˜œ1Ÿ5™5�zÐ!Ð!Ø	
�ŠÜ ¤Ó&ˆ
Øˆ
Ø—&”&ˆBÜ! " fÓ-‰FˆB�Ø×Ñ˜bÔ!ØŸH™HžJ‘��SØ˜3‘×&Ñ& sÕ+ñ 'ð ô
 �ZÐ ˆØ6@×6FÑ6FÔ6HÔIÑ6H¡{ s¨F�”c˜6�lÑ"Ð6HˆÑIØ�eˆ|ÐØ	
�ŠØ"Ð"ˆ�Øˆ
Ø—&”&ˆBÜ! " fÓ-‰FˆB�ÙØ×!Ñ! "Õ%Ø�Ø�Ø ‘ô )¬ð 50Ø23ñ54ó *5ó 6ð 6ð ô —‘˜zÓ*ˆØˆ=Ø˜"�9Ðà27·+±+´-Ô@±-©¨¨Q�S˜% !™)‘^°-ˆEÑ@Ø˜KÑ'¨Ð.Ð.Ø�[‰[˜Ô Ø�"ˆuˆä Ð!5¸Ñ!9Ó:Ð:ùó5 Jùó* As   Â<F$Å'F*N)Úcollectionsr   Úsympy.core.addr   Úsympy.core.mulr   Úsympy.core.singletonr   Úsympy.polys.constructorr   Úsympy.polys.solversr   Úsdmr
   r   r   r   Úsympy.utilities.miscr   r9   r   r   rT   © ó    r8   Ú<module>rx      s?   ðõ: $å Ý Ý "å 4Ý 2÷ó õ ,òEòPò&#óL5;rw   