+
    ‹°³jÂJ  ã                   óÖ   € ^ RI Ht ^ RIHtHt ^ RIHt ^ RIHtH	t	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
It^ RIHt  ! R R]4      t ! R R]4      t ! R R]]4      tR
# )é    )ÚBasic)ÚDictÚTuple)ÚExpr)ÚKindÚ
NumberKindÚUndefinedKind)ÚInteger)ÚS)Úsympify)Ú
SYMPY_INTS)Ú	PrintableN)ÚIterablec                   ó^   a a€ ] tR t^t oRt]3V 3R lltR t]V3R lR l4       t	Rt
VtV ;t# )Ú	ArrayKinda1  
Kind for N-dimensional array in SymPy.

This kind represents the multidimensional array that algebraic
operations are defined. Basic class for this kind is ``NDimArray``,
but any expression representing the array can have this.

Parameters
==========

element_kind : Kind
    Kind of the element. Default is :obj:NumberKind `<sympy.core.kind.NumberKind>`,
    which means that the array contains only numbers.

Examples
========

Any instance of array class has ``ArrayKind``.

>>> from sympy import NDimArray
>>> NDimArray([1,2,3]).kind
ArrayKind(NumberKind)

Although expressions representing an array may be not instance of
array class, it will have ``ArrayKind`` as well.

>>> from sympy import Integral
>>> from sympy.tensor.array import NDimArray
>>> from sympy.abc import x
>>> intA = Integral(NDimArray([1,2,3]), x)
>>> isinstance(intA, NDimArray)
False
>>> intA.kind
ArrayKind(NumberKind)

Use ``isinstance()`` to check for ``ArrayKind` without specifying
the element kind. Use ``is`` with specifying the element kind.

>>> from sympy.tensor.array import ArrayKind
>>> from sympy.core import NumberKind
>>> boolA = NDimArray([True, False])
>>> isinstance(boolA.kind, ArrayKind)
True
>>> boolA.kind is ArrayKind(NumberKind)
False

See Also
========

shape : Function to return the shape of objects with ``MatrixKind``.

c                ó2   <€ \         SV `  W4      pWn        V# ©N)ÚsuperÚ__new__Úelement_kind)Úclsr   ÚobjÚ	__class__s   && €Ú^/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/tensor/array/ndim_array.pyr   ÚArrayKind.__new__D   s   ø€ Ü‰g‰o˜cÓ0ˆØ'ÔØˆ
ó    c                ó(   € R V P                   ,          # )zArrayKind(%s))r   ©Úselfs   &r   Ú__repr__ÚArrayKind.__repr__I   s   € Ø ×!2Ñ!2Õ2Ð2r   c                ó   <€ V ^8„  d   QhRR/# )é   Úreturnr   © )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚArrayKind.__annotate__M   s   ø€ ÷ #ñ #˜kñ #r   c                óŒ   € V Uu0 uF  q"P                   kK  	  pp\        V4      ^8X  d   Vw  pM\        p\        V4      # u upi )é   )ÚkindÚlenr	   r   )r   ÚkindsÚeÚ
elem_kindsÚelemkinds   &&   r   Ú_unionÚArrayKind._unionL   s@   € á&+Ó,¡e —f”f¡eˆ
Ð,Üˆz‹?˜aÔØ"‰I‰Hä$ˆHÜ˜Ó"Ð"ùò -s   …Ar%   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r    Úclassmethodr2   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   r'   s   @@r   r   r      s3   ù‡ € ñ3ðh #-÷ ò
3ð ÷#ó ÷#ð #r   r   c                   ó@  a € ] tR t^Vt o RtRtRtR,R ltR tR t	R t
R	 tR
 t]R 4       t]R-R l4       tR t]R 4       tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R  t$R! t%R" t&R# t'R$ t(R% t)R& t*R' t+R( t,]R) 4       t-R* t.R+t/V t0R# ).Ú	NDimArraya)  N-dimensional array.

Examples
========

Create an N-dim array of zeros:

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(2, 3, 4)
>>> a
[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]

Create an N-dim array from a list;

>>> a = MutableDenseNDimArray([[2, 3], [4, 5]])
>>> a
[[2, 3], [4, 5]]

>>> b = MutableDenseNDimArray([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]])
>>> b
[[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]

Create an N-dim array from a flat list with dimension shape:

>>> a = MutableDenseNDimArray([1, 2, 3, 4, 5, 6], (2, 3))
>>> a
[[1, 2, 3], [4, 5, 6]]

Create an N-dim array from a matrix:

>>> from sympy import Matrix
>>> a = Matrix([[1,2],[3,4]])
>>> a
Matrix([
[1, 2],
[3, 4]])
>>> b = MutableDenseNDimArray(a)
>>> b
[[1, 2], [3, 4]]

Arithmetic operations on N-dim arrays

>>> a = MutableDenseNDimArray([1, 1, 1, 1], (2, 2))
>>> b = MutableDenseNDimArray([4, 4, 4, 4], (2, 2))
>>> c = a + b
>>> c
[[5, 5], [5, 5]]
>>> a - b
[[-3, -3], [-3, -3]]

TFNc                ó    € ^ RI Hp V! W3/ VB # )r   )ÚImmutableDenseNDimArray)Úsympy.tensor.arrayr@   )r   ÚiterableÚshapeÚkwargsr@   s   &&&, r   r   ÚNDimArray.__new__Ž   s   € Ý>Ù& xÑA¸&ÑAÐAr   c                ó   € \        R 4      h)z4A subclass of NDimArray should implement __getitem__©ÚNotImplementedError©r   Úindexs   &&r   Ú__getitem__ÚNDimArray.__getitem__’   s   € Ü!Ð"XÓYÐYr   c                ól  € \        V\        \        34      '       d   WP                  8¼  d   \	        R 4      hV# V P                  ^ 8X  d   \	        R4      h\        V4      V P                  8w  d   \	        R4      h^ p\        V P                  4       Fž  pW,          V P                  V,          8¼  g    W,          V P                  V,          ) 8  d#   \	        R\        V4      ,           R,           4      hW,          ^ 8  d
   V^,          pW P                  V,          ,          W,          ,           pK   	  V# )zOnly a tuple index is acceptedz#Index not valid with an empty arrayzWrong number of array axeszIndex z out of border)
Ú
isinstancer   r
   Ú
_loop_sizeÚ
ValueErrorr-   Ú_rankÚrangerC   Ústr)r   rJ   Ú
real_indexÚis   &&  r   Ú_parse_indexÚNDimArray._parse_index•   së   € Ü�eœj¬'Ð2×3Ò3ØŸ™Ô'Ü Ð!AÓBÐBØˆLà�?‰?˜aÔÜÐBÓCÐCäˆu‹:˜Ÿ™Ô#ÜÐ9Ó:Ð:àˆ
ä�t—z‘zÖ"ˆAØ•˜DŸJ™J q�MÔ)¨u­x¸4¿:¹:Àa½=¸.Ô/HÜ  ¬C°«JÕ!6Ð9IÕ!IÓJÐJØ�x˜!Œ|Ø˜a•�
Ø#§J¡J¨q¥MÕ1°EµHÕ<ŠJñ #ð Ðr   c                ó²   € . p\        V P                  4       F"  pVP                  W,          4       W,          pK$  	  VP                  4        \	        V4      # r   )ÚreversedrC   ÚappendÚreverseÚtuple)r   Úinteger_indexrJ   Úshs   &&  r   Ú_get_tuple_indexÚNDimArray._get_tuple_index¬   sF   € ØˆÜ˜4Ÿ:™:Ö&ˆBØ�L‰L˜Õ+Ô,ØÕ ŠMñ 'ð 	�‰ŒÜ�U‹|Ðr   c                óH  € \        V\        4      '       d   TMV3p\        ;QJ d    R  V 4       F  '       g   K   RM	  RM! R  V 4       4      '       dM   \        W P                  4       F#  w  r4V^ 8  R8X  g   W48¬  R8X  g   K  \        R4      h	  ^ RIHp V! V .VO5!  # R# )c              3   ót   "  € T F.  p\        V\        4      ;'       d    VP                  '       * x € K0  	  R # 5ir   )rN   r   Ú	is_number©Ú.0rU   s   & r   Ú	<genexpr>Ú2NDimArray._check_symbolic_index.<locals>.<genexpr>·   s(   é € ÐPÁK¸q”
˜1œdÓ#×9Ð9¨Q¯[©[¬Ô9ÃKùs   ‚8ž8TFzindex out of range)ÚIndexedN)rN   r\   ÚanyÚziprC   rP   Úsympy.tensorrh   )r   rJ   Útuple_indexrU   Únth_dimrh   s   &&    r   Ú_check_symbolic_indexÚNDimArray._check_symbolic_index´   s…   € ä *¨5´%× 8Ò 8‘u¸u¸hˆß‹3ÑPÁKÓP�3�3Š3ÑPÁKÓP×PÒPÜ! +¯z©zÖ:‘
�Ø˜‘U˜t”O¨!©,¸4Ö)?Ü$Ð%9Ó:Ð:ñ ;õ -Ù˜4Ð. +Ó.Ð.Ùr   c                óX   € ^ RI Hp \        V\        V\        34      '       d   \
        hR# )r   ©Ú
MatrixBaseN)Úsympy.matrices.matrixbaserr   rN   r   r>   rH   )r   Úvaluerr   s   && r   Ú_setter_iterable_checkÚ NDimArray._setter_iterable_check¿   s%   € Ý8Ü�eœh¨
´IÐ>×?Ò?Ü%Ð%ñ @r   c                ó    a€ V3R  loS! V4      # )c                 óf  <€ \        V \        4      '       g   V .R3# \        V 4      ^ 8X  d   . R3# . p\        V  Uu. uF  pS! V4      NK  	  up!  w  r4\        \	        V4      4      ^8w  d   \        R4      hV F  pVP                  V4       K  	  V\        V4      3V^ ,          ,           3# u upi )r   z'could not determine shape unambiguouslyr%   ©r   )rN   r   r-   rj   ÚsetrP   Úextend)ÚpointerÚresultrU   ÚelemsÚshapesÚfs   &    €r   r€   Ú)NDimArray._scan_iterable_shape.<locals>.fÆ   s§   ø€ Ü˜g¤x×0Ò0Ø�y "�}Ð$ä�7‹|˜qÔ Ø˜4�x�àˆFÜ±Ó!8±¨1¡! A¦$±Ñ!8Ñ9‰MˆEÜ”3�v“;Ó 1Ô$Ü Ð!JÓKÐKÛ�Ø—‘˜aÖ ñ àœC ›K˜>¨&°­)Õ3Ð3Ð3ùò "9s   ¼B.r%   )r   rB   r€   s   &&@r   Ú_scan_iterable_shapeÚNDimArray._scan_iterable_shapeÄ   s   ø€ õ	4ñ �‹{Ðr   c                óf  € ^ RI Hp ^ RIHp Vf£   Vf   RpRpM™\	        W4      '       d   VP
                  VP                  3# \	        V\        4      '       d   VP                  pMM\	        V\        4      '       d   V P                  V4      w  rM#\	        W4      '       d   VP                  pMRpV3p\	        V\        \        34      '       dt   Vep   VP                  4       pV FY  p\	        V\        \        34      '       g   K!  ^ p\!        V4       F  w  ršW‚V	,          ,          V
,           pK  	  W,          W&   W K[  	  \	        V\"        \$        34      '       d   V3p\&        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \)        R4      h\        V4      V3# )r   rq   ©ÚSparseNDimArrayc              3   óN   "  € T F  p\        V\        \        34      x € K  	  R # 5ir   )rN   r   r
   )re   Údims   & r   rf   Ú<NDimArray._handle_ndarray_creation_inputs.<locals>.<genexpr>  s   é € ÐKÁU¸c”:˜c¤J´Ð#8×9Ð9ÃUùs   ‚#%FTz#Shape should contain integers only.r%   )rs   rr   rA   r†   rN   Ú_shapeÚ_sparse_arrayr>   rC   r   r‚   r   ÚdictÚcopyr\   r   Ú	enumerater   r
   ÚallÚ	TypeError)r   rB   rC   rD   rr   r†   Únew_dictÚkÚnew_keyrU   Úidxs   &&&,       r   Ú_handle_ndarray_creation_inputsÚ)NDimArray._handle_ndarray_creation_inputs×   sd  € å8Ý6àŠ=ØÒØ�Ø‘ä˜H×6Ò6Ø—‘¨×(>Ñ(>Ð>Ð>ô ˜H¤i×0Ò0Ø Ÿ™‘ô ˜H¤h×/Ò/Ø"%×":Ñ":¸8Ó"D‘�˜%ô ˜H×1Ò1Ø Ÿ™‘ð �Ø$˜;�ä�h¤¤t ×-Ò-°%Ò2CØ—}‘}“ˆHÛ�Ü˜a¤%¬ ×0Ô0Ø�GÜ"+¨A¦,™˜Ø")°!­HÕ"4°sÕ":šñ #/à(0­�HÑ%Ø šñ ô �eœj¬'Ð2×3Ò3Ø�HˆEç‹sÑKÁUÓK�s�sŠsÑKÁUÓK×KÒKÜÐAÓBÐBä�U‹|˜XÐ%Ð%r   c                ó   € V P                   # )zåOverload common function len(). Returns number of elements in array.

Examples
========

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(3, 3)
>>> a
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> len(a)
9

)rO   r   s   &r   Ú__len__ÚNDimArray.__len__  s   € ð �‰Ðr   c                ó   € V P                   # )z 
Returns array shape (dimension).

Examples
========

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(3, 3)
>>> a.shape
(3, 3)

)rŠ   r   s   &r   rC   ÚNDimArray.shape  s   € ð �{‰{Ðr   c                ó   € V P                   # )z—
Returns rank of array.

Examples
========

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(3,4,5,6,3)
>>> a.rank()
5

)rQ   r   s   &r   ÚrankÚNDimArray.rank&  s   € ð �z‰zÐr   c                óf   € ^ RI Hp VP                  RR4       V! V P                  4       .VO5/ VB # )zí
Calculate the derivative of each element in the array.

Examples
========

>>> from sympy import ImmutableDenseNDimArray
>>> from sympy.abc import x, y
>>> M = ImmutableDenseNDimArray([[x, y], [1, x*y]])
>>> M.diff(x)
[[1, 0], [0, y]]

)ÚArrayDerivativeÚevaluateT)Ú$sympy.tensor.array.array_derivativesr    Ú
setdefaultÚas_immutable)r   ÚargsrD   r    s   &*, r   ÚdiffÚNDimArray.diff5  s6   € õ 	IØ×Ñ˜* dÔ+Ù˜t×0Ñ0Ó2ÐD°TÒD¸VÑDÐDr   c                ó.   a€ V P                  V3R  l4      # )c                 ó&   <€ SP                  V 4      # r   )r¦   )ÚxÚbases   &€r   Ú<lambda>Ú,NDimArray._eval_derivative.<locals>.<lambda>I  s   ø€ ¨¯	©	°!¬r   )Ú	applyfunc)r   r«   s   &fr   Ú_eval_derivativeÚNDimArray._eval_derivativeG  s   ø€ à�~‰~Ô4Ó5Ð5r   c                ó0   € \         P                  ! WV4      # r   )r   Ú_eval_derivative_n_times)r   ÚsÚns   &&&r   r²   Ú"NDimArray._eval_derivative_n_timesK  s   € Ü×-Ò-¨d°qÓ9Ð9r   c           
     óŽ  € ^ RI Hp ^ RIHp \	        W4      '       dy   V! \
        P                  4      ^ 8X  d^   \        V 4      ! V P                  P                  4        UUu/ uF  w  rEV! V4      ^ 8w  g   K  WA! V4      bK  	  uppV P                  4      # \        V 4      ! \        W! V 4      4      V P                  4      # u uppi )a  Apply a function to each element of the N-dim array.

Examples
========

>>> from sympy import ImmutableDenseNDimArray
>>> m = ImmutableDenseNDimArray([i*2+j for i in range(2) for j in range(2)], (2, 2))
>>> m
[[0, 1], [2, 3]]
>>> m.applyfunc(lambda i: 2*i)
[[0, 2], [4, 6]]
r…   ©ÚFlatten)rA   r†   Úsympy.tensor.array.arrayopr¸   rN   r   ÚZeroÚtyper‹   ÚitemsrC   Úmap)r   r€   r†   r¸   r’   Úvs   &&    r   r®   ÚNDimArray.applyfuncN  sœ   € õ 	7Ý6ä�d×,Ò,±´1·6±6³¸a´Ü˜”:°4×3EÑ3E×3KÑ3KÔ3MÔ[Ñ3M©4¨1ÑQRÐSTÓQUÐYZÑQZœw˜q ! A£$šwÑ3MÒ[Ð]a×]gÑ]gÓhÐhä�DŒzœ#˜a ¨£Ó/°·±Ó<Ð<ùó \s   Á!C
Á7C
c                ó2  a aa€ VVV 3R  loS P                  4       ^ 8X  d   SP                  S R,          4      # ^ S P                  9   d'   S P                  P                   RS P                   R2# S! S P
                  S P                  ^ S P
                  4      # )c                 óî  <€ \        V4      ^8X  d^   RRP                  \        W#4       Uu. uF*  pSP                  SSP	                  V4      ,          4      NK,  	  up4      ,           R,           # W^ ,          ,          p RRP                  \        V^ ,          4       Uu. uF5  pS! WR,          W$V ,          ,           W$^,           V ,          ,           4      NK7  	  up4      ,           R,           # u upi u upi )r+   Ú[z, Ú]ºr+   NN)r-   ÚjoinrR   Ú_printr_   )r^   Ú
shape_leftrU   Újr/   r€   Úprinterr   s   &&&& €€€r   r€   ÚNDimArray._sympystr.<locals>.fd  sÊ   ø€ Ü�:‹ !Ô#Ø˜4Ÿ9™9Ô^cÐdeÔ^iÓ%jÑ^iÐYZ g§n¡n°T¸$×:OÑ:OÐPQÓ:RÕ5SÖ&TÑ^iÑ%jÓkÕkÐloÕoÐoà˜a•=Õ ˆBØ˜Ÿ™ÔW\Ð]gÐhiÕ]jÔWkÓ#lÑWkÐRS¡A b°R­.¸!¸b½D½&À!ÀqÅSÈ"ÅHÅ*Ö$MÑWkÑ#lÓmÕmÐpsÕsÐsùò &kùò $ms   «0C-
Â;C2
z([], Ú)r%   )r�   rÆ   rC   r   r4   rO   )r   rÉ   r€   s   ff@r   Ú	_sympystrÚNDimArray._sympystrc  sv   ú€ ÷	tð �9‰9‹;˜!ÔØ—>‘> $ r¥(Ó+Ð+Ø�—
‘
Œ?Ø—n‘n×-Ñ-Ð.¨e°D·J±J°<¸qÐAÐAÙ�—‘ $§*¡*¨a°·±ÓAÐAr   c                óf   a a€ VV 3R loS! S P                   S P                  ^ S P                   4      # )zç
Converting MutableDenseNDimArray to one-dim list

Examples
========

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray([1, 2, 3, 4], (2, 2))
>>> a
[[1, 2], [3, 4]]
>>> b = a.tolist()
>>> b
[[1, 2], [3, 4]]
c                 ój  <€ \        V4      ^8X  d2   \        W#4       Uu. uF  pSSP                  V4      ,          NK  	  up# . pW^ ,          ,          p \        V^ ,          4       FD  pVP                  S! WR,          W$V ,          ,           W$^,           V ,          ,           4      4       KF  	  V# u upi )r+   rÄ   )r-   rR   r_   rZ   )r^   rÇ   rU   rÈ   r/   r}   r€   r   s   &&&&  €€r   r€   ÚNDimArray.tolist.<locals>.f�  s“   ø€ Ü�:‹ !Ô#Ü@EÀaÄÓLÁ¸1˜˜T×2Ñ2°1Ó5×6Ð6ÁÑLÐLØˆFØ˜a•=Õ ˆBÜ˜: a�=Ö)�Ø—‘™a ¨r¥N°A¸µdµF¸AÀ½sÀB½h½JÓGÖHñ *àˆMùò Ms   Ÿ!B0)rO   rC   )r   r€   s   f@r   ÚtolistÚNDimArray.tolistq  s'   ù€ ö 	ñ �—‘ $§*¡*¨a°·±ÓAÐAr   c                ó6  € ^ RI Hp \        V\        4      '       g   \        # V P
                  VP
                  8w  d   \        R4      h\        V! V 4      V! V4      4       UUu. uF  w  r4W4,           NK  	  ppp\        V 4      ! WPP
                  4      # u uppi ©r   r·   zarray shape mismatch©	r¹   r¸   rN   r>   ÚNotImplementedrC   rP   rj   r»   ©r   Úotherr¸   rU   rÈ   Úresult_lists   &&    r   Ú__add__ÚNDimArray.__add__Œ  óx   € Ý6ä˜%¤×+Ò+Ü!Ð!à�:‰:˜Ÿ™Ô$ÜÐ3Ó4Ð4Ü&)©'°$«-¹À»Ô&HÔIÑ&H™s˜q�q—s�sÑ&HˆÑIä�DŒz˜+§z¡zÓ2Ð2ùó Jó   Á$Bc                ó6  € ^ RI Hp \        V\        4      '       g   \        # V P
                  VP
                  8w  d   \        R4      h\        V! V 4      V! V4      4       UUu. uF  w  r4W4,
          NK  	  ppp\        V 4      ! WPP
                  4      # u uppi rÔ   rÕ   r×   s   &&    r   Ú__sub__ÚNDimArray.__sub__˜  rÜ   rÝ   c           	     ó.  € ^ RI Hp ^ RIHp ^ RIHp \        V\        \        V34      '       d   \        R4      h\        V4      p\        W4      '       d~   VP                  '       d   \        V 4      ! / V P                  4      # \        V 4      ! V P                  P                  4        UUu/ uF  w  rVWQV,          bK  	  uppV P                  4      # V! V 4       Uu. uF  qwV,          NK  	  pp\        V 4      ! W€P                  4      # u uppi u upi ©r   rq   r…   r·   z=scalar expected, use tensorproduct(...) for tensorial product©rs   rr   rA   r†   r¹   r¸   rN   r   r>   rP   r   Úis_zeror»   rC   r‹   r¼   ©	r   rØ   rr   r†   r¸   r’   r¾   rU   rÙ   s	   &&       r   Ú__mul__ÚNDimArray.__mul__¤  sÕ   € Ý8Ý6Ý6ä�eœh¬	°:Ð>×?Ò?ÜÐ\Ó]Ð]ä˜“ˆÜ�d×,Ò,Ø�}�}ˆ}Ü˜D”z " d§j¡jÓ1Ð1Ü˜”:¸×8JÑ8J×8PÑ8PÔ8RÔSÑ8R©f¨q˜q¨¥'šzÑ8RÒSÐUY×U_ÑU_Ó`Ð`á(/°¬Ó6© 1˜—w�w©ˆÐ6Ü�DŒz˜+§z¡zÓ2Ð2ùó Tùâ6ó   Â-D
ÃDc           	     ó.  € ^ RI Hp ^ RIHp ^ RIHp \        V\        \        V34      '       d   \        R4      h\        V4      p\        W4      '       d~   VP                  '       d   \        V 4      ! / V P                  4      # \        V 4      ! V P                  P                  4        UUu/ uF  w  rVWQV,          bK  	  uppV P                  4      # V! V 4       Uu. uF  qqV,          NK  	  pp\        V 4      ! W€P                  4      # u uppi u upi râ   rã   rå   s	   &&       r   Ú__rmul__ÚNDimArray.__rmul__µ  sÕ   € Ý8Ý6Ý6ä�eœh¬	°:Ð>×?Ò?ÜÐ\Ó]Ð]ä˜“ˆÜ�d×,Ò,Ø�}�}ˆ}Ü˜D”z " d§j¡jÓ1Ð1Ü˜”:¸×8JÑ8J×8PÑ8PÔ8RÔSÑ8R©f¨q˜q¨¥'šzÑ8RÒSÐUY×U_ÑU_Ó`Ð`á(/°¬Ó6© 1˜Q—w�w©ˆÐ6Ü�DŒz˜+§z¡zÓ2Ð2ùó Tùâ6rè   c           	     óü  € ^ RI Hp ^ RIHp ^ RIHp \        V\        \        V34      '       d   \        R4      h\        V4      p\        W4      '       de   V\        P                  8w  dP   \        V 4      ! V P                  P                  4        UUu/ uF  w  rVWVV,          bK  	  uppV P                   4      # V! V 4       Uu. uF  qwV,          NK  	  pp\        V 4      ! W€P                   4      # u uppi u upi )r   rq   r…   r·   zscalar expected)rs   rr   rA   r†   r¹   r¸   rN   r   r>   rP   r   r   rº   r»   r‹   r¼   rC   rå   s	   &&       r   Ú__truediv__ÚNDimArray.__truediv__Æ  sÁ   € Ý8Ý6Ý6ä�eœh¬	°:Ð>×?Ò?ÜÐ.Ó/Ð/ä˜“ˆÜ�d×,Ò,°¼!¿&¹&´Ü˜”:¸×8JÑ8J×8PÑ8PÔ8RÔSÑ8R©f¨q˜q E¥'šzÑ8RÒSÐUY×U_ÑU_Ó`Ð`á(/°¬Ó6© 1˜—w�w©ˆÐ6Ü�DŒz˜+§z¡zÓ2Ð2ùó Tùâ6s   ÂC3
ÃC9c                ó   € \        R 4      h)z"unsupported operation on NDimArrayrG   ©r   rØ   s   &&r   Ú__rtruediv__ÚNDimArray.__rtruediv__Õ  s   € Ü!Ð"FÓGÐGr   c                óH  € ^ RI Hp ^ RIHp \	        W4      '       dJ   \        V 4      ! V P                  P                  4        UUu/ uF  w  r4W4) bK
  	  uppV P                  4      # V! V 4       Uu. uF  qU) NK  	  pp\        V 4      ! W`P                  4      # u uppi u upi )r   r…   r·   )	rA   r†   r¹   r¸   rN   r»   r‹   r¼   rC   )r   r†   r¸   r’   r¾   rU   rÙ   s   &      r   Ú__neg__ÚNDimArray.__neg__Ø  s…   € Ý6Ý6ä�d×,Ò,Ü˜”:°4×3EÑ3E×3KÑ3KÔ3MÔNÑ3M©¨!˜q "šuÑ3MÒNÐPT×PZÑPZÓ[Ð[á#*¨4¤=Ó1¡=˜a“r¡=ˆÐ1Ü�DŒz˜+§z¡zÓ2Ð2ùó Oùâ1s   ÁB
Á1Bc                ó   a € V 3R  lpV! 4       # )c               3   óª   <"  € SP                   '       d1   \        SP                   ^ ,          4       F  p SV ,          x € K  	  R# SR,          x € R# 5i)r   Nr%   )rŠ   rR   )rU   r   s    €r   ÚiteratorÚ$NDimArray.__iter__.<locals>.iteratorã  s:   øé € Ø�{�{ˆ{Ü˜tŸ{™{¨1�~Ö.�AØ˜q�'”Mó /ð ˜2•h”ùs   ƒAAr%   )r   rø   s   f r   Ú__iter__ÚNDimArray.__iter__â  s   ø€ õ	ñ ‹zÐr   c                ó@  € ^ RI Hp \        V\        4      '       g   R# V P                  VP                  8X  g   R# \        W4      '       d=   \        W4      '       d,   \        V P                  4      \        VP                  4      8H  # \        V 4      \        V4      8H  # )ab  
NDimArray instances can be compared to each other.
Instances equal if they have same shape and data.

Examples
========

>>> from sympy import MutableDenseNDimArray
>>> a = MutableDenseNDimArray.zeros(2, 3)
>>> b = MutableDenseNDimArray.zeros(2, 3)
>>> a == b
True
>>> c = a.reshape(3, 2)
>>> c == b
False
>>> a[0,0] = 1
>>> b[0,0] = 2
>>> a == b
False
r…   F)rA   r†   rN   r>   rC   rŒ   r‹   Úlist)r   rØ   r†   s   && r   Ú__eq__ÚNDimArray.__eq__ì  ss   € õ* 	7Ü˜%¤×+Ò+Ùà�z‰z˜UŸ[™[Ô(Ùä�d×,Ò,´¸E×1SÒ1SÜ˜×*Ñ*Ó+¬t°E×4GÑ4GÓ/HÑHÐHä�D‹zœT %›[Ñ(Ð(r   c                ó   € W8X  * # r   r%   rð   s   &&r   Ú__ne__ÚNDimArray.__ne__  s   € ØÒ Ð r   c                ó`   € V P                  4       ^8w  d   \        R4      h^RIHp V! V R4      # )r#   zarray rank not 2)Úpermutedims)r+   r   )r�   rP   Úarrayopr  )r   r  s   & r   Ú_eval_transposeÚNDimArray._eval_transpose  s,   € Ø�9‰9‹;˜!ÔÜÐ/Ó0Ð0Ý(Ù˜4 Ó(Ð(r   c                ó"   € V P                  4       # r   )r  r   s   &r   Ú	transposeÚNDimArray.transpose  ó   € Ø×#Ñ#Ó%Ð%r   c                ó–   € ^ RI Hp T P                  V! V 4       Uu. uF  q"P                  4       NK  	  upV P                  4      # u upi )r   r·   )r¹   r¸   ÚfuncÚ	conjugaterC   )r   r¸   rU   s   &  r   Ú_eval_conjugateÚNDimArray._eval_conjugate  s4   € Ý6à�y‰y±¸´Ó?±¨AŸ+™+ž-±Ñ?ÀÇÁÓLÐLùÒ?s   œAc                ó"   € V P                  4       # r   )r  r   s   &r   r  ÚNDimArray.conjugate  r  r   c                ó>   € V P                  4       P                  4       # r   )r	  r  r   s   &r   Ú_eval_adjointÚNDimArray._eval_adjoint!  s   € Ø�~‰~Ó×)Ñ)Ó+Ð+r   c                ó"   € V P                  4       # r   )r  r   s   &r   ÚadjointÚNDimArray.adjoint$  s   € Ø×!Ñ!Ó#Ð#r   c                óÎ   € \        V\        4      '       g   V3# VP                  V4      w  r4p\        WC,
          V,          4       Uu. uF  qcWe,          ,           NK  	  up# u upi r   )rN   ÚsliceÚindicesrR   )r   r³   rˆ   ÚstartÚstopÚsteprU   s   &&&    r   Ú_slice_expandÚNDimArray._slice_expand'  sT   € Ü˜!œU×#Ò#Ø�t�ØŸI™I c›NÑˆ�TÜ(-¨t­z¸DÕ.@Ô(AÓBÑ(A 1˜�—�Ñ(AÑBÐBùÒBs   ÁA"c                óª   € \        WP                  4       UUu. uF  w  r#V P                  W#4      NK  	  ppp\        P                  ! V!  pWE3# u uppi r   )rj   rC   r  Ú	itertoolsÚproduct)r   rJ   rU   rˆ   Ú
sl_factorsÚeindicess   &&    r   Ú _get_slice_data_for_array_accessÚ*NDimArray._get_slice_data_for_array_access-  sM   € ÜADÀUÏJÉJÔAWÔXÑAW±X°a�d×(Ñ(¨Ö0ÑAWˆ
ÑXÜ×$Ò$ jÑ1ˆØÐ#Ð#ùó Ys   ™Ac                óì   € \        V\        4      '       g   \        V 4      ! V4      pV P                  V4      w  r4V Uu. uF&  p\        V\        4      '       d   \        V4      MR NK(  	  ppW$V3# u upi r   )rN   r>   r»   r&  rý   Úmin)r   rJ   rt   r$  r%  rU   Úslice_offsetss   &&&    r   Ú$_get_slice_data_for_array_assignmentÚ.NDimArray._get_slice_data_for_array_assignment2  sj   € Ü˜%¤×+Ò+Ü˜”J˜uÓ%ˆEØ#×DÑDÀUÓKÑˆ
ÙJTÓUÉ*ÀQ¤:¨a´×#6Ò#6œ˜Qœ¸DÒ@É*ˆÐUà Ð-Ð-ùò Vs   ¿,A1c                ó’   € VR8X  d   \        V4      ^8w  d   \        R4      hVR8X  d   \        V4      ^ 8”  d   \        R4      hR# R# )r+   z*arrays without shape need one scalar valuez/if array shape is (0,) there cannot be elementsNr%   ry   )r-   rP   )r   Ú	flat_listrC   s   &&&r   Ú_check_special_boundsÚNDimArray._check_special_bounds:  sE   € à�BŒ;œ3˜y›>¨QÔ.ÜÐIÓJÐJØ�DŒ=œS ›^¨aÔ/ÜÐNÓOÐOñ 0‰=r   c           	     óØ  € \        V\        \        \        34      '       d   V3p\	        V4      V P                  4       8  d   \        V4      \        ;QJ d5    . R  \        \	        V4      V P                  4       4       4       F  NK  	  5M.! R  \        \	        V4      V P                  4       4       4       4      ,           p\	        V4      V P                  4       8”  d   \        R4      hV# )c              3   ó8   "  € T F  p\        R 4      x € K  	  R # 5ir   )r  rd   s   & r   rf   Ú5NDimArray._check_index_for_getitem.<locals>.<genexpr>G  s   é € ÐTÑ5S°¤ d§ Ó5Sùs   ‚z-Dimension of index greater than rank of array)	rN   r   r
   r  r-   r�   r\   rR   rP   rI   s   &&r   Ú_check_index_for_getitemÚ"NDimArray._check_index_for_getitemA  s¡   € Ü�eœj¬'´5Ð9×:Ò:Ø�HˆEäˆu‹:˜Ÿ	™	›Ô#Ü˜%“Lßœ%ÑT´U¼3¸u»:ÀtÇyÁyÃ{Ô5SÓTŸ%™%ÑT´U¼3¸u»:ÀtÇyÁyÃ{Ô5SÓTÓTõUˆEô ˆu‹:˜Ÿ	™	›Ô#ÜÐLÓMÐMàˆr   r%   r   )NN)1r4   r5   r6   r7   r8   Ú	_diff_wrtÚ	is_scalarr   rK   rV   r_   rn   ru   r9   r‚   r•   r˜   ÚpropertyrC   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/  r4  r:   r;   ©r'   s   @r   r>   r>   V   s"  ø‡ € ñ2ðh €IØ€IôBòZòò.ò	ò&ð
 ñó ðð$ ó,&ó ð,&ò\ð  ñó ðòòEò$6ò:ò=ò*BòBò6
3ò
3ò3ò"3ò"3òHò3òò)òB!ò)ò&òMò
&ò,ò$òCò$ò
.ð ñPó ðP÷ð r   r>   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚImmutableNDimArrayiO  g      &@c                ó.   € \         P                  ! V 4      # r   )r   Ú__hash__r   s   &r   r=  ÚImmutableNDimArray.__hash__R  s   € Ü�~Š~˜dÓ#Ð#r   c                ó   € V # r   r%   r   s   &r   r¤   ÚImmutableNDimArray.as_immutableU  s   € Øˆr   c                ó   € \        R 4      h)zabstract methodrG   r   s   &r   Ú
as_mutableÚImmutableNDimArray.as_mutableX  s   € Ü!Ð"3Ó4Ð4r   r%   N)
r4   r5   r6   r7   Ú_op_priorityr=  r¤   rB  r:   r;   r9  s   @r   r;  r;  O  s   ø‡ € Ø€Lò$ò÷5ð 5r   r;  )Úsympy.core.basicr   Úsympy.core.containersr   r   Úsympy.core.exprr   Úsympy.core.kindr   r   r	   Úsympy.core.numbersr
   Úsympy.core.singletonr   Úsympy.core.sympifyr   Úsympy.external.gmpyr   Úsympy.printing.defaultsr   r"  Úcollections.abcr   r   r>   r;  r%   r   r   Ú<module>rO     sU   ðÝ "ß /Ý  ß ;Ñ ;Ý &Ý "Ý &Ý *Ý -ã Ý $ôD#�ô D#ôNv�	ô vôr
5˜ Eö 
5r   