
    \h                     \    S SK Jr  S SKJr  S SKJr  S SKJr  S r " S S\5      r	S r
S	 rg
)    )
MatrixExpr)Basic)Tuple)floorc                    [        U [        5      (       a#  U R                  U R                  U R                  4n [        U [
        [        [        45      (       d  U S:  S:X  a  X-  n X S-   S4n [        U 5      n [        U 5      S:X  a  U R                  S5        U u  p#nU=(       d    SnUc  UnUS:  S:X  a  X!-  nUS:  S:X  a  X1-  nU=(       d    SnX2-
  U-  S:  S:X  a
  [        5       eX#U4$ )Nr   T      )
isinstanceslicestartstopsteptuplelistr   lenappend
IndexError)i
parentsizer   r   r   s        X/var/www/auris/envauris/lib/python3.13/site-packages/sympy/matrices/expressions/slice.py	normalizer      s    !UWWaffaff%a%u-..Ed?OA!QKQA
1v{	EJQE|	dqT91D	!d*l    c                   z    \ rS rSrSr\" S 5      r\" S 5      r\" S 5      rS r	\S 5       r
S r\S	 5       rS
rg)MatrixSlice   aF  A MatrixSlice of a Matrix Expression

Examples
========

>>> from sympy import MatrixSlice, ImmutableMatrix
>>> M = ImmutableMatrix(4, 4, range(16))
>>> M
Matrix([
[ 0,  1,  2,  3],
[ 4,  5,  6,  7],
[ 8,  9, 10, 11],
[12, 13, 14, 15]])

>>> B = MatrixSlice(M, (0, 2), (2, 4))
>>> ImmutableMatrix(B)
Matrix([
[2, 3],
[6, 7]])
c                      U R                   S   $ )Nr   argsselfs    r   <lambda>MatrixSlice.<lambda>4   s    499Q<r   c                      U R                   S   $ )Nr   r   r   s    r   r!   r"   5       TYYq\r   c                      U R                   S   $ )Nr	   r   r   s    r   r!   r"   6   r$   r   c                    [        X!R                  S   5      n[        X1R                  S   5      n[        U5      [        U5      s=:X  a  S:X  d   [        5       e  [        5       eSUS   :  S:X  d>  UR                  S   US   :  S:X  d%  SUS   :  S:X  d  UR                  S   US   :  S:X  a
  [        5       e[	        U[
        5      (       a  [        XU5      $ [        R                  " X[        U6 [        U6 5      $ )Nr   r      T)
r   shaper   r   r
   r   mat_slice_of_slicer   __new__r   )clsparentrowslicecolslices       r   r*   MatrixSlice.__new__8   s    X||A7X||A7HX3!3, 4,!_%\\!_x{*t3!_%\\!_x{*t3,fk**%fAA}}S%*:E8<LMMr   c                 @   U R                   S   U R                   S   -
  nU R                   S   S:X  a  UO[        XR                   S   -  5      nU R                  S   U R                  S   -
  nU R                  S   S:X  a  UO[        X R                  S   -  5      nX4$ )Nr   r   r	   )r-   r   r.   )r    rowscolss      r   r(   MatrixSlice.shapeF   s    }}Q$--"22}}Q'1,t%]]1=M8M2N}}Q$--"22}}Q'1,t%]]1=M8M2Nzr   c                     U R                   R                  " XR                  S   -  U R                  S   -   X R                  S   -  U R                  S   -   40 UD6$ )Nr	   r   )r,   _entryr-   r.   )r    r   jkwargss       r   r5   MatrixSlice._entryN   sZ    {{!!!MM!$4"4t}}Q7G"G"#MM!$4"4t}}Q7G"G,$*, 	,r   c                 4    U R                   U R                  :H  $ N)r-   r.   r   s    r   on_diagMatrixSlice.on_diagS   s    }}--r    N)__name__
__module____qualname____firstlineno____doc__propertyr,   r-   r.   r*   r(   r5   r;   __static_attributes__r=   r   r   r   r      s]    ( /0F12H12HN  ,
 . .r   r   c                 `    U u  p#nUu  pVnX%U-  -   nXG-  n	X$U-  -   n
X:  a
  [        5       eXU	4$ r:   )r   )ststart1stop1step1start2stop2step2r   r   r   s              r   slice_of_slicerN   X   sM    F5F5E\!E=D%KD|lr   c                     [        U R                  U5      n[        U R                  U5      n[        U R                  X45      $ )zCollapse nested matrix slices

>>> from sympy import MatrixSymbol
>>> X = MatrixSymbol('X', 10, 10)
>>> X[:, 1:5][5:8, :]
X[5:8, 1:5]
>>> X[1:9:2, 2:6][1:3, 2]
X[3:7:2, 4:5]
)rN   r-   r.   r   r,   )r,   r-   r.   rowcols        r   r)   r)   f   s5     (
3C
(
3Cv}}c//r   N)"sympy.matrices.expressions.matexprr   sympy.core.basicr   sympy.core.containersr   #sympy.functions.elementary.integersr   r   r   rN   r)   r=   r   r   <module>rV      s-    9 " ' 526.* 6.r0r   