ó
    ‰*£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        Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/slice.pyÚ	normalizer      sî   € Ü�!”U×ÑØ�W‰W�a—f‘f˜aŸf™fÐ%ˆÜ�aœ%¤¤uÐ-×.Ñ.Ø�‰E�d‹?Ø‰OˆAØ�!‘�QˆKˆÜˆQ‹€AÜ
ˆ1ƒv�ƒ{Ø	�‰�ŒØÑ€E�Ø�J�Q€EØ�|ØˆØ�‰	�dÓØÑˆØˆq‰�TÓØÑˆØ�9�1€Dà	‰˜Ñ Ñ! 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   €  4§9¡9¨Q¢<r   c                 ó    • U R                   S   $ )Nr   r   r   s    r   r!   r"   5   ó   €  T§Y¡Y¨q¢\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Ü“,ÐÜ�fœk×*Ñ*Ü% f¸ÓAÐAÜ�}Š}˜S¬%°Ð*:¼EÀ8Ð<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Ñ=MÑ8MÓ2NˆØ�}‰}˜QÑ $§-¡-°Ñ"2Ñ2ˆØ—}‘} QÑ'¨1Ó,‰t´%¸¿]¹]È1Ñ=MÑ8MÓ2NˆØˆ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   € Ø�{‰{×!Ò! !§M¡M°!Ñ$4Ñ"4°t·}±}ÀQÑ7GÑ"GØ"#§M¡M°!Ñ$4Ñ"4°t·}±}ÀQÑ7GÑ"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]   † ññ( Ñ/Ó0€FÙÑ1Ó2€HÙÑ1Ó2€HòNð ñó ðò,ð
 ñ.ó ó.r   r   c                 ó`   • U u  p#nUu  pVnX%U-  -   nXG-  n	X$U-  -   n
X£:”  a
  [        5       eXŠU	4$ r:   )r   )ÚsÚtÚstart1Ústop1Ústep1Ústart2Ústop2Ústep2r   r   r   s              r   Úslice_of_slicerN   X   sM   € ØÑ€F�5ØÑ€F�5à˜E‘\Ñ!€EØ‰=€DØ˜%‘KÑ€Dàƒ|Ü‹lÐà˜ÐÐr   c                 ó†   • [        U R                  U5      n[        U R                  U5      n[        U R                  X45      $ )z®Collapse 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   € ô ˜Ÿ™¨(Ó
3€CÜ
˜Ÿ™¨(Ó
3€CÜ�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   