+
    ‹°³jó  ã                   ó°   € ^ RI Ht ^ RIHtHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHt ^ RIHt ^ RIt ! R	 R
]4      t ! R R]]4      t ! R R]
]4      tR# )é    )ÚBasic)ÚDictÚTuple)ÚS)Ú_sympify)ÚMutableNDimArray)Ú	NDimArrayÚImmutableNDimArray)ÚflattenNc                   óH   a € ] tR t^t o R tR t]R 4       tR tR t	Rt
V tR# )ÚSparseNDimArrayc                ó   € \        V/ VB # ©N©ÚImmutableSparseNDimArray)ÚselfÚargsÚkwargss   &*,Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/tensor/array/sparse_ndim_array.pyÚ__new__ÚSparseNDimArray.__new__   s   € Ü'¨Ð8°Ñ8Ð8ó    c                óÞ  € V P                  V4      pVe   V# V P                  V4      p\        V\        4      '       dë   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d±   V P                  V4      w  r4V Uu. uF;  qPP                  P                  V P                  V4      \        P                  4      NK=  	  pp\        V4       UUu. uF.  w  rW\        W,          \        4      '       g   K#  \        V4      NK0  	  ppp\        V 4      ! Wh4      # V P                  V4      pV P                  P                  V\        P                  4      # u upi u uppi )a˜  
Get an element from a sparse N-dim array.

Examples
========

>>> from sympy import MutableSparseNDimArray
>>> a = MutableSparseNDimArray(range(4), (2, 2))
>>> a
[[0, 1], [2, 3]]
>>> a[0, 0]
0
>>> a[1, 1]
3
>>> a[0]
[0, 1]
>>> a[1]
[2, 3]

Symbolic indexing:

>>> from sympy.abc import i, j
>>> a[i, j]
[[0, 1], [2, 3]][i, j]

Replace `i` and `j` to get element `(0, 0)`:

>>> a[i, j].subs({i: 0, j: 0})
0

c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   ©Ú
isinstanceÚslice©Ú.0Úis   & r   Ú	<genexpr>Ú.SparseNDimArray.__getitem__.<locals>.<genexpr>7   ó   é € Ð+PÉ%ÀQ¬J°q¼%×,@Ð,@Ë%ùó   ‚TF)Ú_check_symbolic_indexÚ_check_index_for_getitemr   ÚtupleÚanyÚ _get_slice_data_for_array_accessÚ_sparse_arrayÚgetÚ_parse_indexr   ÚZeroÚ	enumerater   ÚlenÚtype)	r   ÚindexÚsyindexÚ
sl_factorsÚeindicesr    ÚarrayÚelÚnshapes	   &&       r   Ú__getitem__ÚSparseNDimArray.__getitem__   s  € ð@ ×,Ñ,¨UÓ3ˆØÒØˆNà×-Ñ-¨eÓ4ˆô �eœU×#Ò#¯«Ñ+PÉ%Ó+P¯¯ªÑ+PÉ%Ó+P×(PÒ(PØ#'×#HÑ#HÈÓ#OÑ ˆJÙS[Ó\ÑS[Èa×'Ñ'×+Ñ+¨D×,=Ñ,=¸aÓ,@Ä!Ç&Á&ÖIÑS[ˆEÐ\Ü+4°ZÔ+@Ô`Ñ+@¡% !ÄJÈuÍxÔY^×D_”g”c˜"–gÑ+@ˆFÑ`Ü˜”:˜eÓ,Ð,à×%Ñ% eÓ,ˆEØ×%Ñ%×)Ñ)¨%´·±Ó8Ð8ùò ]ùÛ`s   ÂAE$Ã! E)ÄE)c                ó   € V ! / V4      # )z'
Return a sparse N-dim array of zeros.
© )ÚclsÚshapes   &*r   ÚzerosÚSparseNDimArray.zeros@   s   € ñ
 �2�u‹~Ðr   c                ó  € ^ RI Hp V P                  4       ^8w  d   \        R4      h/ pV P                  P                  4        F  w  r4WBV P                  V4      &   K  	  V! V P                  ^ ,          V P                  ^,          V4      # )a%  
Converts MutableDenseNDimArray to Matrix. Can convert only 2-dim array, else will raise error.

Examples
========

>>> from sympy import MutableSparseNDimArray
>>> a = MutableSparseNDimArray([1 for i in range(9)], (3, 3))
>>> b = a.tomatrix()
>>> b
Matrix([
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
)ÚSparseMatrixzDimensions must be of size of 2)Úsympy.matricesrA   ÚrankÚ
ValueErrorr*   ÚitemsÚ_get_tuple_indexr=   )r   rA   Ú
mat_sparseÚkeyÚvalues   &    r   ÚtomatrixÚSparseNDimArray.tomatrixG   su   € õ  	0Ø�9‰9‹;˜!ÔÜÐ>Ó?Ð?àˆ
Ø×,Ñ,×2Ñ2Ö4‰JˆCØ5:�t×,Ñ,¨SÓ1Ó2ñ 5ñ ˜DŸJ™J q�M¨4¯:©:°a­=¸*ÓEÐEr   c                ó®   € \         P                  ! R  V4      pW P                  8w  d   \        RV,           4      h\	        V 4      ! V P
                  V4      # )c                 ó   € W,          # r   r;   ©ÚxÚys   &&r   Ú<lambda>Ú)SparseNDimArray.reshape.<locals>.<lambda>b   s   € °a¶cr   zInvalid reshape parameters )Ú	functoolsÚreduceÚ
_loop_sizerD   r0   r*   )r   ÚnewshapeÚnew_total_sizes   &* r   ÚreshapeÚSparseNDimArray.reshapea   sF   € Ü"×)Ò)©/¸8ÓDˆØŸ_™_Ô,ÜÐ:¸XÕEÓFÐFä�DŒz˜$×,Ñ,¨hÓ7Ð7r   r;   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r8   Úclassmethodr>   rJ   rX   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s4   ø‡ € ò9ò.9ð` ñó ðòF÷48ð 8r   r   c                   ó6   a € ] tR t^ht o RR ltR tR tRtV tR# )r   Nc                ó  € V P                   ! W3/ VB w  r$\        \        \        V4      !  pV P	                  WB4       V'       d   \
        P                  ! R  V4      M
\        V4      p\        V\        \        34      '       d   \        V4      pM5/ p\        \        V4      4       F  w  rxV^ 8w  g   K  \        V4      Wg&   K  	  \        V4      p\        P                  ! WV3/ VB p	W)n        \        V4      V	n        WYn        Win        V	# )c                 ó   € W,          # r   r;   rN   s   &&r   rQ   Ú2ImmutableSparseNDimArray.__new__.<locals>.<lambda>n   s   € °¶r   )Ú_handle_ndarray_creation_inputsr   Úmapr   Ú_check_special_boundsrS   rT   r/   r   Údictr   r.   r   r   r   Ú_shapeÚ_rankrU   r*   )
r<   Úiterabler=   r   Ú	flat_listÚ	loop_sizeÚsparse_arrayr    r6   r   s
   &&&,      r   r   Ú ImmutableSparseNDimArray.__new__j   sÞ   € Ø×>Ò>¸xÑYÐRXÑYÑˆÜ”sœ8 UÓ+Ñ,ˆØ×!Ñ! )Ô3ß@E”I×$Ò$¡_°eÔ<Ì3ÈyË>ˆ	ô �i¤$¬ ×.Ò.Ü 	›?‰LàˆLÜ"¤7¨9Ó#5Ö6‘�Ø˜–7Ü&.¨r£l�L“Oñ 7ô ˜LÓ)ˆä�}Š}˜S°Ñ@¸Ñ@ˆØŒÜ˜“ZˆŒ
Ø#ŒØ)Ôàˆr   c                ó   € \        R 4      h)zimmutable N-dim array)Ú	TypeError)r   r1   rI   s   &&&r   Ú__setitem__Ú$ImmutableSparseNDimArray.__setitem__ƒ   s   € ÜÐ/Ó0Ð0r   c                ó   € \        V 4      # r   )ÚMutableSparseNDimArray©r   s   &r   Ú
as_mutableÚ#ImmutableSparseNDimArray.as_mutable†   s   € Ü% dÓ+Ð+r   ©rU   rl   rk   r*   ©NN)	rZ   r[   r\   r]   r   rt   ry   r_   r`   ra   s   @r   r   r   h   s   ø‡ € ôò21÷,ð ,r   r   c                   óF   a € ] tR t^Št o RR ltR tR t]R 4       tRt	V t
R# )rw   Nc                óÌ  € V P                   ! W3/ VB w  r$\        P                  V 4      pW%n        \	        V4      Vn        V'       d   \        P                  ! R  V4      M
\	        V4      Vn        \        V\        \        34      '       d   \        V4      Vn        V# / Vn        \        \        V4      4       F&  w  rgV^ 8w  g   K  \        V4      VP                  V&   K(  	  V# )c                 ó   € W,          # r   r;   rN   s   &&r   rQ   Ú0MutableSparseNDimArray.__new__.<locals>.<lambda>‘   s   € °q¶sr   )rg   Úobjectr   rk   r/   rl   rS   rT   rU   r   rj   r   r*   r.   r   r   )r<   rm   r=   r   rn   r   r    r6   s   &&&,    r   r   ÚMutableSparseNDimArray.__new__Œ   s¼   € Ø×>Ò>¸xÑYÐRXÑYÑˆÜ�~‰~˜cÓ"ˆØŒÜ˜“ZˆŒ
ßFKœ)×*Ò*©?¸EÔBÔQTÐU^ÓQ_ˆŒô �i¤$¬ ×.Ò.Ü!% i£ˆDÔØˆKàˆÔäœw yÓ1Ö2‰EˆAØ�QŽwÜ(0°«�×"Ñ" 1Ó%ñ 3ð ˆr   c                óº  € \        V\        4      '       dá   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d§   V P                  W4      w  r#pV FŠ  p\	        WT4       UUu. uF  w  rgVf   K  Wg,
          NK  	  pppW(,          p	V P                  V4      p
V	^ 8w  d   W�P                  V
&   K]  W P                  9   g   Ko  V P                  P                  V
4       KŒ  	  R# V P                  V4      p\        V4      pV^ 8X  d.   WP                  9   d   V P                  P                  V4       R# W P                  V&   R# u uppi )zÑAllows to set items to MutableDenseNDimArray.

Examples
========

>>> from sympy import MutableSparseNDimArray
>>> a = MutableSparseNDimArray.zeros(2, 2)
>>> a[0, 0] = 1
>>> a[1, 1] = 1
>>> a
[[1, 0], [0, 1]]
c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   r   r   s   & r   r!   Ú5MutableSparseNDimArray.__setitem__.<locals>.<genexpr>­   r#   r$   TFN)	r   r'   r(   Ú$_get_slice_data_for_array_assignmentÚzipr,   r*   Úpopr   )r   r1   rI   r4   Úslice_offsetsr    ÚindÚjÚother_iÚother_valueÚcomplete_indexs   &&&        r   rt   Ú"MutableSparseNDimArray.__setitem__    s  € ô �eœU×#Ò#¯«Ñ+PÉ%Ó+P¯¯ªÑ+PÉ%Ó+P×(PÒ(PØ-1×-VÑ-VÐW\Ó-dÑ*ˆE˜]Û�Ü14°QÔ1FÔXÑ1F¡v sÈ!œ7˜3Ÿ7˜7Ñ1F�ÑXØ#�n�Ø!%×!2Ñ!2°1Ó!5�Ø !Ô#Ø9D×&Ñ& ~Ó6Ø#×'9Ñ'9Ö9Ø×&Ñ&×*Ñ*¨>Ö:ó ð ×%Ñ% eÓ,ˆEÜ˜U“OˆEØ˜Œz˜e×'9Ñ'9Ô9Ø×"Ñ"×&Ñ& uÖ-à,1×"Ñ" 5Ó)ùó Ys   Á8EÂEc                ó   € \        V 4      # r   r   rx   s   &r   Úas_immutableÚ#MutableSparseNDimArray.as_immutable¿   s   € Ü'¨Ó-Ð-r   c                óˆ   € V P                   P                  4        UUu0 uF  qP                   F  q"kK  	  K  	  upp# u uppi r   )r*   ÚvaluesÚfree_symbols)r   r‹   r    s   &  r   r•   Ú#MutableSparseNDimArray.free_symbolsÂ   s5   € à×-Ñ-×4Ñ4Ô6ÔOÑ6�aÇÄ¸1’Á‘Ñ6ÒOÐOùÓOs   ž>r{   r|   )rZ   r[   r\   r]   r   rt   r‘   Úpropertyr•   r_   r`   ra   s   @r   rw   rw   Š   s*   ø‡ € ôò(2ò>.ð ñPó öPr   rw   )Úsympy.core.basicr   Úsympy.core.containersr   r   Úsympy.core.singletonr   Úsympy.core.sympifyr   Ú%sympy.tensor.array.mutable_ndim_arrayr   Úsympy.tensor.array.ndim_arrayr	   r
   Úsympy.utilities.iterablesr   rS   r   r   rw   r;   r   r   Ú<module>rŸ      sM   ðÝ "ß /Ý "Ý 'Ý Bß GÝ -ã ô[8�iô [8ôz,˜Ð0Bô ,ôD:PÐ-¨ö :Pr   