+
    iJ                         ^ 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   && [/var/www/html/photoedit/myenv/lib/python3.14/site-packages/sympy/tensor/array/ndim_array.pyr   ArrayKind.__new__D   s    goc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ffe
,z?a"IH$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    ej'233' !ABBL??aBCCu:#9::
tzz"ADJJqM)ux4::a=./H CJ!69I!IJJx!|a
#JJqM1EH<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LL+, 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(     PKq
1d#99Q[[9Ks   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 8uuh3PKP333PKPPP!+zz:
UtO!,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eh
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    gx00y"}$7|q 4xF!81!A$!89ME3v;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  rWV	,          ,          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     KUc:cJ#899Us   #%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(>(>>> Hi00  Hh//"%":":8"D% H11  $;ht--%2C}}Ha%00G"+A,")!H"4s": #/(0H%   ej'233HEsKUKsssKUKKKABBU|X%%r   c                    V P                   # )zOverload 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     zz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DTDV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    --dq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,,166a:43E3E3K3K3M[3M41QRSTQUYZQZwq!A$w3M[]a]g]ghhDz#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    :!#499^cde^i%j^iYZgnnT$:O:OPQ:R5S&T^i%jkkloooa= BW\]ghi]jWk#lWkRSAbR.!bD&!qS"H*$MWk#lmmps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 99;!>>$r(++

?nn--.eDJJ<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    :!#@EaL1T221566LLFa= B:a=)arNAdFAsBhJ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&Hsqqss&HIDz+zz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      ! WP                  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eh	:>??\]]d,,}}}Dz"djj11:8J8J8P8P8RS8Rfqq'z8RSUYU_U_``(/61ww6Dz+zz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      ! WP                  4      # u uppi u upi r   r   r   s	   &&       r   __rmul__NDimArray.__rmul__  s    866eh	:>??\]]d,,}}}Dz"djj11:8J8J8P8P8RS8Rfqq'z8RSUYU_U_``(/61Qww6Dz+zz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      ! WP                   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eh	:>??.//d,,!&&:8J8J8P8P8RS8RfqqE'z8RSUYU_U_``(/61ww6Dz+zz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,,:43E3E3K3K3MN3M!q"u3MNPTPZPZ[[#*4=1=ar=1Dz+zz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 / 2h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%++zzU[[(d,,E1S1S**+tE4G4G/HHHDzT%[((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,    99;!/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yy?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IIcNT(-tzD.@(AB(A1(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    ADUJJAWXAWXad((0AW
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    %++Ju%E#DDU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;3y>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     T5Sd5Ss   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    ej'59::HEu:		#%L%TU3u:tyy{5ST%%TU3u:tyy{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   