§
    OŠtjQ9  ã                   óÐ   — 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 dd	lmZ dd
lmZmZmZmZ ddlmZmZ  G d„ de¦  «        Z G d„ dee¦  «        ZeZdS )é    )ÚCallable)ÚDict)Úsympy_deprecation_warning©Úis_sequence)Úas_inté   )Ú
MatrixBase)ÚMutableRepMatrixÚ	RepMatrix)Ú_iszero)Ú_liupcÚ _row_structure_symbolic_choleskyÚ_cholesky_sparseÚ_LDLdecomposition_sparse)Ú_lower_triangular_solve_sparseÚ_upper_triangular_solve_sparsec                   óx  ‡ — e Zd ZdZeˆ fd„¦   «         Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zdd„Zdd„Z eeddd¦  «        Z eeddd¦  «        Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zej        e_        ej        e_        ej        e_        ej        e_        ej        e_        ej        e_        ˆ xZS )ÚSparseRepMatrixa  
    A sparse matrix (a matrix with a large number of zero elements).

    Examples
    ========

    >>> from sympy import SparseMatrix, ones
    >>> SparseMatrix(2, 2, range(4))
    Matrix([
    [0, 1],
    [2, 3]])
    >>> SparseMatrix(2, 2, {(1, 1): 2})
    Matrix([
    [0, 0],
    [0, 2]])

    A SparseMatrix can be instantiated from a ragged list of lists:

    >>> SparseMatrix([[1, 2, 3], [1, 2], [1]])
    Matrix([
    [1, 2, 3],
    [1, 2, 0],
    [1, 0, 0]])

    For safety, one may include the expected size and then an error
    will be raised if the indices of any element are out of range or
    (for a flat list) if the total number of elements does not match
    the expected shape:

    >>> SparseMatrix(2, 2, [1, 2])
    Traceback (most recent call last):
    ...
    ValueError: List length (2) != rows*columns (4)

    Here, an error is not raised because the list is not flat and no
    element is out of range:

    >>> SparseMatrix(2, 2, [[1, 2]])
    Matrix([
    [1, 2],
    [0, 0]])

    But adding another element to the first (and only) row will cause
    an error to be raised:

    >>> SparseMatrix(2, 2, [[1, 2, 3]])
    Traceback (most recent call last):
    ...
    ValueError: The location (0, 2) is out of designated range: (1, 1)

    To autosize the matrix, pass None for rows:

    >>> SparseMatrix(None, [[1, 2, 3]])
    Matrix([[1, 2, 3]])
    >>> SparseMatrix(None, {(1, 1): 1, (3, 3): 3})
    Matrix([
    [0, 0, 0, 0],
    [0, 1, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 3]])

    Values that are themselves a Matrix are automatically expanded:

    >>> SparseMatrix(4, 4, {(1, 1): ones(2)})
    Matrix([
    [0, 0, 0, 0],
    [0, 1, 1, 0],
    [0, 1, 1, 0],
    [0, 0, 0, 0]])

    A ValueError is raised if the expanding matrix tries to overwrite
    a different element already present:

    >>> SparseMatrix(3, 3, {(0, 0): ones(2), (1, 1): 2})
    Traceback (most recent call last):
    ...
    ValueError: collision at (1, 1)

    See Also
    ========
    DenseMatrix
    MutableSparseMatrix
    ImmutableSparseMatrix
    c                 óÄ  •‡ ‡— t          |¦  «        dk    rTt          |d         t          ¦  «        r9|d         j        }|d         j        }|d                              ¦   «         Š||‰fS i Št          |¦  «        dk    r|d         €d d |d         g}t          |¦  «        dk    �rô|d d…         \  }}||cxu r€n nd x}}n?d ||fv rt          d¦  «        ‚t          |d         ¦  «        t          |d         ¦  «        }}t          |d         t          ¦  «        r§|d         }d ||fv r#t          d 	                    ||¦  «        ¦  «        ‚ˆ fd„t          |¦  «        D ¦   «         }ˆ fd„t          |¦  «        D ¦   «         }	|D ]8}
|	D ]3}‰                       ||
|¦  «        ¦  «        }|‰ j        k    r|‰|
|f<   Œ4Œ9||‰fS t          |d         t          t          f¦  «        �rˆfd	„}|d                              ¦   «         D ]ç\  \  }}}t          |t          ¦  «        rC|                     ¦   «                              ¦   «         D ]\  \  }
}} |||
z   ||z   |¦  «         ŒŒ`t          |t           t"          f¦  «        r6 ‰ j        |fi |¤Ž\  }}Š‰D ] \  }
} |||
z   ||z   ‰|
|f         ¦  «         Œ!Œ²‰                      |¦  «        } |||‰                      |¦  «        ¦  «         Œènøt'          |d         ¦  «        rãt)          d
„ |d         D ¦   «         ¦  «         }|s ‰ j        |d         fi |¤Ž\  }}Šn¨|d         }t          |¦  «        ||z  k    r1t          d 	                    t          |¦  «        ||¦  «        ¦  «        ‚t          |¦  «        D ]I}
t          |¦  «        D ]7}||
|z  |z            }‰                      |¦  «        }|‰ j        k    r|‰|
|f<   Œ8ŒJ|€U‰                     ¦   «         }|rt-          d„ |D ¦   «         ¦  «        dz   nd}|rt-          d„ |D ¦   «         ¦  «        dz   nd}nX‰                     ¦   «         D ]C\  }
}|
r|
|k    s|r4||k    r.t          d 	                    |
|fd|dz
  d|dz
  ¦  «        ¦  «        ‚ŒD||‰fS t          |¦  «        dk    rÑt          |d         t           t"          f¦  «        r¯|d         }d}t/          |¦  «        D ]{\  }
}t          |t           t"          f¦  «        s|g}t/          |¦  «        D ]*\  }}|‰ j        k    r‰                      |¦  «        ‰|
|f<   Œ+t-          |t          |¦  «        ¦  «        }Œ||rt          |¦  «        nd}|}||‰fS  t1          ¦   «         j        |Ž \  }}}t          |¦  «        D ]4}
t          |¦  «        D ]"}|||
z  |z            }|‰ j        k    r|‰|
|f<   Œ#Œ5||‰fS )Nr	   r   é   é   z*Pass rows=None and no cols for autosizing.z2{} and {} must be integers for this specification.c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © ©Ú_sympify)Ú.0ÚiÚclss     €úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/sparse.pyú
<listcomp>z;SparseRepMatrix._handle_creation_inputs.<locals>.<listcomp>Š   ó#   ø€ ÐDÐDÐD°1˜sŸ|š|¨A™œÐDÐDÐDó    c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   r   )r   Újr   s     €r    r!   z;SparseRepMatrix._handle_creation_inputs.<locals>.<listcomp>‹   r"   r#   c           	      ó¢   •— |rK| |f‰v r<|‰| |f         k    r.t          d                     | |f|‰| |f         ¦  «        ¦  «        ‚|‰| |f<   d S d S )Nz)There is a collision at {} for {} and {}.)Ú
ValueErrorÚformat)r   r%   ÚvÚsmats      €r    Úupdatez7SparseRepMatrix._handle_creation_inputs.<locals>.update–   sw   ø€ àð 'Ø˜q˜6 T˜>˜>¨a°4¸¸1¸´:ªo¨oÝ",Ø Kß!'¢¨¨A¨°°4¸¸1¸´:Ñ!>Ô!>ñ#ô #ð ð &'˜˜Q ˜T™
˜
˜
ð'ð 'r#   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©Nr   )r   r   s     r    ú	<genexpr>z:SparseRepMatrix._handle_creation_inputs.<locals>.<genexpr>®   s(   è è € Ð?Ð?°!�{¨1™~œ~Ð?Ð?Ð?Ð?Ð?Ð?r#   zMThe length of the flat list ({}) does not match the specified size ({} * {}).c              3   ó    K  — | ]	\  }}|V — Œ
d S r-   r   )r   ÚrÚ_s      r    r.   z:SparseRepMatrix._handle_creation_inputs.<locals>.<genexpr>Ä   ó&   è è € Ð.Ð.¡  A˜1Ð.Ð.Ð.Ð.Ð.Ð.r#   c              3   ó    K  — | ]	\  }}|V — Œ
d S r-   r   )r   r1   Úcs      r    r.   z:SparseRepMatrix._handle_creation_inputs.<locals>.<genexpr>Å   r2   r#   z?The location {} is out of the designated range[{}, {}]x[{}, {}])ÚlenÚ
isinstancer
   ÚrowsÚcolsÚtodokr'   r   r   r(   Úranger   ÚzeroÚdictr   ÚitemsÚlistÚtupleÚ_handle_creation_inputsr   ÚanyÚkeysÚmaxÚ	enumerateÚsuper)r   ÚargsÚkwargsr7   r8   r0   r4   ÚopÚrow_indicesÚcol_indicesr   r%   Úvaluer+   r)   Úvvr1   ÚflatÚ	flat_listrB   ÚrowÚmatr*   Ú	__class__s   `                     @€r    r@   z'SparseRepMatrix._handle_creation_inputsk   sé  øøø€ åˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ*Ñ=Ô=ˆ>Ø˜”7”<ˆDØ˜”7”<ˆDØ˜”7—=’=‘?”?ˆDØ˜˜tÐ#Ð#àˆåˆt‰9Œ9˜Š>ˆ>˜d 1œg˜oØ˜$  Q¤Ð(ˆDåˆt‰9Œ9˜Š>‰>Ø˜˜˜”8‰DˆAˆqØ�Aˆ~ˆ~ˆ~ˆ~ˆ~ˆ~ˆ~ˆ~Ø"Ð"��t�tØ˜!˜Q˜��Ý Ø@ñBô Bð Bõ $ D¨¤G™_œ_­f°T¸!´W©o¬o�d�å˜$˜qœ'¥8Ñ,Ô,ð >3Ø˜!”W�à˜D $˜<Ð'Ð'Ý$ð)ß)/ª°°dÑ);Ô);ñ=ô =ð =ð EÐDÐDÐD½¸d¹¼ÐDÑDÔD�ØDÐDÐDÐD½¸d¹¼ÐDÑDÔD�à$ð /ð /�AØ(ð /ð /˜Ø #§¢¨R¨R°°1©X¬XÑ 6Ô 6˜Ø  C¤HÒ,Ð,Ø).˜D  A ™Jøð/ð
 ˜T 4Ð'Ð'å˜D œG¥d­D \Ñ2Ô2ñ +3ð'ð 'ð 'ð 'ð 'ð "& a¤§¢¡¤ð 
6ð 
6‘I‘F�Q˜˜AÝ! !¥ZÑ0Ô0ð 	6Ø*+¯'ª'©)¬)¯/ª/Ñ*;Ô*;ð 5ð 5™J™F˜Q  BØ"˜F 1 q¡5¨!¨a©%°Ñ4Ô4Ð4Ð4ð5å# A­­e }Ñ5Ô5ð 6Ø%@ SÔ%@ÀÐ%MÐ%MÀfÐ%MÐ%M™
˜˜1˜dØ$(ð =ð =™D˜A˜qØ"˜F 1 q¡5¨!¨a©%°°a¸°d´Ñ<Ô<Ð<Ð<ð=ð  ŸLšL¨™OœO˜Ø˜˜q ! S§\¢\°!¡_¤_Ñ5Ô5Ð5Ð5ð
6õ ˜T !œWÑ%Ô%ð 3ÝÐ?Ð?°t¸A´wÐ?Ñ?Ô?Ñ?Ô?Ð?�Øð 3à3˜Ô3°D¸´GÐFÐF¸vÐFÐFñ �A�q˜$˜$ð !% Q¤�IÝ˜9‘~”~¨°©Ò4Ð4Ý(ðBç#šV¥C¨	¡N¤N°D¸$Ñ?Ô?ñô ð õ # 4™[œ[ð 3ð 3˜Ý!& t¡¤ð 3ð 3˜AØ$-¨a°©f°q©jÔ$9˜EØ$'§L¢L°Ñ$7Ô$7˜EØ$¨¬Ò0Ð0Ø-2  Q¨ T¡
øð	3ð ˆ|Ø—y’y‘{”{�Ø6:ÐA•sÐ.Ð.¨Ð.Ñ.Ô.Ñ.Ô.°Ñ2Ð2À�Ø6:ÐA•sÐ.Ð.¨Ð.Ñ.Ô.Ñ.Ô.°Ñ2Ð2À��ð !ŸIšI™KœKð ð ‘D�A�qØð ˜Q $šY˜Y¨!˜Y°°T²	°	Ý(ð0ç#šV Q¨ F¨A¨t°a©x¸¸DÀ1¹HÑEÔEñô ð øð ˜˜tÐ#Ð#å�‰YŒY˜!Š^ˆ^¥
¨4°¬7µT½5°MÑ BÔ Bˆ^à�Q”ˆAØˆAÝ# A™,œ,ð %ð %‘��3Ý! #­­e }Ñ5Ô5ð  Ø˜%�CÝ& s™^œ^ð 6ð 6‘E�A�rØ˜SœX’~�~Ø%(§\¢\°"Ñ%5Ô%5˜˜Q ˜T™
øÝ˜�3˜s™8œ8Ñ$Ô$��ØÐ%•3�q‘6”6�6 AˆDØˆDØ˜˜tÐ#Ð#ð >�e™gœgÔ=¸tÐD‰OˆD�$˜Ý˜4‘[”[ð +ð +�Ý˜t™œð +ð +�AØ  Q¡¨¡
œO�EØ ¤Ò(Ð(Ø%*˜˜Q ˜T™
øð+ð
 ˜˜tÐ#Ð#r#   c                 óN   — t          ddd¬¦  «         |                      ¦   «         S )Nz�
            The private _smat attribute of SparseMatrix is deprecated. Use the
            .todok() method instead.
            z1.9z$deprecated-private-matrix-attributes)Údeprecated_since_versionÚactive_deprecations_target)r   r9   ©Úselfs    r    Ú_smatzSparseRepMatrix._smatì   s8   € õ 	"ðð &+Ø'Mð	
ñ 	
ô 	
ð 	
ð �zŠz‰|Œ|Ðr#   c                 ó´   — |                       |                     dd¦  «        |                     dt          ¦  «        |                     dd¦  «        ¬¦  «        S )NÚmethodÚLDLÚ
iszerofuncÚtry_block_diagF)rY   r[   r\   )ÚinvÚgetr   )rV   rG   s     r    Ú_eval_inversezSparseRepMatrix._eval_inverseú   sS   € Ø�xŠx˜vŸzšz¨(°EÑ:Ô:Ø#)§:¢:¨l½GÑ#DÔ#DØ'-§z¢zÐ2BÀEÑ'JÔ'Jð ñ Lô Lð 	Lr#   c                 ó  — t          |¦  «        st          d¦  «        ‚i }|                      ¦   «                              ¦   «         D ]\  }} ||¦  «        }|dk    r|||<   Œ|                      | j        | j        |¦  «        S )aX  Apply a function to each element of the matrix.

        Examples
        ========

        >>> from sympy import SparseMatrix
        >>> m = SparseMatrix(2, 2, lambda i, j: i*2+j)
        >>> m
        Matrix([
        [0, 1],
        [2, 3]])
        >>> m.applyfunc(lambda i: 2*i)
        Matrix([
        [0, 2],
        [4, 6]])

        z`f` must be callable.r   )ÚcallableÚ	TypeErrorr9   r=   Ú_newr7   r8   )rV   ÚfÚdokÚkr)   Úfvs         r    Ú	applyfunczSparseRepMatrix.applyfuncÿ   s‰   € õ$ ˜‰{Œ{ð 	5ÝÐ3Ñ4Ô4Ð4ð
 ˆØ—J’J‘L”L×&Ò&Ñ(Ô(ð 	ð 	‰DˆAˆqØ��1‘”ˆBØ�QŠwˆwØ��A‘øà�yŠy˜œ D¤I¨sÑ3Ô3Ð3r#   c                 ó$   — ddl m}  || ¦  «        S )z,Returns an Immutable version of this Matrix.r	   )ÚImmutableSparseMatrix)Ú	immutablerj   )rV   rj   s     r    Úas_immutablezSparseRepMatrix.as_immutable  s%   € à4Ð4Ð4Ð4Ð4Ð4Ø$Ð$ TÑ*Ô*Ð*r#   c                 ó    — t          | ¦  «        S )aC  Returns a mutable version of this matrix.

        Examples
        ========

        >>> from sympy import ImmutableMatrix
        >>> X = ImmutableMatrix([[1, 2], [3, 4]])
        >>> Y = X.as_mutable()
        >>> Y[1, 1] = 5 # Can set values in Y
        >>> Y
        Matrix([
        [1, 2],
        [3, 5]])
        )ÚMutableSparseMatrixrU   s    r    Ú
as_mutablezSparseRepMatrix.as_mutable$  s   € õ # 4Ñ(Ô(Ð(r#   c                 óˆ   ‡ — ˆ fd„t          ‰                      ¦   «                              ¦   «         d„ ¬¦  «        D ¦   «         S )a£  Returns a column-sorted list of non-zero elements of the matrix.

        Examples
        ========

        >>> from sympy import SparseMatrix
        >>> a=SparseMatrix(((1, 2), (3, 4)))
        >>> a
        Matrix([
        [1, 2],
        [3, 4]])
        >>> a.CL
        [(0, 0, 1), (1, 0, 3), (0, 1, 2), (1, 1, 4)]

        See Also
        ========

        sympy.matrices.sparse.SparseMatrix.row_list
        c                 óB   •— g | ]}t          |‰|         fz   ¦  «        ‘ŒS r   ©r?   ©r   rf   rV   s     €r    r!   z,SparseRepMatrix.col_list.<locals>.<listcomp>I  s+   ø€ ÐlÐlÐl¨!•�a˜4 œ7˜*‘nÑ%Ô%ÐlÐlÐlr#   c                 ó:   — t          t          | ¦  «        ¦  «        S r-   )r>   Úreversed)rf   s    r    ú<lambda>z*SparseRepMatrix.col_list.<locals>.<lambda>I  s   € ÕY]Õ^fÐghÑ^iÔ^iÑYjÔYj€ r#   ©Úkey)Úsortedr9   rB   rU   s   `r    Úcol_listzSparseRepMatrix.col_list5  sE   ø€ ð( mÐlÐlÐl­v°d·j²j±l´l×6GÒ6GÑ6IÔ6IÐOjÐOjÐ/kÑ/kÔ/kÐlÑlÔlÐlr#   c                 óD   — t          |                      ¦   «         ¦  «        S )z2Returns the number of non-zero elements in Matrix.)r5   r9   rU   s    r    ÚnnzzSparseRepMatrix.nnzK  s   € å�4—:’:‘<”<Ñ Ô Ð r#   c                 ó�   ‡ — ˆ fd„t          ‰                      ¦   «                              ¦   «         t          ¬¦  «        D ¦   «         S )a¢  Returns a row-sorted list of non-zero elements of the matrix.

        Examples
        ========

        >>> from sympy import SparseMatrix
        >>> a = SparseMatrix(((1, 2), (3, 4)))
        >>> a
        Matrix([
        [1, 2],
        [3, 4]])
        >>> a.RL
        [(0, 0, 1), (0, 1, 2), (1, 0, 3), (1, 1, 4)]

        See Also
        ========

        sympy.matrices.sparse.SparseMatrix.col_list
        c                 óB   •— g | ]}t          |‰|         fz   ¦  «        ‘ŒS r   rr   rs   s     €r    r!   z,SparseRepMatrix.row_list.<locals>.<listcomp>c  s7   ø€ ð 3ð 3ð 3¨!•�a˜4 œ7˜*‘nÑ%Ô%ð 3ð 3ð 3r#   rw   )ry   r9   rB   r>   rU   s   `r    Úrow_listzSparseRepMatrix.row_listO  sO   ø€ ð(3ð 3ð 3ð 3Ý�4—:’:‘<”<×$Ò$Ñ&Ô&­DÐ1Ñ1Ô1ð3ñ 3ô 3ð 	3r#   c                 ó   — || z  S )z"Scalar element-wise multiplicationr   )rV   Úscalars     r    Úscalar_multiplyzSparseRepMatrix.scalar_multiplyf  s   € à˜‰}Ðr#   rZ   c                 óN   — | j         }|| z                       |¬¦  «        |z  |z  S )aô  Return the least-square fit to the data.

        By default the cholesky_solve routine is used (method='CH'); other
        methods of matrix inversion can be used. To find out which are
        available, see the docstring of the .inv() method.

        Examples
        ========

        >>> from sympy import SparseMatrix, Matrix, ones
        >>> A = Matrix([1, 2, 3])
        >>> B = Matrix([2, 3, 4])
        >>> S = SparseMatrix(A.row_join(B))
        >>> S
        Matrix([
        [1, 2],
        [2, 3],
        [3, 4]])

        If each line of S represent coefficients of Ax + By
        and x and y are [2, 3] then S*xy is:

        >>> r = S*Matrix([2, 3]); r
        Matrix([
        [ 8],
        [13],
        [18]])

        But let's add 1 to the middle value and then solve for the
        least-squares value of xy:

        >>> xy = S.solve_least_squares(Matrix([8, 14, 18])); xy
        Matrix([
        [ 5/3],
        [10/3]])

        The error is given by S*xy - r:

        >>> S*xy - r
        Matrix([
        [1/3],
        [1/3],
        [1/3]])
        >>> _.norm().n(2)
        0.58

        If a different xy is used, the norm will be higher:

        >>> xy += ones(2, 1)/10
        >>> (S*xy - r).norm().n(2)
        1.5

        ©rY   )ÚTr]   )rV   ÚrhsrY   Úts       r    Úsolve_least_squaresz#SparseRepMatrix.solve_least_squaresj  s.   € ðl ŒFˆØ�$‘�|Š| 6ˆ|Ñ*Ô*¨1Ñ,¨SÑ0Ð0r#   c                 óâ   — | j         s@| j        | j        k     rt          d¦  «        ‚| j        | j        k    rt          d¦  «        ‚dS |                      |¬¦  «                             |¦  «        S )z–Return solution to self*soln = rhs using given inversion method.

        For a list of possible inversion methods, see the .inv() docstring.
        zUnder-determined system.z]For over-determined system, M, having more rows than columns, try M.solve_least_squares(rhs).r„   N)Ú	is_squarer7   r8   r'   r]   Úmultiply)rV   r†   rY   s      r    ÚsolvezSparseRepMatrix.solve£  s‚   € ð
 Œ~ð 	9ØŒy˜4œ9Ò$Ð$Ý Ð!;Ñ<Ô<Ð<Ø”˜TœYÒ&Ð&Ý ð "Nñ Oô Oð Oð 'Ð&ð —8’8 6�8Ñ*Ô*×3Ò3°CÑ8Ô8Ð8r#   NzAlternate faster representationc                 ó    — t          | ¦  «        S r-   )r   rU   s    r    ÚliupczSparseRepMatrix.liupc´  s   € Ý�d‰|Œ|Ðr#   c                 ó    — t          | ¦  «        S r-   )r   rU   s    r    Úrow_structure_symbolic_choleskyz/SparseRepMatrix.row_structure_symbolic_cholesky·  s   € Ý/°Ñ5Ô5Ð5r#   Tc                 ó$   — t          | |¬¦  «        S ©N)Ú	hermitian)r   ©rV   r“   s     r    ÚcholeskyzSparseRepMatrix.choleskyº  s   € Ý °	Ð:Ñ:Ô:Ð:r#   c                 ó$   — t          | |¬¦  «        S r’   )r   r”   s     r    ÚLDLdecompositionz SparseRepMatrix.LDLdecomposition½  s   € Ý'¨¸	ÐBÑBÔBÐBr#   c                 ó"   — t          | |¦  «        S r-   )r   ©rV   r†   s     r    Úlower_triangular_solvez&SparseRepMatrix.lower_triangular_solveÀ  ó   € Ý-¨d°CÑ8Ô8Ð8r#   c                 ó"   — t          | |¦  «        S r-   )r   r™   s     r    Úupper_triangular_solvez&SparseRepMatrix.upper_triangular_solveÃ  r›   r#   )rZ   )T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr@   ÚpropertyrW   r_   rh   rl   ro   rz   r|   r   r‚   rˆ   rŒ   ÚRLÚCLrŽ   r�   r•   r—   rš   r�   r   r   r   r   Ú__classcell__)rQ   s   @r    r   r      sî  ø€ € € € € ðSð Sðj ð~$ð ~$ð ~$ð ~$ñ „[ð~$ð@ ðð ñ „XððLð Lð Lð
4ð 4ð 4ð@+ð +ð +ð
)ð )ð )ð"mð mð mð,!ð !ð !ð3ð 3ð 3ð.ð ð ð71ð 71ð 71ð 71ðr9ð 9ð 9ð 9ð 
ˆ�(˜D $Ð(IÑ	JÔ	J€BØ	ˆ�(˜D $Ð(IÑ	JÔ	J€Bðð ð ð6ð 6ð 6ð;ð ;ð ;ð ;ðCð Cð Cð Cð9ð 9ð 9ð9ð 9ð 9ð /5¬n€E„MØ.NÔ.VÐ#Ô+Ø.>Ô.F€HÔØ.FÔ.NÐÔØ.DÔ.LÐÔ"Ø.DÔ.LÐÔ"Ð"Ð"Ð"Ð"r#   r   c                   ó$   — e Zd Zed„ ¦   «         ZdS )rn   c                 ó|   —  | j         |i |¤Ž\  }}}|                      |||¦  «        }|                      |¦  «        S r-   )r@   Ú_smat_to_DomainMatrixÚ_fromrep)r   rF   rG   r7   r8   r*   Úreps          r    rc   zMutableSparseMatrix._newÐ  sI   € à6˜3Ô6¸ÐGÀÐGÐGÑˆˆd�Dà×'Ò'¨¨d°DÑ9Ô9ˆà�|Š|˜CÑ Ô Ð r#   N)rž   rŸ   r    r¢   rc   r   r#   r    rn   rn   Î  s-   € € € € € àð!ð !ñ „[ð!ð !ð !r#   rn   N)Úcollections.abcr   Úsympy.core.containersr   Úsympy.utilities.exceptionsr   Úsympy.utilities.iterablesr   Úsympy.utilities.miscr   Ú
matrixbaser
   Ú	repmatrixr   r   Ú	utilitiesr   Údecompositionsr   r   r   r   Úsolversr   r   r   rn   ÚSparseMatrixr   r#   r    ú<module>r·      sz  ðØ $Ð $Ð $Ð $Ð $Ð $à &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à "Ð "Ð "Ð "Ð "Ð "Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðDð Dð Dð Dð Dð Dð Dð DðvMð vMð vMð vMð vM�iñ vMô vMð vMðr!ð !ð !ð !ð !˜/Ð+;ñ !ô !ð !ð #€€€r#   